2016-11-15 136 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機制單獨查找其選項卡。