Texteingabe in Textfeldern von anderen Anwendungen & Sonderzeichen(neu)
-
Ist das Fenster ein normales Edit Control? Wenn ja, wieso machst du das nicht mit WM_SETTEXT?

-
Lies dir doch mal die Doku zu dieser Struktur durch:
wVk
Specifies a virtual-key code. The code must be a value in the range 1 to 254. The Winuser.h header file provides macro definitions (VK_*) for each value. If the dwFlags member specifies KEYEVENTF_UNICODE, wVk must be 0.
wScan
Specifies a hardware scan code for the key. If dwFlags specifies KEYEVENTF_UNICODE, wScan specifies a Unicode character which is to be sent to the foreground application.Oder auf deutsch:
Du setzt wVK auf 0, dwFlags auf KEYEVENTF_UNICODE (bzw. KEYEVENTF_UNICODE|KEYEVENTF_KEYUP) und wScan auf das zu übergebende Sonderzeichen.
-
Also müsste es so klappen??
tagINPUT* inputt = new tagINPUT; tagKEYBDINPUT* keybinput = new tagKEYBDINPUT; inputt->type=INPUT_KEYBOARD; inputt->ki=*keybinput; keybinput->wVk=0; keybinput->dwFlags=KEYEVENTF_UNICODE|KEYEVENTF_KEYUP; keybinput->wScan='A'; SendInput(1,inputt,sizeof(inputt));
-
Also ich komme mit meinem Code, nicht weiter!
Könnte mir bitte jemand weiter helfen?
-
TheCaleb schrieb:
Also ich komme mit meinem Code, nicht weiter!
Könnte mir bitte jemand weiter helfen?Kristallkugel habe ich hier an meinem Arberitsplatz keine.
Was geht denn nicht?
-
Also ich versuche mit SendInput eine Tastatureingabe zu simulieren.
Sprich, ich möchte gerne in einem anderen Programm einen Text eingeben lassen, wenn ich das jeweilige Eigabefeld makiert habe und das sollte möglichst auch mit Sonderzeichen gehen, sonst würde ich ja die Funktion keybd_event verwenden.Doch, wie muss ich das genau machen?
Bis jetzt habe ich Objekte oder wie man das nennen soll von den Strukturen erzeugt und die einzelnen Variabeln, von denen mit den jeweiligen Daten gefüllt, wie du unten sehen kannst.
Doch was mache ich falsch bzw was muss ich noch machen um mit SendInput zu arbeiten, so wie ich es mir erwünscht habe?tagINPUT* inputt = new tagINPUT; tagKEYBDINPUT* keybinput = new tagKEYBDINPUT; inputt->type=INPUT_KEYBOARD; inputt->ki=*keybinput; keybinput->wVk=0; keybinput->dwFlags=KEYEVENTF_UNICODE|KEYEVENTF_KEYUP; keybinput->wScan='A'; SendInput(1,inputt,sizeof(inputt));
-
TheCaleb schrieb:
tagINPUT* inputt = new tagINPUT; tagKEYBDINPUT* keybinput = new tagKEYBDINPUT; inputt->type=INPUT_KEYBOARD; inputt->ki=*keybinput; keybinput->wVk=0; keybinput->dwFlags=KEYEVENTF_UNICODE|KEYEVENTF_KEYUP; keybinput->wScan='A'; SendInput(1,inputt,sizeof(inputt));Ich würde Dir erstmal empfeheln die Grundstrukturen von C++ zu lernen.
INPUT ist eine Struktur, die eine union enthält.
Du musst nicht alles mit new anlegen. Und schon gar nicht die innere Struktur?Hast Du mal in die MSDN gesehn?
Hast Du mal in die FAQ gesehen?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-165868-and-highlight-is-sendinput.html
-
Danke, ich habe es nun geschafft!!

-
Ich wandel ein AnsiString wo nur ein ä drin steht mit ParamsEncode von Indy um, sodass es in UniCode (%E4) steht.
Wie bekomme ich es hin, %E4 aus einem AnsiString in 0xE4 umzuwandeln, sodass ich es wScan übergeben kann??
-
Indem man den Text parsed und an dieser Stelle z.B. strtol mit Basis 16 verwendet.
-
Vielen Dank für den Tipp!!