Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取主窗口&x27;Python中的句柄是什么?_Python_Windows_Handle - Fatal编程技术网

如何获取主窗口&x27;Python中的句柄是什么?

如何获取主窗口&x27;Python中的句柄是什么?,python,windows,handle,Python,Windows,Handle,在python中,我通过EnumWindows枚举顶级窗口,也通过EnumProcesses枚举进程 然后在python脚本中,我将属于同一个pid的所有窗口句柄放在一个列表中(我是通过GetWindowThreadProcessId完成的) 后来我发现:有3个窗口句柄属于notepad.exe,但我只打开了一个文本文件 为什么? 此外,我试图通过setforegroundindow将文本窗口设置为前景窗口,我将三个窗口句柄传递给该函数,并完成了两项工作 这怎么可能呢?进程有时会为自己的目的创建

在python中,我通过
EnumWindows
枚举顶级窗口,也通过
EnumProcesses
枚举进程

然后在python脚本中,我将属于同一个pid的所有窗口句柄放在一个列表中(我是通过
GetWindowThreadProcessId
完成的)

后来我发现:有3个窗口句柄属于
notepad.exe
,但我只打开了一个文本文件

为什么?

此外,我试图通过
setforegroundindow
将文本窗口设置为前景窗口,我将三个窗口句柄传递给该函数,并完成了两项工作


这怎么可能呢?

进程有时会为自己的目的创建不可见的窗口。您应该忽略它们(使用
IsWindowVisible
函数)。

要调查这类事情,您最好的朋友是Spy++,它随Visual Studio的几个版本一起提供,如果您可以得到的话

根据它,notepad.exe创建了三个顶级窗口:

  • 可见的主窗口,类名“记事本”,重叠
  • 一个隐藏的、禁用的弹出窗口,类名为“mscttime UI”,标题为“M”
  • 另一个隐藏、禁用的弹出窗口,类名为“IME”,标题为“默认IME”
  • 记事本内部使用这两个隐藏窗口来实现IME(输入法编辑器),即用于键入复杂脚本的GUI

    许多程序为很多东西创建顶级隐藏窗口。对于你想要的,你可以忽略它们,只使用可见的