Programm, das die ganze Zeit H drückt



  • Hallo allerseits,
    ich habe ein vor ein Konsolenprogramm zu schreiben, das die ganze Zeit die Taste H anschlägt.

    Zitat aus der Website von Microsoft:
    UINT SendInput(
    __in UINT nInputs,
    __in LPINPUT pInputs,
    __in int cbSize
    );
    

    Frage hierzu: ^
    Wie kommt man von diesem Code-Ausschnitt (oben) auf den Sourcecode von unten, woher weiß man wie man diese Dinge die in Library stehen anwenden kann?

    Sourcecode:
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
    #include <time.h>
    
    int main()
    {
    	INPUT InputData;
    	int iEvents;
    
    	InputData.type = INPUT_KEYBOARD;
    	InputData.ki.wVk = 0x48;
    	InputData.ki.wScan = 35;
    	InputData.ki.dwFlags = 0;
    	InputData.ki.time = time(NULL);
    	InputData.ki.dwExtraInfo = 0;
    
    	iEvents = SendInput(1, &InputData, sizeof(InputData));
    
    	return 0;
    	system("PAUSE");
    
    }
    
    Ausschnitt aus dem Quellcode
    INPUT InputData;
    	int iEvents;
    
    	InputData.type = INPUT_KEYBOARD;
    	InputData.ki.wVk = 0x48;
    	InputData.ki.wScan = 35;
    	InputData.ki.dwFlags = 0;
    	InputData.ki.time = time(NULL);
    	InputData.ki.dwExtraInfo = 0;
    
    	iEvents = SendInput(1, &InputData, sizeof(InputData));
    

    Fragen/Verständnisprobleme:

    1. Warum steht ganz am Anfang: INPUT InputData;?
    2. Warum muss man in Zeile 2 iEvents intialisieren?
    3. Warum steht da drunter immer InputData (mit etwas dazu gefügt wie InputDate.ki.wVk)?

    Woher weiß man wann und was man zu InputData hinzufügen muss?

    4. Was bedeuten die einzelnen Dinge die hinter InputData stehen und woher weiß der Programmierer wann er was dahinter zu schreiben hat?
    5. iEvents = SendInput(1, &InputData, sizeof(InputData)); --> Was bezweckt das ???

    Vielen vielen Dank im Voraus für Antworten und Bemühungen
    Mit freundlichen Grüßen
    cpprogger



  • nimm doch einfach erst was einfacheres:

    void main()
    {
        while(true)
        keybd_event(0x48,0,0,0);
    }
    

    ansonsten kannste auch alles auf msdn nachlesen:
    http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx



  • Nein, bleib lieber gleich bei SendInput(), keybd_event() ist veraltet.

    Das iEvents brauchst du nur, wenn du mehrere Events auf einmal versenden willst. Was alles in das INPUT Struct rein muss steht doch auch auf der verlinkten msdn Seite http://msdn.microsoft.com/en-us/library/ms646270%28v=VS.85%29.aspx.


Anmelden zum Antworten