PDA

Visualizza la versione completa : [Delphi] dll, dubbio.


denis76
20-03-2008, 09:38
Sto cercando di preparare un programmino simile a vnc che catturi le aree del desktop modificate. Cercando info sul web mi sono imbattuto in questo articolo che spiega come sapere ciò che viene premuto sulla tastiera.

http://delphi.about.com/od/kbwinshell/a/delphi_hook.htm

Il metodo funziona, c'è però una cosa che non riesco a capire.
Se leggete infatti il paragrafo "A Global Hook" si dice che per ottenere gli eventi hook globali bisogna preparare una dll, l'eseguibile da solo non basta più. Non capisco quale sia il motivo.

Voi ci capite qualcosa in più?

Grazie mille, Denis.

pallinopinco
20-03-2008, 11:43
Non capisco quale sia il motivo.

E' spiegato nella documentazione della funzione SetWindowsHookEx:



The global hooks are a shared resource, and installing one affects all applications in the same desktop as the calling thread. All global hook functions must be in libraries.

denis76
20-03-2008, 12:11
Ma perché deve essere in una libreria? Non capisco questo... non c'è motivo alcuno per il quale funzioni unicamente se contenuto in una libreria.

pallinopinco
20-03-2008, 13:26
Ma perché deve essere in una libreria?


Conosci un altro modo per creare una risorsa condivisa? Il global hook non può risiedere nello spazio di memoria di uno specifico processo perché deve essere condiviso da tutte le applicazioni.

denis76
20-03-2008, 13:58
Scusami se ti rompo... Potresti spiegare meglio questa cosa?

MItaly
20-03-2008, 14:21
Una hook globale deve intercettare i messaggi di tutti i processi, per cui il suo codice dovrà essere eseguito all'interno di tutti i processi; questo è possibile solo con una dll, che viene caricata da Windows in ogni processo.

Loading