是否有一個Win32 API的方式來獲得所有打開的窗口的枚舉?似乎一定不知道從哪裏開始尋找。枚舉桌面上的所有窗口句柄
2
A
回答
5
EnumWindows()就是這樣。你稱它並提供回調。它爲每個找到的窗口調用回調,並將句柄傳遞給該窗口。
然後,您可以使用該句柄來查詢窗口參數,並決定它是對您感興趣還是對其執行一些操作。
2
3
你想使用的功能EnumDesktopWindows user32.dll中。
這裏有一些C#代碼讓你指出正確的API調用。我不確定C會如何看,但你明白了。
[DllImport("user32.dll")]
private static extern int EnumDesktopWindows(IntPtr hDesktop, EnumWindowsProc ewp, int lParam);
0
我想出一個例子能夠說明更多的光線對過程
#include <windows.h>
BOOL CALLBACK printVisibleWindows(HWND wnd, LPARAM lParam)
{
if(!IsWindowVisible(wnd))return 1;
int length = GetWindowTextLength(wnd);
if(!length)return 1;
length++;
TCHAR *buffer = (TCHAR*)malloc(length);
GetWindowText(wnd, buffer, length);
printf("%p %s\n", wnd, buffer);
free(buffer);
return 1;
}
int main()
{
DWORD dwThreadId = GetCurrentThreadId();
HDESK hDesktop = GetThreadDesktop(dwThreadId);
EnumDesktopWindows(hDesktop, printVisibleWindows, 0);
return 0;
}
相關問題
- 1. 枚舉句柄
- 2. 如何獲取桌面窗口句柄?
- 3. 枚舉窗口內的所有控件
- 4. 獲取窗口的所有句柄
- 5. WPF窗口擁有所有者句柄,但沒有所有者
- 6. 如何獲得列表或枚舉的非託管窗口的所有句柄與同一類和名稱
- 7. MFC面板和窗口句柄
- 8. 枚舉句柄名稱問題
- 9. 在C中枚舉文件句柄#
- 10. 窗口的主句柄
- 11. MFC中的窗口句柄?
- 12. 使用UIAutomation .NET查找桌面上的所有窗口
- 13. 窗口句柄和窗口尺寸
- 14. 獲取VB.NET中PID進程的所有子窗口的句柄
- 15. 枚舉所有「始終位於頂部」的窗口
- 16. 枚舉應用程序創建的所有窗口
- 17. 如何枚舉進程內的所有窗口?
- 18. 獲取上次激活窗口的窗口句柄
- 19. 窗口句柄C#/。NET
- 20. 獲取窗口句柄
- 21. 檢索Delphi窗口句柄
- 22. 驗證Win32窗口句柄
- 23. Python pyautogui窗口句柄
- 24. 在所有虛擬桌面/工作區上顯示PyGTK窗口
- 25. 使用它的類名獲取窗口上所有控件的句柄
- 26. 如何使用其句柄更改窗口所有者
- 27. 在Windows XP上,我如何枚舉系統顯示的所有窗口(C#)
- 28. 桌面上的C#位置窗口
- 29. 在FreeBSD上枚舉IP地址的所有網絡接口
- 30. 沒有我的窗口捕獲桌面
想我應該已經猜到* *那個名字。謝謝! – JustJeff 2009-06-24 04:21:22