Anche se ho cercato molto, non mi è ancora chiaro cosa sia esattamente un "gancio". Ad esempio, ho letto questo post su wiki answers:Che cos'è un "gancio" e come posso scriverne uno in Java? E come comunicare con il kernel per conoscere i tasti premuti dall'utente/registrazione con OS
Un gancio è un metodo di interporre un pezzo di codice di fronte a un'altra pezzo di codice, in modo che il primo pezzo di codice eseguito prima del secondo pezzo di codice, dando al primo pezzo di codice un'opportunità di monitorare e/o filtrare il comportamento del secondo pezzo di codice. Un esempio di potrebbe essere un hook del mouse, consentendo al codice hook di monitorare il mouse conservando allo stesso tempo la funzionalità della routine di elaborazione degli eventi del mouse originale .
Ho letto anche questo post, ma ancora non capisco cosa sia esattamente un "gancio". Qualcuno può spiegare, in parole povere, cos'è un "gancio"? Perché alcuni scrivono esattamente un "gancio"? Inoltre, è possibile scrivere un "hook" in Java?
Nota:
Volevo scrivere un keylogger in Java e un mio amico ha detto che si dovrà scrivere un "gancio" in C. non riesco a scrivere il tutto keylogger in Java (da operare solo su Windows)?
EDIT
si prega di dare una risposta w.r.t keylogger. Come posso chiedere a kernel
di fornire le informazioni sul tasto premuto sulla mia applicazione utilizzando l'aggancio? O come posso registrare la mia applicazione con sistema operativo usando JNI? Voglio che la mia applicazione registri i tasti premuti dall'utente.
Penso che il tuo amico intendesse dire che dovrai usare il metodo nativo. È possibile scrivere un metodo nativo in C e chiamarlo da Java utilizzando Java Native Interface (JNI). – toto2
@ toto2 e cosa farà il metodo nativo? – saplingPro
Questa sarebbe una funzione di sistema che registra le chiavi. In realtà è meglio rinunciare completamente a Java per un simile lavoro. Java è pensato per essere portatile e il rovescio della medaglia è che non può fare roba relativa al sistema operativo. Non conosco molto Windows, ma probabilmente C# sarebbe più appropriato. – toto2