ilprogrammatore10 (Normal User)
Newbie
Messaggi: 13
Iscritto: 21/05/2009
|
Ciao a tutti,
Vi ringrazio in anticipio per la vostra attenzione,
volevo sapere (dopo ore di dannatissimo gogglaggio) se č possibile
ricavare il path dell'eseguibile dall'handle di un form.
Confido in voi
ilprogrammatore10
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Se il form appartiene alla tua applicazione, basta Application.ExecutablePath. Se il form appartiene ad un'altra applicazione, ci sono due casi:
- Se il form č la finestra principale, allora puoi scorrere tutti i processi in esecuzione e confrontare l'handle del form con quello della finestra ad essi associata:
Codice sorgente - presumibilmente VB.NET |
Dim P() As Process = Process.GetProcesses() For Each Proc As Process In P If P.MainWindowHandle = HandleDelForm Then 'Il percorso dell'eseguibile č: P.MainModule.FileName End If Next
|
- Se il form non č la finestra principale, allora puoi provare per prima cosa ad usare il codice sopra riportato. Quindi, una volta ottenuto l'handle della finestra principale del processo, usare la funzione EnumChildWindows ( http://pinvoke.net/default.aspx/user32/EnumChildWindows.html) dell'api di Windows per enumerare tutte le form figlie di questa e vedere se ce n'č qualcuna il cui handle corrisponde a quello che cerchi.
|
|
ilprogrammatore10 (Normal User)
Newbie
Messaggi: 13
Iscritto: 21/05/2009
|
grazie totem per la tua risposta....
Ma ancora il problema non l'ho risolto.
Infatti, io utilizzao l'handle per trovare anche i processi nascosti, e di conseguenza non posso utilizzare il codice da te riportato, perchč molto probabilmente non troverebbe il processo.
Grazie ancora
Help me!!
Ciaoo!!
ilprogrammatore10
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Processi nascosti?
Ovvero?
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Processi che il task manager - e di conseguenza anche la classe process - non sono in grado di rivelare. Se č cosė, allora non puoi farlo. Devi documentarti su come visualizzare i processi nascosti.
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da Il Totem:
Processi che il task manager ... |
Avevo capito il senso, ero un po' sarcastico ...
In realta' NON dovrebbero esistere processi "nascosti" (che dispongono di un handle, fra l'altro ...) e volevo qualche dettaglio in piu' ...
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Infatti io non lo sapevo. Ma ho visto che ci sono programmi che svolgono questa funzione.
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da Il Totem:
Infatti io non lo sapevo. Ma ho visto che ci sono programmi che svolgono questa funzione. |
Programmi che svolgono quale "funzione"? Quali programmi?
A parte i virus che si basano su rootkit (e su cui il discorso si farebbe comunque troppo lungo e complesso), NON e' possibile nascondere processi.
Ovviamente altro discorso si deve fare per i device driver, di cui e' comunque fattibile un elenco.
Comunque, a parte questi discorsi, che ci portano da altre parti, chi aveva posto la domanda partiva da un handle di un form. Quindi esiste un form e un handle, non vedo come il processo possa essere "nascosto" ... Ultima modifica effettuata da theprogrammer il 23/05/2009 alle 19:35 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Non aspettarti una risposta da me, č ilprogrammatore10 che l'ha detto.
Comunque, se provi a enumerare le finestre attive con EnumWindow, vedrai che ne ne sono molte che sono senza titolo e non hanno interfaccia. Questo significa che non tutti i processi senza interfaccia sono privi di finestre (sembra uno dei quesiti di logica dei test di ingresso XD).
|
|