keybd_event: wirkungslos :-(
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich hab das auch mal versucht. wäre echt nett, wenn jemand einen quellcode posten könnte!
-
#include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { char Text[900]={"hallo"}; int Anzahl=strlen(Text); int i; for(i=0;i<Anzahl;i++) { keybd_event(VkKeyScan(Text[i]),0,0 , 0); keybd_event(VkKeyScan(Text[i]),0, KEYEVENTF_KEYUP,0); } return 0; }Versuch den Sourcecode mal
,Felix
-
vielen Dank für die Antwort! leider funktioniert das Programm bei mir nicht. Meine uralte Version vom Microsoft Visual C++ sagt schlicht und einfach, dass das Programm nicht ausgeführt werden kann, gibt jedoch gleichzeigt an, 0 Fehler und 0 Warnungen gefunden zu haben. Bloodshed DEV-C++ kann das programm ausführen, allerdings hat es keine Auswirkung und es wird lediglich die Eingabeaufforderung für den Bruchteil einer Sekunde eingeblendet.
Hab ich was falsch gemacht? Ich habe den Quellcode bei beiden Kompilern jedes Mal sowohl als Win32 Anwendung als auch als Win32 Konsolenanwendung eingefügtmfg
SupeRalF
-
Zeig mal das Programm das du bis jetzt hast.
Grundsätzlich funktioniert das Verschicken von Scancodes über SendInput so:
INPUT i; memset(&i, 0, sizeof(i)); i.type = INPUT_KEYBOARD; i.ki.wScan = ::MapVirtualKey(VK_F1, 0); // VK_F1 durch den gewünschten virtual key code ersetzen // oder gleich den ganzen MapVirtualKey Aufruf durch einen fixen Scancode ersetzen i.ki.dwFlags = KEYEVENTF_SCANCODE; ::SendInput(1, &i, sizeof(INPUT)); // key down schicken i.ki.dwFlags |= KEYEVENTF_KEYUP; ::SendInput(1, &i, sizeof(INPUT)); // key up schicken
-
Bei mir klappt mein Code. Ich hab Dev-Cpp. (Datei->Neu->Projekt->Windows Application->C-Projekt->Speichern->Sourcecode einfügen...)
Vielleicht hast du's anders gemacht probiers mal so.
Felix
-
Felix15 schrieb:
Bei mir klappt mein Code. Ich hab Dev-Cpp. (Datei->Neu->Projekt->Windows Application->C-Projekt->Speichern->Sourcecode einfügen...)
Vielleicht hast du's anders gemacht probiers mal so.
Felix
So funzt es bei mir auch! ich wusste nur nicht, dass du mir einen C code angedreht hast und habe es i8mmer als C++ behandelt. erstmal vielen dank, leider hab ich nur C nicht drauf, deshalb muss ich mich noch einmal mit dem code von hustbaer auseinandersetzten...
[EDIT:]
@ hustbare: ist dein code auch ein C code? ich hab sage und schreibe 19 Fehler und ein paar warnungen an den kopf geworfen bekommen^^
-
C-Code? C++-Code? Huch?
Fast alles was gültiger C-Code ist ist auch in C++ OK. Du hast ja nicht viel Ahnung von der Sache... :^)Nein, mein Code ist schon C++ (was auch leicht an den "::" zu erkennen ist - was in C nicht erlaubt ist), du musst das was ich gepostet habe natürlich an der richtigen Stelle in deinem Programm einfügen und zusehen dass z.B. windows.h auch inkludiert worden ist etc.
Das was so dasteht einfach alleine in ein File gepackt funktioniert natürlich nicht.Bloss werde ich dir hier kein fertiges Programm schreiben, wenn du das haben willst poste doch im "Projekte" Forum oder wie das hier heisst...
-
hustbaer schrieb:
C-Code? C++-Code? Huch?
Fast alles was gültiger C-Code ist ist auch in C++ OK. Du hast ja nicht viel Ahnung von der Sache... :^)Und warum konnte der quellcode von Felix dann nur ausgeführt werden, wenn ich ihn als C-code kompiliert habe? als C++ Projekt hat der code einen fehler verursacht...
-
SupeRalF schrieb:
hustbaer schrieb:
C-Code? C++-Code? Huch?
Fast alles was gültiger C-Code ist ist auch in C++ OK. Du hast ja nicht viel Ahnung von der Sache... :^)Und warum konnte der quellcode von Felix dann nur ausgeführt werden, wenn ich ihn als C-code kompiliert habe? als C++ Projekt hat der code einen fehler verursacht...
Frag mich nicht sowas, bei mir compiliert das als C++.
Wieso sind Bananen krumm?
-
Wenn du in MSDEV98 oder auch VS2005 Dateien mit der Endung *.c dem Projekt hinzufügst, so werden diese Dateien mit einem C-Compiler kompiliert, in dem C++ nicht zulässig ist.
Wenn du *.cpp als Endung nimmst, so wird der C++-Compiler genutzt, welcher C- und C++-Code kompiliert.