c++/c KEYBOARD

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
p3040074
bit level
bit level
Posts: 24
Joined: Mon Dec 18, 2006 9:16 am
Academic status: N>4
Gender:
Location: ATHENS
Contact:

c++/c KEYBOARD

Post by p3040074 » Fri Mar 30, 2007 9:34 pm

Μπορεί κάποιος να βοηθήσει; Σε c++ ή c κώδικα πρόγραμμα που να μου εμφανίζει τι πλήκτρα πατάει ο χρήστης;
User avatar
AmmarkoV
Wow! Terabyte level
Wow! Terabyte level
Posts: 2838
Joined: Thu Nov 04, 2004 2:55 pm
Gender:
Location: Reloaded @ Santa Friday
Contact:

Post by AmmarkoV » Fri Mar 30, 2007 11:05 pm

Σε τι λειτουργικό ?
Spoiler: εμφάνιση/απόκρυψη
I would love to change the world, but they won't give me the source code. Οι καθηγητές πληρώνονται από το δημόσιο αρα από όλους τους Έλληνες για να κάνουν τα μαθήματα. Όλοι οι Έλληνες θα έπρεπε να μπορούν να δουν τα μαθήματα τα οποία πληρώνουν! Tο πνευματικό έργο που επιτελείται με τα χρήματα του δημοσίου ΔΕΝ είναι μόνο δικό σας Όποιος δεν δίνει πανελλήνιες έχει δικαίωμα στην γνώση που πληρώνει [url=http://ammar.gr/gddg]gddg blog[/url]
Image
p3040074
bit level
bit level
Posts: 24
Joined: Mon Dec 18, 2006 9:16 am
Academic status: N>4
Gender:
Location: ATHENS
Contact:

Post by p3040074 » Fri Mar 30, 2007 11:59 pm

windows xp
User avatar
AmmarkoV
Wow! Terabyte level
Wow! Terabyte level
Posts: 2838
Joined: Thu Nov 04, 2004 2:55 pm
Gender:
Location: Reloaded @ Santa Friday
Contact:

Post by AmmarkoV » Sat Mar 31, 2007 12:53 am

Θέλεις να καταγράφεις γενικότερα keystrokes ή σε ένα συγκεκριμένο παράθυρο ?
Spoiler: εμφάνιση/απόκρυψη
I would love to change the world, but they won't give me the source code. Οι καθηγητές πληρώνονται από το δημόσιο αρα από όλους τους Έλληνες για να κάνουν τα μαθήματα. Όλοι οι Έλληνες θα έπρεπε να μπορούν να δουν τα μαθήματα τα οποία πληρώνουν! Tο πνευματικό έργο που επιτελείται με τα χρήματα του δημοσίου ΔΕΝ είναι μόνο δικό σας Όποιος δεν δίνει πανελλήνιες έχει δικαίωμα στην γνώση που πληρώνει [url=http://ammar.gr/gddg]gddg blog[/url]
Image
p3040074
bit level
bit level
Posts: 24
Joined: Mon Dec 18, 2006 9:16 am
Academic status: N>4
Gender:
Location: ATHENS
Contact:

Post by p3040074 » Mon Apr 02, 2007 12:38 am

γενικα...
User avatar
AmmarkoV
Wow! Terabyte level
Wow! Terabyte level
Posts: 2838
Joined: Thu Nov 04, 2004 2:55 pm
Gender:
Location: Reloaded @ Santa Friday
Contact:

Post by AmmarkoV » Mon Apr 02, 2007 6:59 pm

Για γενικότερη καταγραφή όποιου key και να πατήσει ο χρήστης δεν ξέρω , (βασικά δεν μου έχει χρειαστεί και δεν έχω ασχοληθεί..) , αν ψάξεις στο google για "key logger" θα βρείς ούκ ολίγα πράγματα..

Τώρα για να πάρεις συγκεκριμένα κάποιο κουμπί που πατήθηκε στο παράθυρο σου , αρκεί να βάλεις την παρακάτω καταχώρηση για να κάνει intercept τα μηνύματα WM_KEYDOWN (ο κώδικας παρακάτω είναι σε Free Pascal , αν δεν κάνω λάθος το Casing των σταθερών είναι κεφαλαία σε C/C++) , κατα αυτό τον τρόπο κάθε φορά που ο χρήστης πατάει ένα κουμπί και είναι focused το παράθυρο θα κάθεται στην τιμή vkpressed η τιμή του κουμπιού που πατήθηκε..

Code: Select all

function WindowProc(Window: HWnd; AMessage2, WParam,LParam: Longint): Longint; stdcall; export;
begin
  WindowProc:=0;
  case AMessage2 of
    wm_keydown : begin vkpressed:=wparam; end;
  end;
end;
Αν θές να αποθηκεύσεις σε μια μεταβλητή database τι πραγματικά πατήθηκε αρκεί το παρακάτω..

Code: Select all

case vkpressed of
vk_lbutton: database:='LEFT MOUSE';
vk_rbutton : database:='RIGHT MOUSE' ;
vk_mbutton : database:='MIDDLE MOUSE' ;
vk_back : database:='BACKSPACE' ;
vk_tab : database:='TAB' ;
vk_return : database:='ENTER' ;
vk_control : database:='CONTROL' ;
vk_pause : database:='PAUSE' ;
vk_shift : database:='SHIFT' ;
vk_menu : database:='ALT' ;
vk_escape : database:='ESCAPE' ;
vk_space : database:=' ' ;
vk_prior : database:='PAGE UP' ;
vk_next : database:='PAGE DOWN' ;
vk_end : database:='END' ;
vk_home : database:='HOME' ;
vk_left : database:='LEFT ARROW' ;
vk_right : database:='RIGHT ARROW' ;
vk_up : database:='UP ARROW' ;
vk_down : database:='DOWN ARROW' ;
vk_snapshot : database:='PRINTSCREEN' ;
vk_insert : database:='INSERT' ;
vk_delete : database:='DELETE' ;
vk_0 : database:='0' ;
end;
Spoiler: εμφάνιση/απόκρυψη
I would love to change the world, but they won't give me the source code. Οι καθηγητές πληρώνονται από το δημόσιο αρα από όλους τους Έλληνες για να κάνουν τα μαθήματα. Όλοι οι Έλληνες θα έπρεπε να μπορούν να δουν τα μαθήματα τα οποία πληρώνουν! Tο πνευματικό έργο που επιτελείται με τα χρήματα του δημοσίου ΔΕΝ είναι μόνο δικό σας Όποιος δεν δίνει πανελλήνιες έχει δικαίωμα στην γνώση που πληρώνει [url=http://ammar.gr/gddg]gddg blog[/url]
Image
Post Reply

Return to “Προγραμματισμός”