tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
2812
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Securitywelt Securitywelt ist offline Grünschnabel
    Registriert seit
    Jan 2010
    Beiträge
    4
    Hallo liebe Leute, ich habe ein Programm geschrieben dass Tastatureingaben auswerten soll.

    Ich habe folgende Header-Dateien und Lib's eingebunden:

    Code :
    1
    2
    3
    4
    5
    
    #include <windows.h>
    #include <winuser.h>
     
     
    #pragma(lib,"User32.lib")

    Mein Code sieht so aus:

    Code :
    1
    2
    3
    4
    
    if(GetAsyncKeyState('A') == -32767) {
     
    MessageBox::Show("A wurde gedrückt","Erfolg");
    }

    und meine Fehlermeldung so:

    Code :
    1
    2
    3
    
    1>Test.obj : error LNK2028: Nicht aufgelöstes Token (0A000010) ""extern "C" short __stdcall GetAsyncKeyState(int)" (?GetAsyncKeyState@@$$J14YGFH@Z)", auf das in Funktion ""private: void __clrcall KEYLOGGA::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@KEYLOGGA@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)" verwiesen wird.
    1>Test.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" short __stdcall GetAsyncKeyState(int)" (?GetAsyncKeyState@@$$J14YGFH@Z)" in Funktion ""private: void __clrcall KEYLOGGA::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@KEYLOGGA@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)".
    1>C:\Dokumente und Einstellungen\****\Eigene Dateien\C++ Projekte\Test\Debug\Test.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

    Könnt ihr mir helfen?
     

  2. #2
    Avatar von Marschal
    Marschal Marschal ist offline Großer Enumerator
    Registriert seit
    May 2008
    Ort
    Lohfelden (bei Kassel)
    Beiträge
    355
    Probiere mal anstelle von "A" den ASCII Code einzusetzen, also
    Code cpp:
    1
    
    GetAsyncKeyState(0x41)

    abgesehen davon, kannst du GetAsyncKeyState nicht auf eine Zahl überprüfen (=-Operator). GetAsyncKeyState gibt ein SHORT zurück.

    Verwende die Funktion mal wie folgt:
    Code cpp:
    1
    2
    3
    4
    
    if(GetAsyncKeyState(0x41))
    {
    printf("Taste A gedrückt");
    }

    MfG Marschal
     


    " Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
    Ambrose Bierce

  3. #3
    Securitywelt Securitywelt ist offline Grünschnabel
    Registriert seit
    Jan 2010
    Beiträge
    4
    Zitat Zitat von Marschal Beitrag anzeigen
    Probiere mal anstelle von "A" den ASCII Code einzusetzen, also
    Code cpp:
    1
    
    GetAsyncKeyState(0x41)

    abgesehen davon, kannst du GetAsyncKeyState nicht auf eine Zahl überprüfen (=-Operator). GetAsyncKeyState gibt ein SHORT zurück.

    Verwende die Funktion mal wie folgt:
    Code cpp:
    1
    2
    3
    4
    
    if(GetAsyncKeyState(0x41))
    {
    printf("Taste A gedrückt");
    }

    MfG Marschal

    Gleiches Problem..
    Selbe Fehlermeldung..
    Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
        private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                
    if(GetAsyncKeyState(0x41))
    {
        MessageBox::Show("A gedrückt");
    }
     
                 }

    Ich habe das aber nur zum Test in Form-Load gemacht, normal verwende ich es in einem Timer..

    HILFE
     

  4. #4
    Avatar von Marschal
    Marschal Marschal ist offline Großer Enumerator
    Registriert seit
    May 2008
    Ort
    Lohfelden (bei Kassel)
    Beiträge
    355
    Hm, also ein Quellcode ausschnitt aus meinem, funktionierendem, Keylooger sagt folgendes:

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    short character;
     
    ...
                            if(GetAsyncKeyState(character)== -32767 )
                            {  
                                ...
                                }
    Das funktioniert prächtig. Welche Projekt-art hast du den?
    MFC? WIN32? oder eine WIN API?

    EDIT: übrigends, was ich oben gesagt hatte mit auf eine Zahl überprüfen ist Müll:P, darf man machen
    Geändert von Marschal (24.01.10 um 13:36 Uhr)
     


    " Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
    Ambrose Bierce

  5. #5
    Securitywelt Securitywelt ist offline Grünschnabel
    Registriert seit
    Jan 2010
    Beiträge
    4
    Ich benutze Microsoft Visual C++ 2008 Express Edition und habe da eine Windows Form Anwendung.
     

  6. #6
    Avatar von Marschal
    Marschal Marschal ist offline Großer Enumerator
    Registriert seit
    May 2008
    Ort
    Lohfelden (bei Kassel)
    Beiträge
    355
    Ich mein in einer WIN-Form müsste es so verwendet werden, habe zwar noch nicht mit Win-Form gebastelt, aber naja.

    Code cpp:
    1
    
    SysWin32::GetAsyncKeyState(0xA4);

    NACHTRAG:

    hab was gefunden: http://msdn.microsoft.com/en-us/libr...l.keydown.aspx

    WinForms stellt ein KeyDown event zur verfügung.

    In der MSDN ist erklärt wie die benutzung funktioniert.

    Hoffe ich konnte helfen

    Mfg Marschal
    Geändert von Marschal (24.01.10 um 13:45 Uhr)
     


    " Gehirn: ein Organ, mit dem wir denken, daß wir denken. "
    Ambrose Bierce

  7. #7
    Securitywelt Securitywelt ist offline Grünschnabel
    Registriert seit
    Jan 2010
    Beiträge
    4
    Zitat Zitat von Marschal Beitrag anzeigen
    Ich mein in einer WIN-Form müsste es so verwendet werden, habe zwar noch nicht mit Win-Form gebastelt, aber naja.

    Code cpp:
    1
    
    SysWin32::GetAsyncKeyState(0xA4);

    NACHTRAG:

    hab was gefunden: http://msdn.microsoft.com/en-us/libr...l.keydown.aspx

    WinForms stellt ein KeyDown event zur verfügung.

    In der MSDN ist erklärt wie die benutzung funktioniert.

    Hoffe ich konnte helfen

    Mfg Marschal
    Zitat von MSDN:
    Code :
    1
    
    Occurs when a key is pressed while the control has focus.

    Sprich: Das Programm meldet wenn eine Taste gedrückt ist, wenn die Maus ein bestimmtes Textfeld oder andere Objekte im Fokus hat.

    Menno..
     

  8. #8
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    Hi.

    @Securitywelt: Warum postest du im Borland Unterforum, wenn du das Visual Studio benutzt?

    Warum stellst du die Bibliothek nicht einfach in den Projekteinstellungen ein?

    Die pragma Anweisung um eine Bibliothek zu linken, muss so aussehen:
    Code cpp:
    1
    
    #pragma comment(lib, "user32.lib")
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Funktion funktioniert im IE nicht
    Von queicherius im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.06.09, 16:16
  2. Antworten: 9
    Letzter Beitrag: 27.12.08, 20:32
  3. Funktion IE/Firefox - funktioniert/funktioniert nicht
    Von SixDark im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 02.03.06, 00:26
  4. If-Funktion funktioniert nicht richtig
    Von Black Crow im Forum PHP
    Antworten: 16
    Letzter Beitrag: 28.01.06, 19:44
  5. Funktion funktioniert nicht
    Von mingstar im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 23.02.05, 14:10