mit SendMessage text senden
-
Dieser Thread wurde von Moderator/in HumeSikkins 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.
-
Hallo,
du brauchst das Handle des Edit-Fensters von Notepad in dem man den Text schreibt. Mit FindWindowEx() kannst das Handle des Kindfensters ermitteln. Tipp: die Fensterklasse heisst "Edit".
Demian schrieb:
HWND notepad = FindWindow (NULL, "Unbenannt - Editor");
Auch hier würde ich noch die Fensterklasse angeben, da sich ja der Titel bei Notepad ändern kann:
HWND notepad = FindWindow ("Notepad", "Unbenannt - Editor");
Wenn du Spy++ hast, kannst du's benutzen, um die Fensterklassennamen zu ermitteln.
MfG
tuküe
-
danke, bin schon etwas weiter
es klappt nun einzelne buchstaben mit keybd_event senden, aber das ist natürlich zu mühsamkann mir jemand erklären wie ich mit dieser funktion umgehe bzw es bei c++ builder richtig einfüge?
habe versucht das textsend bei einem butten reinzugeben und den rest habe ich manuell in den code eingefügt, aber da bekomme ich einen fehler mit textsend ansistring etc. is not a member of tform1 und call to undefinied function textsend
hier der code:
TextSend("Unbenannt - Editor","Dies ist ein test!!\n"); void __fastcall TForm1::TextSend(AnsiString fenster,AnsiString Text) { int x; int key=' ',gross,altgr; HWND window=FindWindow(0,fenster.c_str()); SetForegroundWindow(window); for(x=0;x<strlen(Text.c_str());x++) { switch(Text.c_str()[x]) { case'0':{key='0';gross=0;altgr=0;break;} case'1':{key='1';gross=0;altgr=0;break;} case'2':{key='2';gross=0;altgr=0;break;} case'3':{key='3';gross=0;altgr=0;break;} case'4':{key='4';gross=0;altgr=0;break;} case'5':{key='5';gross=0;altgr=0;break;} case'6':{key='6';gross=0;altgr=0;break;} case'7':{key='7';gross=0;altgr=0;break;} case'8':{key='8';gross=0;altgr=0;break;} case'9':{key='9';gross=0;altgr=0;break;} case'a':{key='A';gross=0;altgr=0;break;} case'b':{key='B';gross=0;altgr=0;break;} case'c':{key='C';gross=0;altgr=0;break;} case'd':{key='D';gross=0;altgr=0;break;} case'e':{key='E';gross=0;altgr=0;break;} case'f':{key='F';gross=0;altgr=0;break;} case'g':{key='G';gross=0;altgr=0;break;} case'h':{key='H';gross=0;altgr=0;break;} case'i':{key='I';gross=0;altgr=0;break;} case'j':{key='J';gross=0;altgr=0;break;} case'k':{key='K';gross=0;altgr=0;break;} case'l':{key='L';gross=0;altgr=0;break;} case'm':{key='M';gross=0;altgr=0;break;} case'n':{key='N';gross=0;altgr=0;break;} case'o':{key='O';gross=0;altgr=0;break;} case'p':{key='P';gross=0;altgr=0;break;} case'q':{key='Q';gross=0;altgr=0;break;} case'r':{key='R';gross=0;altgr=0;break;} case's':{key='S';gross=0;altgr=0;break;} case't':{key='T';gross=0;altgr=0;break;} case'u':{key='U';gross=0;altgr=0;break;} case'v':{key='V';gross=0;altgr=0;break;} case'w':{key='W';gross=0;altgr=0;break;} case'x':{key='X';gross=0;altgr=0;break;} case'y':{key='Y';gross=0;altgr=0;break;} case'z':{key='Z';gross=0;altgr=0;break;} case'ß':{key=219;gross=0;altgr=0;break;} case'ä':{key=222;gross=0;altgr=0;break;} case'ü':{key=186;gross=0;altgr=0;break;} case'ö':{key=192;gross=0;altgr=0;break;} case'A':{key='A';gross=1;altgr=0;break;} case'B':{key='B';gross=1;altgr=0;break;} case'C':{key='C';gross=1;altgr=0;break;} case'D':{key='D';gross=1;altgr=0;break;} case'E':{key='E';gross=1;altgr=0;break;} case'F':{key='F';gross=1;altgr=0;break;} case'G':{key='G';gross=1;altgr=0;break;} case'H':{key='H';gross=1;altgr=0;break;} case'I':{key='I';gross=1;altgr=0;break;} case'J':{key='J';gross=1;altgr=0;break;} case'K':{key='K';gross=1;altgr=0;break;} case'L':{key='L';gross=1;altgr=0;break;} case'M':{key='M';gross=1;altgr=0;break;} case'N':{key='N';gross=1;altgr=0;break;} case'O':{key='O';gross=1;altgr=0;break;} case'P':{key='P';gross=1;altgr=0;break;} case'Q':{key='Q';gross=1;altgr=0;break;} case'R':{key='R';gross=1;altgr=0;break;} case'S':{key='S';gross=1;altgr=0;break;} case'T':{key='T';gross=1;altgr=0;break;} case'U':{key='U';gross=1;altgr=0;break;} case'V':{key='V';gross=1;altgr=0;break;} case'W':{key='W';gross=1;altgr=0;break;} case'X':{key='X';gross=1;altgr=0;break;} case'Y':{key='Y';gross=1;altgr=0;break;} case'Z':{key='Z';gross=1;altgr=0;break;} case'?':{key=219;gross=1;altgr=0;break;} case'Ä':{key=222;gross=1;altgr=0;break;} case'Ü':{key=186;gross=1;altgr=0;break;} case'Ö':{key=192;gross=1;altgr=0;break;} case'µ':{key='M';gross=0;altgr=1;break;} case'=':{key='0';gross=1;altgr=0;break;} case'!':{key='1';gross=1;altgr=0;break;} case'"':{key='2';gross=1;altgr=0;break;} case'§':{key='3';gross=1;altgr=0;break;} case'$':{key='4';gross=1;altgr=0;break;} case'%':{key='5';gross=1;altgr=0;break;} case'&':{key='6';gross=1;altgr=0;break;} case'/':{key='7';gross=1;altgr=0;break;} case'(':{key='8';gross=1;altgr=0;break;} case')':{key='9';gross=1;altgr=0;break;} case'+':{key=187;gross=0;altgr=0;break;} case'-':{key=189;gross=0;altgr=0;break;} case'.':{key=190;gross=0;altgr=0;break;} case',':{key=188;gross=0;altgr=0;break;} case'#':{key=191;gross=0;altgr=0;break;} case'*':{key=187;gross=1;altgr=0;break;} case'_':{key=189;gross=1;altgr=0;break;} case':':{key=190;gross=1;altgr=0;break;} case';':{key=188;gross=1;altgr=0;break;} case'\'':{key=191;gross=1;altgr=0;break;} case'´':{key=221;gross=1;altgr=0;break;} case'~':{key=191;gross=1;altgr=1;break;} case'}':{key='0';gross=0;altgr=1;break;} case'²':{key='2';gross=0;altgr=1;break;} case'³':{key='3';gross=0;altgr=1;break;} case'{':{key='7';gross=0;altgr=1;break;} case'[':{key='8';gross=0;altgr=1;break;} case']':{key='9';gross=0;altgr=1;break;} case'\\':{key=219;gross=0;altgr=1;break;} case' ':{key=' ';gross=0;altgr=0;break;} case'^':{key=220;gross=0;altgr=0;break;} case'°':{key=220;gross=1;altgr=0;break;} case'<':{key=226;gross=0;altgr=0;break;} case'>':{key=226;gross=1;altgr=0;break;} case'|':{key=226;gross=0;altgr=1;break;} case'\n':{key=VK_RETURN;gross=0;altgr=0;break;} } if(altgr==1)keybd_event(VK_RMENU, 0, 0, NULL); if(gross==1)keybd_event(VK_SHIFT, 0, 0, NULL); keybd_event(key, 0, 0, NULL); keybd_event(key, 0, KEYEVENTF_KEYUP, 0); if(gross==1)keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); if(altgr==1)keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0); } if(0==strlen(Text.c_str())) { keybd_event(' ', 0, 0, NULL); keybd_event(' ', 0, KEYEVENTF_KEYUP, 0); } }
-
Einfach das Handle zum Edit besorgen und damit dann wieder WM_SETTEXT senden
HWND hWndNotepad = FindWindow("Notepad",NULL); HWND hWndEdit = FindWindowEx(hWndNotepad,NULL,"Edit",NULL); char text[] = "Test"; SendMessage(hWndEdit ,WM_SETTEXT,0,(LPARAM)text);
-
hey wow, danke flenders
funktioniert superwie kann ich jetzt noch sonderzeichen damit ausgeben?
mich interessiert dabei vor allem returnmit keybd_event funktioniert das jedoch nicht bei dem programm (warum weiß ich nicht, aber es wird mit enter kein text (also neue zeile) eingegeben sondern es soll eben das fenster aktiv sein und dann ein return geschickt werden), vielleicht eher mit sendinput? jedoch kenn ich mich mit dem nicht aus
-
@Demian: hey... poste mal dein gesamtes programm, mag das a mal probieren!!
thxcu
-
mein gesamtes programm ist das jetzt von flenders
wobei, es ist sonst noch einiges dabei, aber pures chaos eben mit kommentaren
steht alles hier was ich "weiß" und im programm "habe"brauche noch hilfe, siehe mein letztes post
-
Für einen Zeilenumbruch setzt du in deinen String einfach ein \r\n
Für das andere Programm musst du dann natürlich die Klassennamen der FindWindow(Ex) Aufrufe anpassen und evtl. - je nach Verschachtelung - weitere FindWindowEx-Aufrufe anhängen. Wie genau die Controls verschachtelt sind findest du am besten mit Spy++ oder Winspector heraus
-
@nike.: Ich habe deine Beiträge mal herausgesplittet - passten ja nicht wirklich dazu. Hier geht es damit weiter.
-
riesendank!
winspector ist wirklich spitze, damit kriegt man alles raus und kann es anschließend mit SendMessage schicken
danke, bei mir haut alles hin von den tasten