在python中,我通过EnumWindows
枚举顶级窗口,并且我还通过EnumProcesses
枚举了这些过程。
然后在python脚本中,我将属于同一个pid的所有窗口句柄放入一个列表中(我通过GetWindowThreadProcessId
执行了此操作)。
后来我发现了一些东西:有3个窗口句柄属于notepad.exe
,但我只打开一个文本文件。
为什么?
此外,我试图通过SetForegroundWindow
将文本窗口设置为前景窗口,我将三个窗口句柄传递给此函数,两个工作。
怎么会这样?
答案 0 :(得分:5)
进程有时会为自己的目的创建不可见的窗口。你应该忽略它们(使用IsWindowVisible
函数)。
答案 1 :(得分:4)
要研究这类事情,你最好的朋友是 Spy ++ ,如果你能得到它,它会附带几个版本的Visual Studio。
根据它,notepad.exe创建了三个顶级窗口:
记事本在内部使用两个隐藏的窗口来实现IME(输入法编辑器),即用于键入复杂脚本的GUI。
许多程序为很多东西创建顶级隐藏窗口。根据您的意图,您可以忽略它们并仅使用可见的那些。