2009-06-23 125 views

回答

5

EnumWindows()就是這樣。你稱它並提供回調。它爲每個找到的窗口調用回調,並將句柄傳遞給該窗口。

然後,您可以使用該句柄來查詢窗口參數,並決定它是對您感興趣還是對其執行一些操作。

+0

想我應該已經猜到* *那個名字。謝謝! – JustJeff 2009-06-24 04:21:22

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; 
}