Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    51

    [Delphi 7] Intercettare l'avvio di un'applicazione

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    51
    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')
    codice:
    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;
    Questa è l'implementazione della funzione GetName a cui passo il parametro Data di tipo TProcessEntry32

    codice:
    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;
    Per il corretto funzionamento bisogna includere le librerie ShellApp e TlHelp32

    Ciao a tutti

  3. #3
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.