Ich versuche, einen Tastenanschlag an ein inaktives TeraTerm-Fenster mit Pywin32 zu senden.win32gui.FindWindow Fenster nicht finden
This Antwort führte mich diesen Code zu schreiben:
import win32gui
import win32con
import win32api
hwndMain = win32gui.FindWindow("Tera Term VT", None)
print hwndMain
hwndChild = win32gui.GetWindow(hwndMain, win32con.GW_CHILD)
win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x5b, 0)
aber:
hwndMain = win32gui.FindWindow("Tera Term VT", None)
kehrt 0
, kann es nicht das Fenster finden.
Wenn ich "Tera Term VT"
zu "Notepad"
ändere, kann ich Tastenanschläge glücklich den ganzen Tag zu einem aktiven Notizblockfenster senden. Warum kann ich das TeraTerm-Fenster nicht bekommen?
Nach dem ActiveState documentation:
PyHANDLE = Findwindow (Klassenname, Fenstername)
Classname: PyResourceId Name oder Atom Fensterklasse, finden Keine
Window sein: string Titel von Fenster zu finden, kann keine sein
Also wie bekomme ich den richtigen ClassName zu uns e?
Ich habe fast jede Variante von Tera Term VT
versucht, die Räume zu entkommen: "Tera\ Term\ VT"
, das Ganze in einfache Anführungszeichen einzuschließen: , aber nichts funktioniert. Ich habe sogar versucht, den Namen des Prozesses zu verwenden: "ttermpro.exe"
, und enthielt den Kindnamen in der Zeichenfolge "COM11:115200baud - Tera Term VT"
in meiner Verzweiflung, aber nichts funktioniert.
Interessanterweise ist diese:
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate("Tera Term VT")
shell.SendKeys("\%i", 0)
funktioniert gut, aber bringt das Fenster in den Vordergrund, die ich nicht wan't. Der String Tera Term VT
funktioniert in diesem Fall jedoch einwandfrei.
zu bekommen. Leider ist das Austauschen der Argumente nicht hilfreich. Ich werde das Finder-Tool untersuchen. obwohl. Vielen Dank. – SiHa
Dann stimmt der Titel zu dieser Zeit nicht genau mit "Tera Term VT" überein - vielleicht können Sie einen Screenshot des Fensters bereitstellen. Dennoch ist eine Lösung, die auf dem Namen der Fensterklasse basiert, ohnehin besser, da die Anwendung den Titel jederzeit ändern kann. – DAXaholic
Danke, ich habe heute etwas gelernt; Window Classes sind neu für mich! [WinSpy ++] heruntergeladen (http://www.pendriveapps.com/winspy-find-window-properties/), und festgestellt, dass die Klasse in der Tat 'VTWin32' ist, und das funktioniert perfekt. – SiHa