Immer eine Taste, Griff aus einer anderen Anwendung
Ich habe ein Programm senden muss, um die BM_CLICK Nachrichten in andere Anwendungen-Taste.
Ich kann das übergeordnete Fenster behandeln, aber wenn ich versuche mit dem Knopf Griff, wenn gibt immer 0 zurück,
Bekam ich die Beschriftung für die Schaltfläche name und Typ Schaltfläche aus Spy++ es scheint richtig, aber ich weiß, ich muss Sie bekommen haben, etwas falsch. unten ist mein code
public const Int BM_CLICK = 0x00F5;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
private void button1_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("QSXer");
foreach (Process p in processes)
{
////the Button's Caption is "Send" and it is a "Button".
IntPtr ButtonHandle = FindWindowEx(p.MainWindowHandle, IntPtr.Zero, "Button", "Send");
//ButtonHandle is always zero thats where I think the problem is
SendMessage(ButtonHandle, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
}
Spy Screenshot
InformationsquelleAutor Mike | 2010-09-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, übergeben Sie null für das Fenster text-und stattdessen versuchen zu finden, eine beliebige Taste:
Danach können Sie den zweiten parameter verwendet und ein neuer Anruf, um die nächste Taste, Griff ein paar mal mehr.
Zudem könnten Sie bitte versuchen, die Kontrolle
Marshal.GetLastWin32Error
um zu sehen, was den Fehler Ergebnis ist?Korrigiert meine Antwort.
Hi Brian,Ok probieren und immer noch nichts 🙂
Hallo Brian,die p.MainWindowHandle gültig ist, die ich erfassen der Titel der Anwendung, wie dies button1.text = p ist.MainWindowTitle-und ja, ich habe versucht, sowohl "&Senden" und "Senden"
Was sagt Marschall.GetLastWin32Error zurück? Auch änderte ich meine Antwort oben, versuchen Sie bitte, was ich vorgeschlagen, wieder.
InformationsquelleAutor Brian R. Bondy
Versuchen Sie dies:
InformationsquelleAutor Mohammad Afrashteh
Können Sie tun so etwas wie dieses:
Dies sollte den trick tun.
InformationsquelleAutor Jonathan K.
Versuchen, um project als x86. Ich versuche und successed!
InformationsquelleAutor Huỳnh Hữu Ân