Pywin32を使用して、非アクティブなTeraTermウィンドウにキーストロークを送信しようとしています。win32gui.FindWindowウィンドウが見つかりません
This答えは、このコードを書くために私を導いた:
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)
しかし:
hwndMain = win32gui.FindWindow("Tera Term VT", None)
戻り0
、それはウィンドウを見つけることができません。
"Tera Term VT"
を"Notepad"
に変更すると、いつもメモ帳のウィンドウに1日中キーストロークを送信できます。だから、なぜ私はTeraTermウィンドウを取得できませんか?
ActiveState documentationによると:
PyHANDLE = FindWindowを(クラス名、WindowName)
のClassName:PyResourceId 名前または見つけるウィンドウクラスの原子、することができなし
WindowName:文字列 タイトル見つけることができるウィンドウはありません。なし
どのように私に正しいClassNameを取得できますか? e?
私は、スペースをエスケープ、Tera Term VT
のほぼすべてのバリエーションを試してみた:"'Tera Term VT'"
が、何もうまくいかない:単一引用符で全体を囲む、"Tera\ Term\ VT"
。私もプロセスの名前を使用してみました:"ttermpro.exe"
、と私の絶望の文字列"COM11:115200baud - Tera Term VT"
に子の名前が含まれていますが、何も動作しません。
興味深いことに、この:
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate("Tera Term VT")
shell.SendKeys("\%i", 0)
はうまく動作しますが、私はwan'tていない最前面にウィンドウをもたらします。しかし、この例ではTera Term VT
文字列が正常に機能します。
私はFinder Toolを調べます。しかし、。ありがとう。 – SiHa
それからタイトルは "Tera Term VT"と正確には一致しませんでした。おそらくあなたはそのウィンドウのスクリーンショットを提供することができます。それにもかかわらず、アプリケーションはいつでもタイトルを変更する可能性があるため、ウィンドウクラス名に基づいたソリューションが優れています。 – DAXaholic
ありがとう、私は今日何かを学んだ。ウィンドウクラスは私にとって初めてのものです! [WinSpy ++](http://www.pendriveapps.com/winspy-find-window-properties/)をダウンロードし、クラスが実際には 'VTWin32'であることを発見しました。これは完全に動作します。 – SiHa