copy & paste
-
hi,
ich soll bei hotkeyauslösung (der funzt jetzt schon) den markierten text kopieren und in einem meiner dialoge einfügen. die markierung darf überall sein (word, texteditor, in irgendeinem programm). wie mache ich das?
ich glaub mit sendmessage und wm_copy und so, weiß aber nicht weiter
-
sendmessage sendet nur zu einem zeitpunkt eine message (z.B. OnLButtonClick). wird dennn nicht die Copy information im Zwischenspeicher festgehalten? Frag einfach diesen ab! :p
-
hmmm
ich sende jetzt schon die message, aber er kopiert nix::SendMessage(HWND_BROADCAST, WM_COPY, 0, 0);stimmt das mit dem broadcast. ich will, dass das, was im aktuellem window markiert ist in die zwischenablage kopiert wird
-
Servus,
ich glaube du suchst das hier:
FAQ:
http://www.c-plusplus.net/forum/topic,39029.html*winke*
Hellsgore
-
danke, dass du so nen alten beitrag für mich rauskramst. geholfen hats leider nix. ich will einen text, den ich nicht habe, der nur im aktuellem window (kann auch word sein) markiert ist in die zwischenablage kopieren. so als würde ich strg+c drücken.
-
ok nochmal ne problembeschreibung:
ich sende das:
::SendMessage(HWND_BROADCAST, WM_COPY, 0, 0);aber er kopiert nix. er sollte im aktiven window (was auch immer es ist) den von mir markierten teil in die zwischenablage kopieren.
wenn ich das wm_copy durch ein wm_close ersetze schließt er alle anderen fenster. das würde also funzen. woran liegts???
-
Ich hab mal in die MSDN geguckt:
[msdn]An application sends the WM_COPY message to an edit control or combo box to copy the current selection to the clipboard in CF_TEXT format. [/msdn]Du willst aber, dass eine Anwendung auf dich reagiert. Kannst du nicht die passende Tastaturnachricht schicken? Also Strg+C? Oder hast du das schon versucht und ich es überlesen?
-
stimmt, aber wie mach ich das?
-
weiß vielleicht auch einer, wie ich das handle auf das aktive window bekomme.
-
Zu der Sache mit der Nachricht: Guck dir mal WM_KEYDOWN an. Du musst festlegen, dass die Strg Taste gedrückt ist (im Flagparameter) und als Taste eben C.
-
so wie ich das sehe hab ich zwei möglichkeiten:
ein strg+c an das window zu senden. (das active window krieg ich raus, aber wenn ich
::SendMessage(activeHwnd, WM_KEYDOWN, VK_RIGHT , 0);sende tut sich gar nix. schade eigentlich.
oder ich kann das active object ermitteln und an das ein WM_COPY senden. nur: wie krieg ich das active object raus? die ::GetActiveObject() - methode check ich voll net.
funzt beides net, wahrscheinlich bin ich zu doof :p
-
estartu_de schrieb:
Du willst aber, dass eine Anwendung auf dich reagiert. Kannst du nicht die passende Tastaturnachricht schicken? Also Strg+C? Oder hast du das schon versucht und ich es überlesen?
neue erkenntnis: tastaturnachrichten werden auch an objekte gesendet. das window reagiert nicht darauf...