[Gelöst] String/Zeichen an fremden Prozess senden



  • Hallo!
    Ich möchte ein Zeichen oder String an einen fremden Prozess senden, dass der Prozess dann so behandelt als ob es ein Tastendruck von der Tastatur wäre.

    Mein Problem:
    Ich habe schon einige Sachen ausprobiert wie: PostMessage, SendInput oder auch keybboardevent. Ich konnte zwar einen String/Zeichen an Notepad senden aber nicht an die Anwendung an die ich die Tastensimulation ursprünglich senden wollte.
    (Heros of Newerth, soll chat öffnen und Missing schreiben und bestätigen).

    Was mich auch noch nebenbei interessieren würde wäre wie es die Logitech Sofware für deren Tastaturen funktionieren, weil die den Tastendruck korrekt an die Anwendung sendet und ankommt. Hab schon etliches versucht aber komm nicht weiter.

    Wäre für eine Antwort bzw mit welchen Mittel man mein Problem zu lösen ist sehr dankbar,

    MFG Unknown



  • Lyie schrieb:

    Heros of Newerth, soll chat öffnen und Missing schreiben und bestätigen

    Eine Genehmigung, für solch eine Manipulation, hast du vom Hersteller?



  • SendInput() sollte afaik eigentlich funktionieren. Wie hast dus denn versucht?



  • @law&order 😉 jo hab den Hersteller angerufen geht klar :).

    Mit SendInput(); hab ich es folgendermaßen realisiert

    void HON::send_text(string &message)
    {
    if(this->compare_windows(this->hWnd) == false)	return;	//HON ist nicht im Vordergrund, führe Textnachricht nicht aus
    	//Definiere und erstelle eine INPUT Struktur
    	INPUT InputData;
    	InputData.type = INPUT_KEYBOARD;
    	InputData.ki.wVk = 0;
    	InputData.ki.dwFlags = KEYEVENTF_UNICODE;
    	InputData.ki.time = time(NULL);
    	InputData.ki.dwExtraInfo = 0;
    
    	//Öffen Eingabefeld mit "Enter"
    	this->press_ENTER();
    	//Schreibe Text in Eingabefeld
    	for(int i = 0; i < message.size(); ++i){ 
    		InputData.ki.wScan = message[i];
    		SendInput(1, &InputData, sizeof(InputData));
    	}
    	//Bestätige Eingabe mit Enter
    	this->press_ENTER();
    	return;
    }
    

    Es liegen keine Compilerfehler/Warnungen vor alle Objekte/Variablen sind korrekt initialisiert. Es funktioniert auch bei z.B Texteditoren aber nicht bei Anwendungen wie HON. Das Handle hol ich ganz normal über FindWindow();



  • Läuft das Spiel vielleicht als Administrator?



  • Jo genau hast recht läuft als admin. Jetzt wo du es sagst, meine Testversuche habe ich ja mit dem Texteditor gemacht und den hab ich nicht als Admin gestartet und da hats funktioniert.

    Kann es daran liegen? Wenn ja wieso? Und wie kann ich das Problem umgehen?



  • Hahahaha danke @dot du bist !!der!! beste!! Und ich "Idiot" hab ewig umeinander probiert, ich habs einfach net verstanden warum das nicht geht :)))

    Hat nur daran gelegen das HON als Admin ausgeführt wird, jetzt habe ich mein Programm auch als Admin ausgeführt und die Befehler kamen optimal an!

    Wär vllt noch toll so vom Background her, wieso die Befehle nicht ankommen wenn etwas als Admin gestartet wurde.

    Ansonsten danke

    MFG Lyie





  • Danke für den Link!


Anmelden zum Antworten