SendInput probleme



  • Hi Leute
    Ich versuch die funktion SendInput zu benutzen nur er gibt mir immer diese Fehler aus:

    E:\sicherung\ubuntu\Projekt\lernen\main.cpp||In function 'void hop(bool)':|
    E:\sicherung\ubuntu\Projekt\lernen\main.cpp|10|error: 'INPUT' was not declared in this scope|
    E:\sicherung\ubuntu\Projekt\lernen\main.cpp|10|error: expected ';' before 'data'|
    E:\sicherung\ubuntu\Projekt\lernen\main.cpp|11|error: 'data' was not declared in this scope|
    E:\sicherung\ubuntu\Projekt\lernen\main.cpp|11|error: 'INPUT_KEYBOARD' was not declared in this scope|
    E:\sicherung\ubuntu\Projekt\lernen\main.cpp|28|error: 'SendInput' was not declared in this scope|
    E:\sicherung\ubuntu\Projekt\lernen\main.cpp|64|warning: unused variable 'puffer'|
    ||=== Build finished: 5 errors, 1 warnings ===|
    

    Ich arbeite mit Code::Blocks mingw.

    In der Dokumentation von SendInput steht das die Vorausetzungen:
    windows.h
    user32.lib
    user32.dll

    sind aber das gleiche steht auch bei der funktion keybd_even() und dort kommt ein solcher Fehler nicht.

    Meine 2. Frage ist wie kann ich DLL Dateien importieren in meinem Programm?

    PS:
    Ich bin neu in der WinApi 😃 under der Programmierung unter Win.



  • Schreib am besten mal deinen Code dazu ansonsten wird man dir nur schwer helfen können 😃



  • #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    void kes_s(bool mod)
    {
        INPUT data;
        data.type = INPUT_KEYBOARD;
        data.ki.wVk = VK_SPACE;
    
        bool down=false;
    
        if(!mod)
        {
            return;
        }
            while(true)
            {
                if(WM_KEYDOWN)
                {
                    if(GetAsyncKeyState(VK_SPACE))
                    {
                        if(down)
                        {
                            SendInput(1, &data, sizeof(data));
                            down=false;
                        }else{
                            down=true;
                        }
                    }
                }
            }
    }
    
    int main()
    {
    //....
    }
    

    Ich versuch das auf ein anderes Programm die Taste zu übergeben.



  • Ergänze bitte um conio.h:

    #include <windows.h>
    #include <conio.h>       //console and port I/O declarations.
    #include <iostream>
    

    HTH,
    Martin



  • Kompiliert bei mir (VS 2010) ohne Probleme.
    Scheint also ein Problem mit den headern von code::blocks oder sowas zu sein.



  • Mh immer nich der gleiche fehler auch mit #include <conio.h> .



  • Such mal in der Datei winuser.h die Funktionsdeklaration von SendInput, ist sie vorhanden?
    SendInput ist erst ab WinNT 4.0 verfügbar, also musst du vor dem Einbinden von windows.h eventuell ein

    #define _WIN32_WINNT 0x0400
    // bzw. gleich
    #define _WIN32_WINNT 0x0501 // WinXP
    #include <windows.h>
    

    schreiben.

    Btw: if(WM_KEYDOWN) kannst du rausnehmen, WM_KEYDOWN ist eine Konstante mit einem Wert ungleich 0, die Bedingung ist sowieso immer erfüllt.



  • @Vicious Falcon
    So jetzt gehts danke.


Anmelden zum Antworten