2009-06-23 20 views

Répondre

5

EnumWindows() est pour cela. Vous l'appelez et fournissez un rappel. Il appelle le rappel pour chaque fenêtre trouvée et transmet un handle à cette fenêtre.

Vous pouvez ensuite utiliser la poignée pour interroger les paramètres de la fenêtre et décider si cela vous intéresse ou si vous souhaitez effectuer une action avec celle-ci.

+0

pense que je aurais dû deviner que * nom *. Merci! – JustJeff

3

Vous voulez utiliser la fonction EnumDesktopWindows dans user32.dll.

Voici un code C# pour vous diriger vers les bons appels d'API. Je ne suis pas sûr de ce que cela donnerait en C, mais vous avez l'idée.

[DllImport("user32.dll")] 
private static extern int EnumDesktopWindows(IntPtr hDesktop, EnumWindowsProc ewp, int lParam); 
0

je me suis dit un exemple pourrait jeter plus de lumière sur le processus

#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; 
} 
Questions connexes