Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [Delphi] dll, dubbio.

  1. #1

    [Delphi] dll, dubbio.

    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.

  2. #2
    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.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Ma perché deve essere in una libreria? Non capisco questo... non c'è motivo alcuno per il quale funzioni unicamente se contenuto in una libreria.

  4. #4
    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.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  5. #5
    Scusami se ti rompo... Potresti spiegare meglio questa cosa?

  6. #6
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.