Eingabe an CEdit senden
-
Hi @all,
wie ich vor kurzem erfahren habe kann man ja mit der SendInput-Methode Tastendrücke simulieren. Ich möchte diese jedoch an ein bestimmtes Eingabefeld senden, auf das ich bereits einen Zeiger besitze.
Und da dieses CEdit ja mal nicht angeählt sein könte, oder ein anderes Fenster aktiv werden könnte, oder dieses Eingabefeld ganz einfach den Eingabefocus verlieren könnte, während ich meine SendInput -Tastendrücke an das Fenster sende, möchte ich das gerne über die Klassenmethoden des Zeiger auf dieses Fenster (CEdit-Zeiger) realisieren, damit während dem Vorgang ja nichts schief läuft _.
Ich habs deshalb auch schon mit der SendMessage-Methode probiert, was auch funktionierte-jedoch hab ich es nicht(!) geschafft, dem CEdit die Eingabetaste zu simulieren...warum auch immer...:-)
Könntet ihr mir da vielleicht helfen ?
Wäre echt nett
CMan
-
SetSel und ReplaceSel?
Oder SetWindowText
SendInput ist für diese Aufgabe übrigens Quatsch.
-
Ja, danke aber die Befehle kenne ich leider schon... _
Ich glaube, ich habe des auch etwas schlecht erklärt...
Ne also des is so...des mit der Eingabe des Textes hat ja schon wunderschön geklappt, jedoch wird die Eingabe in dieses Textfeld mit der Enter/Return-Taste bestätigt...und genau dieses Event möchte ich auslösen. Und ich hab ehrlich gesagt keine Ahnung wie des funktionieren soll. Ich hab mir schön überlegt, dass ich den tastencode der Entertaste (also 13) über die SendMessage-Funktion WM_KEYDOWN an das
CEdit Feld sende aber des hat nicht geklappt-nur bei mehrzeiligen Textfelder.Hm...mir scheint des wird etwas schwieriger. weißt du vielleicht wie des funktionieren könnte ?
Gruß CMan
-
Hä?
Was willst du denn erreichen?
-
Ich will erreichen, dass ...also..moment...ein Beispiel: _
Ich habe ein ChatProgramm:
ich gebe in das Eingabefeld des Chatprogramms meine Nachricht ein, z.B.
HalloDann bestätige ich mit der Entertaste das Eingegebene, um die Nachricht zu versenden.
...ist ja ganz einfach-das Prinzip von warscheinlich jedem Chatprogramm :). Ich möchte aber dass nicht ich selbst per Tastatur das Wörtchen "Hallo" mühsam *lol* eingeben muss, dann die Entertaste drücke, etc. und somit -um es einfach auszudrücken - ich selbst das Chatprogramm per Hand steuere, sondern dass das mein C++-Programm für mich erledigt.
Verstehst du was ich meine ?
-
Ja. Was spricht gegen
SendMessage(hwndEdit,WM_KEYDOWN,VK_RETURN,0);
?
-
Mit dem Code hab ich's auch schon probiert, aber des geht leider nicht...:-(
ich weiß auch net woran des liegt.
Also an dem ChatProgramm liegts sicher net, dass ist sicher.
Aber...hm..woran dann ?
Welchen alternativen befehl gäbs denn noch ?
-
hi CMan ich hab auch schonmal ein Chatprogramm mit meinem Programm ferngesteuert. Zum Spammen.
Dort hab ich soweit ich weiß auch das benutzt was dEUs gepostet hat. Kann man das Chatprogramm irgendwo downloaden damit ich es mal ausprobieren kann?
-
Hast du mal versucht das Enter nicht direkt an das CEdit zu senden, sondern an den Dialog?
Es könnte doch sein das im Dialog ein Control als Standard definiert ist (die zum Beispiel unsichtbar ist) und bei Enter ausgeführt wird.
Wenn ich bei einem neuen Dialog zum Beispiel den OnOK-Button lösche, wird die Methode beim drücken von Enter trotzdem ausgeführt..
-
Eben, auch dann, wenn der eingabefokus im editfeld ist...
-
hmm stimmt, dann müsste das ja eigentlich durchgereicht werden..
-
*lol*...oh Mann ihr habt recht...also ich weiß ja net obs daran liegt aber ich kanns mir denken _. Is auf jedenfall 'ne Super Idee-darüber hab ich selbst noch gar nicht drüber nachgedacht.
Yeah vielen Dank so müsste es gehen
Schönen Gruß
CMan
-
-
lass uns teilhaben an deinem Erfolgserlebnis
-
Oh naja...also irgendwie ging des doch net...*schnief*
Ich hab echt keine Ahnung an was des etz noch liegen könnte, des will einfach net funktionieren.Naja schade
aber danke nochmals...
-
ist das chatprogramm von dir selbst und dieses auslösen ein teil vom chatprogramm?
wenn ja kannst du doch einfach die behandlungsroutine (wahscheinlich OnChar()) direkt mit dem parameter VK_RETRUN aufrufen. dann ist es nicht nötig messages zu verschicken.
wenn es in nem anderen programm ist fällt aber auch nix besseres als der simmlierte tastendruck den du ja erwähnt hast ein.
-
Nene des Programm is net von mir...sonst wüsste ich warscheinlich wie's geht.._...hm naja aber des scheint net zu gehen warum auch immer.
Ich kann euch ja mal die Addresse von dem Chat geben-vielleicht kennt ihn ja eh der ein oder andere.Des Chatprogramm is von der SpinchatAG... zu finden unter http://gong.spinchat.de.
Mein C++-Proggi sollte halt selbstständig eine Nachricht in den Raum in dem ich mich gerade befinde reinschreiben können. Aber des funzt leider net.
Ich würde mich echt freuen wenn jemand rauskriegen würde,
wie des geht...Vielen Dank und 'n schönen Gruß
CMan
-
ich hab ein programm dafür (wenn du willst schick ichs dir per msn). es kann 2 verschiedene nachrichten abwechselnd in einem von dir bestimmten abstand an ein von dir bestimmtes fenster schicken. aber du kannst nich parallel am pc arbeiten weil es den inputfokus auf das fenster setzten muss in das es eingeben soll.
man kann sich sowas aber auch leicht selbst programmiern:
#include <stdio.h> #include <conio.h> #include <windows.h> int main() { char fenstername[81], str1[81], str2[81]; int warten; printf("Fenstername eingeben: "); gets(fenstername); printf("String 1 eingeben: "); gets(str1); printf("String 2 eingeben: "); gets(str2); printf("Wartezeit eingeben: "); scanf("%d", &warten); printf("\nZum Beenden eine beliebige Taste druecken"); int i = 0; while(!kbhit()) { HWND hWin = FindWindow(NULL, fenstername); SetForegroundWindow(hWin); // Focus auf gewuenschtes Fenster setzen char* str; if(++i%2) str = str1; else str = str2; for(int i = 0; str[i] != '\0'; i++) { keybd_event(VkKeyScan(str[i]), 0, 0, NULL); //taste drücken... keybd_event(VkKeyScan(str[i]), 0, KEYEVENTF_KEYUP, 0); // und wieder loslassen } keybd_event(VK_RETURN, 0, 0, NULL); // ENTER taste drücken... keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); Sleep(warten * 1000); } return 0; }
dieses programm macht genau das gleiche wie das das ich hab bis auf, dass es auf der konsole is und das es keine groß-klein-schreibung kann. (falls du groß kleinschreibung willst kann ich dir das auch noch schreiben...)
ich habs auch mit deinem chat getestet...funktioniert
-
Erst mal vielen Dank dass du dir so viel Mühe gemacht hast :-),jedoch
so weit war ich leider auch schon....
Aber genau des bräuchte ich nämlich-> eben dass des Fenster den Eingabefocus nicht verliert,wenn man parallel arbeitet. Also ich müsste des quasi über einen Zeiger auf des Eingabefeld vom Main-Dialog regeln, damit auch wirklich des Fenster die Eingabe erhält...und nicht ein anderes, das mir währenddessen möglicherweise in die Arbeit funkt _
Und des is des schwierige... leider...:-(Du weißt auch net wie man des über nen Zeiger regeln könnte oder ?
Also des mit der VM_KEYDOWN über die SendMessage-Funktion des geht ja komischerweise schon mal nicht, warum auch immer...Schönen Gruß und Danke nochmals
CMan
-
Läuft dieser Chat über den Browser oder ist das ein eigenes Programm?