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ühsam

    kann 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 super

    wie kann ich jetzt noch sonderzeichen damit ausgeben?
    mich interessiert dabei vor allem return

    mit 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!!
    thx

    cu



  • 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.



  • @flenders

    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 😃


Anmelden zum Antworten