Smagjus
Rear Admiral
- Registriert
- Feb. 2011
- Beiträge
- 6.142
Halllo,
ich habe ein recht einfaches Problem. Ich möchte in VB.net einen Befehl in ein bereits bestehendes CMD Fenster übermitteln. Meine erste Idee war Sendmessage. Hier ein Tutorial dazu: http://www.elitepvpers.com/forum/coding-tutorials/1184074-vb-net-sendmessage-tutorial.html
Nun wird die Nachricht zwar an das Fenster versendet, allerdings verändertsich nur der Titel des Fensters in die gegebene Nachricht. Was ich will, ist aber die Nachricht an die Eingabeaufforderung zu übermitteln, als hätte ich als Nutzer einen Befehl in das Fenster einzugeben.
Spy++ gibt mir im übrigen nur das Fenster der Eingabeaufforderung an, also keine untergeordneten Steuerelemente.
Kennt da jemand eine bessere Möglichkeit? Ich wäre für alles offen (auch für C# Lösungen).
EDIT - Notlösung:
Ich habe die Methode Button1_Click abgeändert. Der Befehl, den ich nutze heißt "stop".
Der Code ist so dirty, da kippen selbst die Fliegen um. Ich wäre immernoch dankbar für die "richtig Lösung" 
ich habe ein recht einfaches Problem. Ich möchte in VB.net einen Befehl in ein bereits bestehendes CMD Fenster übermitteln. Meine erste Idee war Sendmessage. Hier ein Tutorial dazu: http://www.elitepvpers.com/forum/coding-tutorials/1184074-vb-net-sendmessage-tutorial.html
PHP:
Imports System.Runtime.InteropServices
Public Class Form1
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
(ByVal handle As IntPtr, ByVal uMsg As Integer, _
ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
Const WM_SETTEXT As Integer = &HC
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowTitle As String) As IntPtr
End Function
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim windows As IntPtr = FindWindow(vbNullString, "Administrator: Eingabeaufforderung")
SendMessage(windows, WM_SETTEXT, 0, TextBox1.Text)
End Sub
End Class
Spy++ gibt mir im übrigen nur das Fenster der Eingabeaufforderung an, also keine untergeordneten Steuerelemente.
Kennt da jemand eine bessere Möglichkeit? Ich wäre für alles offen (auch für C# Lösungen).
EDIT - Notlösung:
Ich habe die Methode Button1_Click abgeändert. Der Befehl, den ich nutze heißt "stop".
PHP:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim windows As IntPtr = FindWindow(vbNullString, "Administrator: C:\Windows\system32\cmd.exe")
SendMessage(windows, WM_CHAR, Asc("S"c), 0)
SendMessage(windows, WM_CHAR, Asc("t"c), 0)
SendMessage(windows, WM_CHAR, Asc("o"c), 0)
SendMessage(windows, WM_CHAR, Asc("p"c), 0)
SendMessage(windows, WM_CHAR, Asc(CChar(vbCr)), 0)
End Sub

Zuletzt bearbeitet: