5
如何知道EnumWindows何時完成Windows列表?因爲EnumWindows接收到一個回調函數作爲參數,並且它一直調用它,直到沒有更多的窗口被列出。如何知道EnumWindows何時完成其窗口列表?
如何知道EnumWindows何時完成Windows列表?因爲EnumWindows接收到一個回調函數作爲參數,並且它一直調用它,直到沒有更多的窗口被列出。如何知道EnumWindows何時完成其窗口列表?
EnumWindows()
塊枚舉正在發生。當EnumWindows()
通過窗口枚舉完成時,它返回BOOL
。
下面的代碼片段:
#include <windows.h>
#include <cstdio>
BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lparam)
{
int& i = *(reinterpret_cast<int*>(lparam));
++i;
char title[256];
::GetWindowText(hwnd, title, sizeof(title));
::printf("Window #%d (%x): %s\n", i, hwnd, title);
return TRUE;
}
int main()
{
int i = 0;
::printf("Starting EnumWindows()\n");
::EnumWindows(&MyEnumWindowsProc, reinterpret_cast<LPARAM>(&i));
::printf("EnumWindows() ended\n");
return 0;
}
給了我這樣的輸出:
Starting EnumWindows() Window #1 (<hwnd>): <title> Window #2 (<hwnd>): <title> Window #3 (<hwnd>): <title> <and so on...> EnumWindows() ended
所以EnumWindows()
絕對列舉以同步的方式。
正如我測試,它不阻止,只有約1-> 2秒後,窗口列表完全列出,任何其他的想法? – jondinham
@保羅:一定有一個錯誤。你可以發佈使用'EnumWindows()'的代碼嗎?我也測試過它,它只有在通過窗口枚舉完成後纔會阻塞並返回。 –
我再次檢查,我的錯誤。它阻止。 :) – jondinham