我试图使用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