我試圖使用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"
,我可以愉快地將按鍵發送到活動的記事本窗口整天。那麼,爲什麼我無法獲得TeraTerm窗口?
PyHANDLE = FindWindow函數(類名,WindowName)
產品類別:PyResourceId 名稱或窗口類的原子發現,可以是無
WindowName:字符串 標題的窗口找到,可以是無
那麼我怎樣才能得到正確的ClassName給我們è?
我試過幾乎每一個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工具。雖然。謝謝。 – SiHa
那麼標題與當時的「Tera Term VT」完全不符 - 我想 - 也許你可以提供窗口的截圖。不過,無論如何,基於窗口類名稱的解決方案會更好,因爲應用程序可能隨時更改標題。 – DAXaholic
謝謝,我今天學到了一些東西;窗口類對我來說是新的!已下載[WinSpy ++](http://www.pendriveapps.com/winspy-find-window-properties/),並發現該類實際上是'VTWin32',並且這個工作非常完美。 – SiHa