Ciao a tutti. Io devo fare un programma nel quale, all'apertura di un'applicazione (nel mio caso Internet Explorer), venga richiamata una funzione. Qualcuno sa dirmi come fare per intercettare l'apertura di Internet Explorer?
Ciao a tutti. Io devo fare un programma nel quale, all'apertura di un'applicazione (nel mio caso Internet Explorer), venga richiamata una funzione. Qualcuno sa dirmi come fare per intercettare l'apertura di Internet Explorer?
Non preoccupatevi di rispondere, ho risolto. Vi posto il codice delle due funzioni necessarie per la risoluzione del problema
Questa è la funzione principale alla quale viene passato il parametro ApplicationName di tipo String (nel mio caso è 'IEXPLORE.EXE')
Questa è l'implementazione della funzione GetName a cui passo il parametro Data di tipo TProcessEntry32codice:Function IsApplicationRunning ; Var Data : TProcessEntry32 ; Handler : THandle ; ProcessoTrovato : Boolean ; Begin ProcessoTrovato := False ; Try Handler := CreateToolHelp32Snapshot ( TH32CS_SNAPALL, 0 ) ; Data.dwSize := SizeOf ( TPROCESSENTRY32 ) ; If Process32First( Handler, Data ) Then Begin While Process32Next ( Handler, Data ) Do Begin If ( GetName ( Data ) = ApplicationName ) Then Begin ProcessoTrovato := True ; End; End; End; Except // End; IsApplicationRunning := ProcessoTrovato ; End;
Per il corretto funzionamento bisogna includere le librerie ShellApp e TlHelp32codice:Function GetName ; Var Posizione : Byte ; NomeProcesso : String ; RicercaTerminata : Boolean ; Begin NomeProcesso := '' ; Posizione := 0 ; For Posizione := 0 to 11 //11 è la lunghezza del nome del processo Do Begin //che si vuole ricercare NomeProcesso := NomeProcesso + Data.szExeFile [ Posizione ] ; End; GetName := NomeProcesso ; End;
Ciao a tutti
Riporto alla luce questa discussione per chiedere qualcosa inerente all'argomento...
Nell'esempio qui sopra, viene spiegato come vedere se una determinata applicazione è attiva o meno..
Impostando un timer, richiamando così la funzione ogni tot millisecondi, potremmo essere in grado di controllare quando viene avviata una nuova applicazione, semplicemente controllando se il numero dei processi attuali è diverso da quello contato in precedenza.
Questa soluzione non è certo tra le più eleganti, in quanto sarei costretto ad eseguire molti controlli anche quando non servono, e in alcuni casi non funzionerebbe nemmeno..
Per questo motivo, mi chiedevo se esistesse qualche messaggio di sistema che mi avvisasse quando una qualsiasi applicazione viene avviata (non mi importa saperne il nome o altro), ho provato a cercare in giro ma non ho trovato nulla