www.mikrocontroller.net

Forum: PC-Programmierung VBA Shell / Telnet


Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
Option Explicit

Private Declare Function CloseHandle Lib "kernel32" ( _
    ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" ( _
    ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" ( _
    ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long

Public Function ShellX( _
    ByVal PathName As String, _
    Optional ByVal WindowStyle As VbAppWinStyle = vbMinimizedFocus, _
    Optional ByVal Events As Boolean = True _
  ) As Long
  Const STILL_ACTIVE = &H103&
  Const PROCESS_QUERY_INFORMATION = &H400&
  Dim ProcId As Long
  Dim ProcHnd As Long
  ProcId = Shell(PathName, WindowStyle)
  ProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, ProcId)
  Do
    If Events Then DoEvents
    GetExitCodeProcess ProcHnd, ShellX
  Loop While ShellX = STILL_ACTIVE
  CloseHandle ProcHnd
End Function

Button für Telnet
Private Sub CommandButton1_Click()
     'FTP via Shell ausführen:
    ShellX "telnet 199.199.199.199"       
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?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS:
In deinem Quelltext wird nebnbei auch von FTP fabuliert.
Das ist wiederum ein anderes Netzwerkprotokoll. Du wirst
dich schon entscheiden müssen, was du eigentlich willst.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thorben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab es ein bisschen anders getestet, aber klappt nicht wirklich.
Private Sub CommandButton1_Click()
Dim TaskID As Long

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

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

Jemand eine Idee?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Thorben (Gast)
Datum:

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

Wenn ich das Telnet Fenster mit Focus oeffne klappt es.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.