Håndter til vindueshåndtag (c)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har forsøgt at bruge 'Grib alle proces-id'er opregnet af skrivebordet' -metoden, men det virker ikke.


Er der en måde at konvertere et håndtag til et vindueshåndtag eller
Er der mulighed for at tage et proces-id og finde ud af alle de barnevinduer, der fremkommer af processen?


PS: Jeg vil ikke bruge FindWindow på grund af flere procesproblemer.

Bedste reference


Du kan ringe EnumWindows () for at gentage over alle vinduerne på øverste niveau på skærmen og derefter bruge GetWindowThreadProcessId () for at finde ud af, hvilke der hører til din proces. [2] [3]


For eksempel, noget som:


BOOL CALLBACK ForEachTopLevelWindow(HWND hwnd, LPARAM lp)
{
    DWORD processId;
    GetWindowThreadProcessId(hwnd, &processId);
    if (processId == (DWORD) lp) {
        // `hwnd` belongs to the target process.
    }
    return TRUE;
}

VOID LookupProcessWindows(DWORD processId)
{
    EnumWindows(ForEachTopLevelWindow, (LPARAM) processId);
}