Probleme mit SendInput

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
darkangel
Beiträge: 17
Registriert: Sa Jan 17, 2009 9:26 pm
Kontaktdaten:

Probleme mit SendInput

Beitrag von darkangel » Do Apr 09, 2009 11:14 am

Servus
Ich habe ein kleines Problem mit - SendInput -
Meines Wissens nach, muss man als 3. Parameter der Funktion die Groeße des Inputs angeben.
Doch wie genau kann ich diese Groeße herausfinden?

Schon einmal DANKE im Vorraus.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Probleme mit SendInput

Beitrag von fat-lobyte » Do Apr 09, 2009 11:26 am

Was für SendInput?
Welches System?
Welche Bibliothek?
Welche Version?
darkangel hat geschrieben:Meines Wissens nach, muss man als 3. Parameter der Funktion die Groeße des Inputs angeben.
Doch wie genau kann ich diese Groeße herausfinden?
Indem man die Referenz oder Anleitung der Bibliothek liest.

Kleiner Tip: eine Frage, die man mit 5 weiteren Fragen beantworten muss, ist keine gute Frage. Zweiter versuch, diesmal etwas besser bitte.

http://www.proggen.org/doku.php?id=faq:frageformulieren
Haters gonna hate, potatoes gonna potate.

darkangel
Beiträge: 17
Registriert: Sa Jan 17, 2009 9:26 pm
Kontaktdaten:

Re: Probleme mit SendInput

Beitrag von darkangel » Do Apr 09, 2009 12:40 pm

Ok.
Also..
Ich wollte eigentlich eine Tastenkombination/Tastatureingaben simulieren.
Und irgendwo in Google habe ich dann eben gelesen, dass sich - SendInput - dafuer eignen wuerde.
Ich benutze Windows XP.
Zwar habe ich die Beschreibung, der Funktion
http://msdn.microsoft.com/en-us/library/ms646310.aspx
und die Virtual-Key Codes dazu
http://msdn.microsoft.com/en-us/library ... S.85).aspx
gefunden.

Doch wie schon erwaehnt, habe ich keine Ahnung, womit ich den 3. Parameter fuellen soll.
Also habe ich es einfach mal so versucht:

Code: Alles auswählen

#define _WIN32_WINNT 0x0501
#include<windows.h>

int main()
{
    SendInput(1,
                0x44,
                sizeof(0x44));
}
Aber, wer haette das gedacht, es funktioniert nicht.
Der Compiler meldet: error: invalid conversion from 'int' to 'tagINPUT*'
Auf - #define _WIN32_WINNT 0x0501 - hat mich irgendein Eintrag in Google gebracht.
Zwar verstehe ich diese Zeile nicht ganz, doch muss es irgendetwas mit der Deklaration von - SendInput - zu tun haben.
Oder?
Jedenfalls wird die Funktion sonst nicht erkannt.


Ist diese Beschreibung besser?
Ich entschuldige mich jedenfalls fuer meinen vorherigen Eintrag^.^

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Probleme mit SendInput

Beitrag von Xin » Do Apr 09, 2009 1:16 pm

Es ist auf jedenfall notwendig, dass Du beschreibst, woher eine Funktion kommt, wenn es nicht grade printf ist.

Code: Alles auswählen

UINT SendInput(      
    UINT nInputs,
    LPINPUT pInputs,
    int cbSize )
Da muss ein Zeiger auf eine INPUT Struktur rein, Du packst die 44 rein - was immer die 44 ist.

Daher auch die Fehlermeldung, dass ein int (die 44) kein Zeiger auf eine Input-Struktur ist.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Probleme mit SendInput

Beitrag von fat-lobyte » Do Apr 09, 2009 1:20 pm

Schon viel besser...
darkangel hat geschrieben:Auf - #define _WIN32_WINNT 0x0501 - hat mich irgendein Eintrag in Google gebracht.
Bitte nicht irgendwelchen Code kopieren ohne ihn zu verstehen! Das kann zu großen Problemen führen. Vor allem gilt in C die Faustregel: alles was mit __ Anfängt gehört dem Compiler und soll tunlichst nicht angegriffen werden. Von solchen grundlegenden definitionen bitte die finger lassen. Aber immerhin, hast schon gegoogelt und versucht die Lösung zu finden. *Thumbs Up*
darkangel hat geschrieben: Zwar habe ich die Beschreibung, der Funktion
http://msdn.microsoft.com/en-us/library/ms646310.aspx
und die Virtual-Key Codes dazu
http://msdn.microsoft.com/en-us/library ... S.85).aspx
gefunden.

Doch wie schon erwaehnt, habe ich keine Ahnung, womit ich den 3. Parameter fuellen soll.
Na dann lies doch deine eigenen Links!
MSDN hat geschrieben:pInputs [in] Pointer to an array of INPUT structures. Each structure represents an event to be inserted into the keyboard or mouse input stream.
Sagt doch schon alles, oder? Du brauchst erstmal eine Struktur vom typ INPUT. Diese richtest du dann richtig ein und übergibst einen Zeiger darauf auf die Funktion. Was die Struktur ist und wie man sie einrichtet, bitte der MSDN entnehmen.
darkangel hat geschrieben:Zwar verstehe ich diese Zeile nicht ganz, doch muss es irgendetwas mit der Deklaration von - SendInput - zu tun haben.
Oder?
Richtig. Wie gesagt, die Funktion nimmt einen Zeiger auf eine Struktur als Argument und kein Integer.

Versuchs mal so:

Code: Alles auswählen

    #include<Windows.h> /* Ich glaube das gehört groß...*/

    int main()
    {
        INPUT inp;
        /* hier dein Keyboardinput struct füllen. */

        SendInput(1,
                    &inp,
                    sizeof(inp));

        return 0; /* Eigentlich nicht notwendig aber bitte guten Stil befolgen und auch der main funktion einen return wert geben. */
    }
Bitte lies dir genau die Referenz durch, dort steht alles genau erklärt.
darkangel hat geschrieben:Ist diese Beschreibung besser?
Ich entschuldige mich jedenfalls fuer meinen vorherigen Eintrag^.^
Ja viel besser. Da brauchst du dich nicht zu entschuldigen, reicht schon wenn dus ab jetzt besser machst. Du musst nur verstehen, aus deiner ursprünglichen Frage hat man wirklich nichts herauslesen können...

ps.: WinAPI und MSDN suxx :x
Haters gonna hate, potatoes gonna potate.

Antworten