2016-11-15 140 views
0

我使用EnumWindow()函数与EnumWindowProc()回调(定义here)枚举我的机器上运行的所有应用程序有一个窗口。 它工作正常,但我看不到标签过程。例如,如果我在Google Chrome(或Notepad ++)中打开了多个选项卡,则EnumWindow()仅捕获焦点选项卡,而其他选项卡未枚举,即使Google Chrome对每个选项卡使用不同的进程。有一种方法可以让他们使用这个功能?我试图做到这一点没有进程ID(我不知道如何获得未列入EnumWindow()的进程的PID),但欢迎任何其他提示。EnumWindow()捕捉选项卡进程(谷歌浏览器)C++

+0

这是显而易见的原因:他们不创建窗口。如果不知道自己想要对他们做什么,就无法回答。无论你在考虑什么,都不要这样做。 –

+0

我只想枚举它们。它们不创建窗口,但它们属于EnumWindow()显示的选项卡的同一个窗口。我想知道是否有简单枚举其他选项卡的方法,使选项卡处于焦点。 –

+1

*“我正在使用'EnumWindow()'[...]枚举在我的机器上运行的所有应用程序”* - 错误。 [EnumWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497.aspx)函数枚举顶级窗口。不是过程。你的结论也是错误的。它没有列举Chrome的当前标签。它列举了Chrome的顶级窗口,它根据当前选定的选项卡更改其窗口标题。这些标签不是窗户。他们只是一个非常令人信服的幻想。除非您提出简洁的问题陈述,否则您不可能获得有用的答案。 – IInspectable

回答

3

您看到的每个窗口都由同一个Chrome进程拥有,所以这不起作用。
与另一个进程分离的是后端代码(Javascript,渲染等)。

除此之外,Chrome还会手动呈现大部分(如果不是全部)浏览器在同一个Win32“窗口”中,因此您将无法通过Windows API机制单独查找其选项卡。