VBA Shell / Telnet

Gast #1823834
Lesenswert?

Hallo, ich muss in VBA ein Programm schreiben mit Telnet. Telnet bekomme 
ich geöffnet und muss nun ein paar Kommandos in das Fenster senden, aber 
daran scheiter ich.


Shell
1
Option Explicit
2

3
Private Declare Function CloseHandle Lib "kernel32" ( _
4
    ByVal hObject As Long) As Long
5
Private Declare Function GetExitCodeProcess Lib "kernel32" ( _
6
    ByVal hProcess As Long, lpExitCode As Long) As Long
7
Private Declare Function OpenProcess Lib "kernel32" ( _
8
    ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
9
    ByVal dwProcessId As Long) As Long
10

11
Public Function ShellX( _
12
    ByVal PathName As String, _
13
    Optional ByVal WindowStyle As VbAppWinStyle = vbMinimizedFocus, _
14
    Optional ByVal Events As Boolean = True _
15
  ) As Long
16
  Const STILL_ACTIVE = &H103&
17
  Const PROCESS_QUERY_INFORMATION = &H400&
18
  Dim ProcId As Long
19
  Dim ProcHnd As Long
20
  ProcId = Shell(PathName, WindowStyle)
21
  ProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, ProcId)
22
  Do
23
    If Events Then DoEvents
24
    GetExitCodeProcess ProcHnd, ShellX
25
  Loop While ShellX = STILL_ACTIVE
26
  CloseHandle ProcHnd
27
End Function

Button für Telnet
1
Private Sub CommandButton1_Click()
2
     'FTP via Shell ausführen:
3
    ShellX "telnet 199.199.199.199"       
4
End Sub

Die Telnet Session zu der IP Adresse wird gestartet und das CMD Fenster 
öffnet sich. Wie übergebe ich jetzt weitere Kommandos an das Fenster?
#1823865
Lesenswert?

Telnet ist
1. Ein Netzwerkprotokoll
2. ein Programm, das (1.) implementiert, indem es den Benutzer
   etwas eintippen lässt, das per Telnetprotokoll an einen Server
   schickt und dessen Antworten wieder dem Benutzer anzeigt

Wenn du das Programm telnet startest, um dann per Programm
etwas darüber zu senden, erscheint mir das wenig sinnvoll.

Kann es sein, daß du besser bedient wärst, das Protokoll
telnet zu verwenden, um von deinem Programm aus etwas
an den Server zu schicken, anstatt das Programm telnet zu
starten?
Moderator #1823876
Lesenswert?

Gibt es für VB keine fertige Telnet-Client-Klasse?

Ich kenne das von Python, da wird so etwas schon in den Standardbiblio-
theken mitgeliefert. Die Anwendung ist denkbar leicht: Einfach ein
Telnet-Objekt instanziieren und mit read(), read_until(), read_all() und
write() Daten hin und her schicken.

Die Kommunikation mit einem externen Prozess, wie du es vor hast, ist
wahrscheinlich deutlich komplizierter.
Gast #1824135
Lesenswert?

Hab es ein bisschen anders getestet, aber klappt nicht wirklich.
1
Private Sub CommandButton1_Click()
2
Dim TaskID As Long
3

4
TaskID = Shell("c:\windows\system32\telnet 199.199.199.199", vbNormalNoFocus)
5
'TaskID = Shell("c:\windows\system32\notepad.exe", vbNormalNoFocus)
6
' Windows-Editor anhand TaskID aktivieren
7
AppActivate TaskID
8
' Windows-Editor schließen
9
SendKeys "uzibuzi 1", True
10
SendKeys "{ENTER}"
11
End Sub

Er bleibt beim AppActive TaskID hängen, aber mit der rauskommentierten 
Zeile mit Notepad funktioniert alles.

Jemand eine Idee?
Gast #1824145
Lesenswert?

Thorben schrieb:
> Hab es ein bisschen anders getestet, aber klappt nicht wirklich.


wie schon oben geschriben wurde, das ganze ist unsinn. Baue selber eine 
TCP verbindung mit der IP auf und gut ist.

Bei windows7 ist keine Telnet client mehr dabei (kann aber 
nachinstalliert werden) - was willst du da machen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren