View Full Version : [C] prendere input da s.o
tecno789
12-12-2011, 23:42
In pratica mi serve l'input dato da tastiera sul sistema operativo, nel senso, sto lavorando con i file, riesco a prendere determinati input es: da altri file dallo stdin, stderr, ma come faccio a prendere in esame l'input dato e immesso nel sistema operativo?
si può fare o sto solo delirando? :)
starfred
13-12-2011, 09:04
Probabilmente non ho capito ma intendi un keylogger?
tecno789
13-12-2011, 18:49
Probabilmente non ho capito ma intendi un keylogger?
esattamente.
tecno789
25-12-2011, 12:27
non si può con la libreria standard vero??
Su che SO stai lavorando? Mi sa che con le librerie standard non si va da nessuna parte (che io sappia)...
tecno789
25-12-2011, 17:14
Su che SO stai lavorando? Mi sa che con le librerie standard non si va da nessuna parte (che io sappia)...
non ho preferenze, se si può lo faccio su linux, se si può solo con windows, lo faccio con quest'ultimo!
Ti dico quello che so per quanto riguarda Win... Ci sono due strade per fare quello che dici te:
1) Usi la funzione GetAsyncKeyState (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx) delle API Win32 per chiedere al SO se un certo tasto è stato premuto. Metodo altamente inefficiente perchè, se ad esempio devi fare un keylogger, dovresti fare un loop infinito che faccia il polling di tutti i possibili tasti che intendi intercettare. Troppo inefficiente nel caso del keylogger, utile in altri, dipende quello che devi fare...
2) Fai un'applicazione win32 che intercetti gli eventi relativi alla pressione dei tasti. Molto più performante perchè funziona "ad eventi", o meglio "a messaggi"...
Magari qualcuno conosce altre soluzioni, sono interessato...
tecno789
25-12-2011, 17:47
Ti dico quello che so per quanto riguarda Win... Ci sono due strade per fare quello che dici te:
1) Usi la funzione GetAsyncKeyState (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx) delle API Win32 per chiedere al SO se un certo tasto è stato premuto. Metodo altamente inefficiente perchè, se ad esempio devi fare un keylogger, dovresti fare un loop infinito che faccia il polling di tutti i possibili tasti che intendi intercettare. Troppo inefficiente nel caso del keylogger, utile in altri, dipende quello che devi fare...
2) Fai un'applicazione win32 che intercetti gli eventi relativi alla pressione dei tasti. Molto più performante perchè funziona "ad eventi", o meglio "a messaggi"...
Magari qualcuno conosce altre soluzioni, sono interessato...
mhmhm diciamo che la 1. non mi serve, perchè quello che volevo fare io era proprio un keylogger rudimentale. comunque un programmatore abbastanza esperto mi ha detto che con le conoscenze che ho non si può proprio fare, visto che bisogna interfacciarsi direttamente con il sistema operativo e non con il terminale con cui è solito lavorare con il C.
Beh in linea di massima è come dici tu. Per attuare il metodo 2 devi costruire un applicazione win32, con una funzione CALLBACK che processi i messaggi mandati dal SO relativi alla pressione dei tasti e, per esempio, stampi su file quanto ricevuto. Se non hai idea di queste cose è un pò dura da realizzare... Però magari qualcuno conosce altre strade più semplici :)
tecno789
25-12-2011, 17:59
Beh in linea di massima è come dici tu. Per attuare il metodo 2 devi costruire un applicazione win32, con una funzione CALLBACK che processi i messaggi mandati dal SO relativi alla pressione dei tasti e, per esempio, stampi su file quanto ricevuto. Se non hai idea di queste cose è un pò dura da realizzare... Però magari qualcuno conosce altre strade più semplici :)
per i file non ci sono problemi, il problema sta proprio nel registrare cosa viene premuto da tastiera...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.