2013-10-25 38 views
0

我想了解哪些進程具有圖形界面。我試圖使用GetGuiResources,但其中一些進程具有GUI資源,但沒有窗口。現在我使用WaitForInputIdle - 同樣,一些進程準備好輸入,但他們沒有窗口:(。我怎麼檢查一個進程是否有圖形界面?如何檢查進程是否具有圖形界面(無.NET)?

PS我使用Python + ctypes,但在C++上的例子或小解釋我應該使用什麼將是足夠的:)

+0

你的實際目標是什麼? –

回答

0

如果您的目標是Windows,您可以使用Win32 API。 EnumWindows函數枚舉子窗口,或者可以使用EnumThreadWindows來枚舉非子窗口。

我希望這可以給你一些幫助。

+0

謝謝你的回答。 EnumWindows返回很多句柄。我需要將每個句柄與當前過程相關聯,是嗎? EnumThreadWindows - 我應該得到所有線程,然後使用EnumThreadWindows檢查每個線程,是嗎? – well

+0

** EnumThreadWindows **需要與Window關聯的threadId。 只需要UI進程就可以使用** EnumDesktopWindows **函數。看看它是否適合您的解決方案。 [示例](http://stackoverflow.com/questions/5251247/why-iswindowvisible-makes-callback-of-enumdesktopwindows-runs-only-once) 不要忘記在回調中返回TRUE或FALSE :) –

+0

謝謝你的回答。現在它可以工作。我從進程中提取所有線程,然後使用EnumThreadWindows從每個線程提取窗口句柄,然後檢查窗口是否可見(IsWindowVisible)。 – well

相關問題