Newsgroup: it.comp.lang.visual-basic
Titolo: Palpare un ... eseguibile

Ciao a tutti,
ho un problema che mi assilla e non riesco a venirne a capo.
So di sicuro che devo usare le api, pero' non sono riuscito a capire quali
funzioni usare.
Il mio problema e' il seguente:
Ho un'applicazione che al suo avvio si riduce ad icona e viene visualizzata
nella barra degli strumenti vicino l'orologio (try area) ... fi qui' tutto
OK
Il mio problema e' riuscire ad intercettare quando un programma (mettiamo
Notepad.exe) viene eseguito.
Questo mi serve per far si' che quando un programma (esemp. notepad.exe)
viene eseguito, avviso l'utente che la l'applicazione x (x sta per programma
in esecuzione) e' stata avviata.
Come posso fare ???
Vi ringrazio in anticipo
Filippo
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 (x sta per programma in esecuzione) e' stata avviata.
umm umm, la strada e' quella forse di interaggire con i processi in corso di
windows oppure solo le applicazioni (una spece di task manager insomma) e
poi loggare ingressi e uscite , penso ci sia qualche api...
EnumProcesses
Requires Windows NT 4.0 or later; Win9x/ME: Not supported
The EnumProcesses function retrieves the process identifier for each process
object in the system.
vedi se ti va bene
-- 
-Gigio@Work(?)-


Ciao Gigio2k,
hai perfettamente centrato il mio problema,
do' un'occhio alla funzione e ... incrociamo le dita
Grazie


 mettiamo  Notepad.exe) viene eseguito.
Alcuni virus fanno così:
modificano la chiave
HKEY_LOCAL_MACHINE\Software\Classes\Exefile\Shell\Open\Command
dal valore "%1" %*  al valore "virus.vxd" "%1" %*
in questo modo tutte le volte che si esegue un .exe (ma non un .com)
viene invocato "virus.vxd" che provvede a fare le sue cose e, se vuole,
lanciare l'eseguibile.
L'approcio è pericoloso (se la tua applicazione va in crash...) e non sono
sicuro che si possa fare utilizzando un eseguibile in VB (i vxd sono driver,
pertanto caricati prima degli altri oggetti).
<x:termoPilucco>, chissa'

pertanto caricati prima degli altri oggetti).
basta un exe :-)
-- 
ciao, hal

 in esecuzione) e' stata avviata.
Mi sfugge l'utilita' di avvisare l'utente che un'applicazione e' stata
avviata, se non e' stato lui ad avviarla chi altri, forse e' un programma
che serve per monitorare una rete locale?
Comunque un sistema piuttosto semplice ma che funziona solo con applicazioni
che creano una finestra e' quello di inserire in un timer una scansione di
tutte le desktop window aperte (enumdesktopwindow) mantenendo il precedente
elenco in modo da poter sapere se ve ne e' una aperta ora che nel precedente
controllo non c'era.
A quel punto avendo l'handle della nuova finestra puoi ottenere con le api
tutti
gli altri valori, come l'handle del processo, le finestre child create dal
processo, il percorso dell'eseguibile ecc.
Non ho idea pero' se questo sistema funzionerebbe in una rete locale.
Suppongo che la finestra si aprirebbe solo sul client che ha avviato
l'applicazione, per cui il controllo fallirebbe miseramente.
In questo caso forse sarebbe possibile un altro approccio ma che
funzionerebbe solo se hai un numero limitato e ben conosciuto di
applicazioni da controllare.
Puoi provare ad aprire in modalita' esclusiva il file.exe relativo, se dara'
errore vuol dire che e' in uso e sai che quel programma sta girando.
ciao
Paolo B.