winapi - Luk et vindue (via det vindueshåndtag) uden at lukke processen, der ejer den

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at lukke individuelle vinduer fra processer, hvis kode jeg ikke har adgang til. Programmet gyder, hvad der ligner internet explorer-vinduer med et tryk på knappen, men de opretter ikke en iexplorer.exe-proces (de lever tilsyneladende indenfor ansøgningsprocessen). Jeg har formået at få proceshåndtaget og vinduet håndterer for hvert 'falsk' IE-vindue via nogle API-opkald, men jeg kan ikke regne ud, hvordan man lukker kun et givet vindue i en proces.


Jeg har prøvet


SendMessage(WindowHandles[i], 0x0010, 0, 0);


som er WM\_CLOSE beskeden, men det lukker alle vinduerne i processen og afslutter processen. Er der en måde at programmatisk gøre noget svarende til, hvad der sker, når jeg trykker på X i øverste højre hjørne af vinduet? Vinduet udfører ingen beregning eller påvirkning af andre hukommelsesrum, så jeg kan afslutte det, men jeg vil, men alt jeg har prøvet alt, hvad jeg ved, hvordan man skal gøre (DestroyWindow; som returnerede fejl 5 tilladelse nægtet WM\_CLOSE; som fungerer men lukker processen, WM\_QUIT; som giver fejl 2 fil ikke fundet og gør ingenting).


Nogle ideer?

Bedste reference


Du kan sende en SW\_HIDE, hvis det skal fungere teknisk, selvom det ikke lukker dem, kan du finde mere information på
http://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx[2]