Mit Strg+C kopierst du den Inhalt eiens Edits in die Zwischenablage. Ihr müßt euch endlich mal davon lösen fremde Programm per Programm so "steuern" zu wollen, als ob ihr selber vor dem Bildschirm sitzt. Ihr müßt so anfangen wie Windows zudenken und zu handlen. Dazu ist natürlich ein tieferes Verständnis nötig, wie Windows überhaupt funktioniert.
Also mal ganz kurz und sehr unvollständig: Windows kommuniziert mit den Programmen (welche Fenster sind) über Nachrichten. Soll ein Fenster was machen bekommt es von Windows eine Nachricht geschickt. Das Fenster (Programm) holt sich diese Nachricht ab und bearbeitet sie (wenn es der Programmierer will und entsprechenden Code im Programm vorgesehen hat).
Anderst wiederum können auch Programme (Fenster) selber Nachrichten schicken. Klickt der Benutzer in einem Programm zum Beispiel auf einen Button, schick Windows an das übergeordnete Fenster, also an das Fenster auf dem der Button sitzt, man spricht vom Parent(-Fenster) eine sogenannte Notify-Nachricht, in diesem Fall BN_CLICKED, welche das Parent darüber informiert, das ein Button angeklickt wurde. Das Parent fängt jetzt die Nachricht WM_COMMAND ab in dessen Parametern der Notify-Code (BN_CLICKED) und der Auslöser (unser Button) übergeben wird. So damit Windows jetzt weiß von wem eine Nachricht kommt bzw umd gezielt einem Fenster (auch Buttons und Edits sind Fenster) eine Nachricht zukommen zu lassen, vergibt Windows an alle Fenster eine Kennziffer (Handle) mit Hilfe welcher es jedes Fenster eindeutig identifizieren kann.
So, will ich jetzt in einen fremden Programm auf einen Button klicken, simulier ich nicht einen Mausklick auf den Button, was auch möglich wäre, sondern schicke an das Parent des Buttons die Windows-Nachricht, die auch Windows an das Parent schicken würde, wenn jemand wirklich auf den Button geklickt hätte. Nämlich entweder ein WM_COMMAND mit dem Bezeichner des Buttons, der ID (nicht dem Handle, die ID wird Programm intern vom Programmierer vergeben) oder ich schicke an den Button direkt ein BM_CLICK welche wiederum eine WM_COMMAND-Nachricht mit dem entsprechenden Bezeichner auslöst.
Leseempfehlung: Fenster- und Button-Tutorial aus meinen nonVCL-Tutorials
(
Link)
Ok, so weit alles klar? Gut, machen wir weiter. Als nächstes wollen wir in ein fremdes Edit reinschreiben. Auch hier lösen wir uns von der Vorstellung Tastendrücke simulieren zu wollen, als wenn wir selber da reinschreiben täten. Wir mache es so wie Windows und senden die entsprechende Nachricht an das Fenster, nämlich WM_SETTEXT. WM_SETTEXT erwartet unter anderem den Text, der in das Edit geschrieben werden soll als Parameter.
Leseempfehlung: Edit-Tutorial aus meinen nonVCL-Tutorials.
(
Link)
So, du willst jetzt Text in die Zwischenablage kopieren also schicke die entsprechende Nachricht an das Fenster. Die wäre in diesem Fall WM_COPY.
Dazu brauchst du das Handle des Fensters. Vorgehen beim Notepad:
- mit FindWindow Hauptfenster suchen
- mit FindWindowEx das Handle vom Edit vom Notepad erhalten
- alternativ geht auch GetDlgItem, wenn die ID des Edits bekannt ist (läßt sich mit Tools rausfinden)
- mit SendMessage WM_COPY an das Edit schicken
Zu allen hervorgehoben Funktionen solltest du was hier im Forum finden. Desweitern sollten dir die empfohlenen Tutorials weiterhelfen.