Citat:
itf: Nažalost, title se mijenja... Da se ne mijenja, već bi ja to našao preko FindWindow. Zato sam i mislio prvo preko EnumWindows selektirati sve firefox prozore... ali opet, valjda postoji nešto jednostavnije jer ne volim raditi "akrobacije".
Ako sto ne koristis funkciju CreateProcess umesto ShellExecute onda ces automatski dobiti
u PROCESS_INFORMATION strukturi handle od procesa pomocu kojeg ces zatvarati instancu
koja je otvorila samo tvoja aplikacija jer onda ti i ne treba kod koji ce preko FindWindow i GetWindowThreadProcessID
gasiti instancu browsera
Code:
STARTUPINFO si;
PROCESS_INFORMATION pi;
CreateProcess(.....,&si,&pi) ;
DWORD dwExitCode ;
GetExitCodeProcess(pi.hProcess,&dwExitCode);
TerminateProcess(pi.hProcess,dwExitCode);
http://msdn.microsoft.com/en-us/library/ms682512(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms684873(VS.85).aspx
Citat:
Meni bi bilo idealno da aplikacija sama to interno odradi, ali to mi je sa postojećim komponentama jednostavno sporo i nepouzdano. Ako radim ovako preko stvaranja procesa imam problem jer skripta će se izvršiti u već postojećoj instanci firefox-a (ukoliko neka već postoji) i time zatvoriti tu istu. A ta postojeća instanca može već biti otvorena od strane nekog korisnika OS-a i time njemu ometam rad. Ovo bi bilo dobro kad bi ja mogao otvoriti novu instancu, da se skripta izvrši u njoj, te da se na kraju onda zatvori, bez da ometa korisnika imao on već otvoren firefox ili ne.
Pa najbolje bi bilo sa ActiveX kontrolom da resis slucaj.
Imas sve event-e browsera (OnBeforeNavigate,DocumentComplete, itd,...) a i ne moras da se zezas sa Win32 Api-ije oko pokretanja instanci ..
Cudi me da ti toliko sporo radi , probaj da nadjes neku drugu komponentu ...
Ja sam radio dosta puta sa WebBrowser ActiveX komponentom u VC++ i
nisam imao nikada slicnih problema ...
Viva lollapalooza