SendInput(...)



  • Was muss man wo einbinden, damit SendInput(...), INPUT ... erkannt wird? Compiler weigert sich.



  • [ Dieser Beitrag wurde am 23.11.2002 um 14:45 Uhr von Erhard Henkes editiert. ]



  • Kommentarlos:

    #include <WinAble.h>

    MfG veganza



  • void CTastatur001View::OnLButtonDown(UINT nFlags, CPoint point) 
    {
        INPUT Input[1];
        Input[0].type   = INPUT_KEYBOARD;
        Input[0].ki.wVk = VK_LCONTROL;
        Input[1].type   = INPUT_KEYBOARD;
        Input[1].ki.wVk = VK_RCONTROL;
        SendInput( 2, Input, sizeof(Input) );
    
        CView::OnLButtonDown(nFlags, point);
    }
    

    Bricht mit Error ab. Kann das jemand richtig machen, oder korektes Bsp. posten ? Finde kein Bsp. von SendInput.

    In MSDN finde ich nur winuser.h. Wieso winable.h ?

    Warum soll man eigentlich keybd-event nicht mehr benutzen. istr viel simpler.



  • @;
    Gehe zurück nach C 🙄

    INPUT Input[1];

    Ein Array mit der Größe 1 ... und Du willst 2 Elemente "reinschreiben" 😃 😃 😃

    Würde die 1 durch eine 2 ersetzen... außerdem wäre es toll, wenn Du die Art des Fehlers genauer beschreiben würdest. Für die zukünftigen Postings 😉

    Zum #include Thema...
    winuser.h steht ja eigentlich überhaupt nicht zur Debatte... das steht in der MSDN :

    Declared in Winuser.h, include Windows.h also wenn schon, dann
    #include <windows.h> kann sein, daß es damit auch funktioniert !!!

    MfG veganza



  • So sollte es gehen: 😉

    INPUT Input[2];
    Input[0].type   = INPUT_KEYBOARD;
    Input[0].ki.wVk = VK_LCONTROL;
    Input[1].type   = INPUT_KEYBOARD;
    Input[1].ki.wVk = VK_RCONTROL;
    SendInput( 2, Input, sizeof(INPUT) );
    

    Warum man winable.h einbinden muss, ist mir auch noch nicht völlig klar. INPUT findet man sowohl in winuser.h als auch in winable.h



  • @Erhard

    Ein Lösungversuch zum SendInput #include Thema:

    Was muß includiert werden um SendInput() zu nutzen ??? Laut "alter" MSDN winuser.h und laut "neuer" MSDN windows.h !!!

    windows.h includiert ihrerseits winuser.h
    In der winuser.h ist die SendInput() Funktion und die benötigten Strukturen deklariert.

    Bei MFC Anwendungen muß man ja bekanntlich nicht extra windows.h includieren, da dies schon "automatisch" mit includiert ist.

    Auch in der winable.h werden die Strukturen und die SendInput() Funktion deklariert mit dem einen Unterschied zur winuser.h:

    in der winable.h ist der Deklarations-Block gültig wenn

    #if (_WIN32_WINNT < 0x0403) erfüllt ist,

    in der winuser.h[b] wenn
    [b]#if (_WIN32_WINNT > 0x0400)

    Ist das Rätsel jetzt gelöst ???

    MfG veganza



  • @Veganza: Das habe ich auch schon heraus gefunden. Mich würde aber darüber hinaus interessieren, was dieser Umstand soll. Wenn MS die Leute vom bequemen keybd_event(...) zu SendInput(...) bewegt, warum dann ein #include von winable.h, das in MSDN noch nicht einmal angezeigt wird. Dort findet sich nicht der geringste Hinweis darauf. Ich habe diese Header-Datei gefunden, indem ich in Visual Studio nach der Definition gesucht habe. Warum wird dies nicht in winuser.h so definiert, dass man einfach nichts extra machen muss, und wenn schon, warum kein Hinweis in MSDN? Das ist die wirkliche Frage. 😕



  • bindet doch einfach windows.h ein, damit wird winuser.h auch eingebunden und dann müsst ihr noch _WIN32_WINNT richtig definieren, dann klappt's doch auch. das ist ja alles, weil die funktion erst bei 98 und bei Windows NT mit SP3 gibt.



  • @Erhard

    Vielleicht sollte man mal über ein SDK-Update nachdenken ( Ich für meinen Teil bin momentan wieder auf dem "SDK-Auslieferungs-Stand" MSDEV 6.0 -> nix gepatcht... außer MSDEV selbst).

    Vielleicht korrigiert MS ja da seinen "Fehler"... bist Du mit der neuesten SDK Version unterwegs ??? ( letzter Stand für den 6er war doch 11/2001 oder gibt es noch eine neuere SDK ??? )

    @??

    bindet doch einfach windows.h ein, damit wird winuser.h auch eingebunden

    Machen Wir doch 😮

    MfG veganza

    [ Dieser Beitrag wurde am 24.11.2002 um 21:36 Uhr von veganza editiert. ]


Anmelden zum Antworten