Ein Text an andere Anwendung senden
-
Guten Tag,
ich möchte gerne den Text von einem Editfeld an z.B den notepad senden!
Wie genau stelle ich das an??
Bitte nicht allzu komplizierte Lösungen =).
Ich habs mit einer for Schleife versucht aber festgestellt das ich ein Fehler gemacht habe!char *Message=Edit13->Text.c_str();
for(int i=1;Message[i]!='\0';i++)
{
keybd_event(*Message[i], 0, 0, 0);
keybd_event(*Message[i], 0, KEYEVENTF_KEYUP, 0);
}compiled hat der Borland das aber mit sicherheit hab ich das falsch gemacht, der Textinhalt vom Editfeld war test und er lieferte mir die ganze Zeit über den Wert 5.
Ist bestimmt ein ziemlich dummer Anfängerfehler den ich getan habe, aber deswegen freue ich mich ja das es so ein Forum mit so hilfsbereiten Menschen gibt.
Mfg. Sven
-
Ich würd das gleich mit SendMessage() machen, is viel einfacher.
Beispielprogramm:
#include <windows.h> int main() { HWND hWndNotepad = FindWindow("Notepad", NULL); HWND hWndNotepadE = FindWindowEx(hWndNotepad, NULL, "EDIT", NULL); char *str = "TEST"; if(hWndNotepadE) SendMessage(hWndNotepadE, WM_SETTEXT, 0, (LPARAM)str); return 0; }
-
Danke für die recht schnelle Antwort!
Ich möchte das er diese Nachricht aber aus einem Editfeld entnimmt
muss ich dann nur einfach
char *str =Edit13->Text.c_str(); schreiben???Mfg. Sven
-
Ja, sollte eigentlich hinhaun.
-
Hallo,
ich habe dies mal versucht jedoch hat es nicht geklappt, ich habe ins Editfeld test geschrieben und der notepad hat mir immer zufallszeugs geschriebenz.b. ˜„˜„˜ïïï
HWND hWndNotepad = FindWindow("Notepad", NULL);
HWND hWndNotepadE = FindWindowEx(hWndNotepad, NULL, "EDIT", NULL);char *str = Edit13->Text.c_str();
if(hWndNotepadE)
SendMessage(hWndNotepadE, WM_SETTEXT, 0, (LPARAM)str);
-
Hm seltsam.
Bringts was wenn du dieses Edit13->Text.c_str() direkt in die SendMessage() Funktion anstelle des 'str' einsetzt?
-
Ja danke das hat komischerweise funktioniert
-
Das kann und darf so garnicht funktionieren, da die Adresse auf den String in einem anderen Prozess liegt...
Der Zufall der es funktionieren lässt liegt vielleicht dadran, dass der Speicher in der borlndmm.dll liegt.
-
Hallo,
ja wie es der Zufall nunmal will war es reine Glückssache.
Nachdem ich den Pc neu gestartet habe und neu compiled habe hat es wieder nicht funktioniert.Bitte um weitere Ratschläge oder Lösungen.
Mfg. Sven
-
Anstelle von
char *str = Edit13->Text.c_str();
mach lieber:
char str[256];
strncpy(str,Edit13->Text.c_str(),255);und damit dann weiter.
Gruss
Frank
-
Hallo,
danke für deine Antwort.
Habe es nun hinbekommen!Habe dafür meine for Schleife verwendet, jedoch diesmal ohne fehler!
Hatte das VkKeyScan() vergessen.//Message simulation char Message[256]; strncpy(Message,Edit13->Text.c_str(),255); HWND hWin = FindWindow(NULL, "Windowname"); SetForegroundWindow(hWin); //Here the Message from Edit13 for(int i=0;Message[i]!='\0';i++) { keybd_event(VkKeyScan(Message[i]), 0, 0, 0);//Key Press keybd_event(VkKeyScan(Message[i]), 0, KEYEVENTF_KEYUP, 0);//Key Release }
Vielen vielen dank euch allen
Mfg. Sven