Article View: be.comp.programming
Article #14378c++,winNT: Hoe breng ik een willekeurige applicatie op de voorgrond?
From: Colin Bouckaert
Date: Tue, 13 Feb 2001 15:12
Date: Tue, 13 Feb 2001 15:12
62 lines
2657 bytes
2657 bytes
Ik heb problemen bij het schrijven van c++ code (voor WinNT) om een
willekeurige applicatie op de voorgrond te laten treden.
Stel dat ik alleen de naam van het programma weet (b.v. explorer.exe,
outlook.exe of gelijkwat.exe).
Hoe breng ik deze applicatie dan op de voorgrond?
Wat ik tot nu gedaan heb:
eerst zoek ik het process id van de applicatie, gebruikmakende van
EnumProcesses,OpenProcess,EnumProcessModules en
GetModuleBaseName.
Tenslotte gebruik ik EnumWindows om alle top level windows appart te
onderzoeken op hun process id en de juiste naar de voorgrond te
brengen (wat niet altijd lukt).
EnumWindows(BringToForeground,LPARAM(dwProcessId);
Deze functie roept mijn callback functie op voor iedere window totdat
ze false return.
// Globale callback functie
BOOL CALLBACK BringToForeground( HWND hWnd, // handle parent window
LPARAM lParam // ProcessId to match
)
{
DWORD dwProcessIdToMatch = DWORD(lParam);
DWORD dwProcessId=0;
// Vraag het processId van het window
GetWindowThreadProcessId(hWnd,&dwProcessId);
// Komt het process id van het window overeen met deze
// van de applicatie?
if (dwProcessId==dwProcessIdToMatch
&& GetParent(hWnd)==NULL // Misschien onnodig
)
{
// Gebruikmakend van VC++ heb ik gezien dat bepaalde applicaties
// meerdere windows leveren waarvan het process id overeenkomt met het
// process id van de applicatie (explorer.exe geeft er mij +/- 20.)
// Hoe kan ik nu weten wanneer ik de juiste handle vast heb?????
// Hoe kan ik dit testen????
// Breng de application op de voorgrond
ShowWindow(hWnd, SW_SHOWNORMAL);
SetForegroundWindow(hWnd);
// Stop de enumeratie
return false;
}
// Ga door met de enumeratie
return true;
}
Iemand enig idee?
Colin
Technical Details
Message-ID:
<3a894669.27825180@news.skynet.be>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!newsfeeds.belnet.be!news.belnet.be!skynet.be!poster!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,1c9fe68062fc1f1b,start X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-02-13 07:11:39 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!newsfeeds.belnet.be!news.belnet.be!skynet.be!poster!not-for-mail From: colinb@covan.be (Colin Bouckaert) Newsgroups: be.comp.programming Subject: c++,winNT: Hoe breng ik een willekeurige applicatie op de voorgrond? Date: Tue, 13 Feb 2001 15:12:33 GMT Organization: Covan Vision Systems Lines: 62 Message-ID: <3a894669.27825180@news.skynet.be> NNTP-Posting-Host: 194-78-207-44.pro.turboline.skynet.be X-Trace: news1.skynet.be 982077098 31477 194.78.207.44 (13 Feb 2001 15:11:38 GMT) X-Complaints-To: abuse@skynet.be NNTP-Posting-Date: 13 Feb 2001 15:11:38 GMT X-Newsreader: Forte Free Agent 1.21/32.243