Text in ein Fenster einfügen mit $WM_SETTEXT nicht möglich?

    • Offizieller Beitrag

    Kennt sicher jeder: Im Internet ein paar Angebote suchen, rauskopieren und zusammenstellen in einem eigenen Dokument.

    Copy & Paste übernimmt dann leider die Formatierung inkl. Tabelle etc., sodass man dann nachbearbeiten muss.

    Deshalb hatte ich mir jetzt eine Funktion erstellt, die den Inhalt der Zwischenablage als Nur-Text ausliest und an der Mausposition im aktuell geöffneten Fenster einfügt.

    Send() möchte ich auf jeden Fall vermeiden und hatte deshalb mit _SendMessage(HWnd, $WM_SETTEXT, ... ) probiert. Obwohl das Child-Window erkannt wird, an das die Nachricht gesendet wird, läßt sich kein Text einfügen. Fehler gibt _SendMessage nicht zurück. Habe ich zuviel in diese Funktion hinein interpretiert, kann sie gar keinen Text, wie von mir gewünscht, einfügen?

    Bin auch für andere (Send-freie) Lösungen zu haben.

  • Also ich kann noch nicht genau nachvollziehen was dein Script tun soll, aber ich hab mal getestet und

    im Browser etwas markiert kopiert und bin dann zu einem Wordpad Fenster gewechselt und

    dort habe ich Ctrl+u gedrückt – dann wurde der markierte Text unformatiert eingefügt.

    Wenn das deine Absicht war funktioniert es voll und ganz.

    Ich hoffe das hilft dir schon mal weiter.

    • Offizieller Beitrag

    OK, Danke fürs Probieren. An Wordpad hatte ich gar nicht gedacht. Aber dadurch ist zumindest klar, dass es mit Word oder anderen Editoren, deren Schreibfläche kein (Rich)Edit-Ctrl ist, nicht funktionieren kann.

    Ich hatte gehofft, dass das universell ist - war dann nix.

    Nun muss ich nach einer Alternative suchen.

  • Halt Halt nicht so schnell, hab gerade nochmal probiert beim Editor klappt es auch und Word benutzte ich schon ewig nicht mehr aber WPS ich probiers dort gleich mal aus und geb dir Bescheid.

  • Also bei WPS Kingsoft Office funktioniert es nicht.

    Eventuell geht es ja deshalb nicht weil Office Programme meistens eine eigene Verwaltung für s Clipboard haben

    und daurch solche Aktionen blockiert werden??

    Einmal editiert, zuletzt von Tuxedo (21. November 2017 um 12:37)

    • Offizieller Beitrag

    Schau mal hier... ob das evtl. hilft.

    Dort geht es nur um das Ändern des Fenstertitels - das klappt ja auch mit meiner Methode.

    Ich möchte jedoch im Textbereich einfügen und das ist scheinbar nur genau bei den von MSDN benannten Typen (Edit, Combobox, Button) möglich. Der Word-Edit-Bereich ist aber eine völlig andere Fensterklasse, wie bei den meisten Office-Programmen.

  • Hallo BugFix ich weiß ja nicht wie anspruchsvoll du bist, aber genau für diesen Zweck für den du das Script gemacht hast habe ich mein Tool Smartclip entworfen.

    Ich bin zwar noch nicht ganz zufrieden damit aber deine Wünsche würde es erfüllen(Textstücke und Bilder von diversen Stellen einsammeln und an einem Ort gesammelt wieder einfügen.

    Und vor allem funktioniert es recht einfach mit den üblichen Befhlen Ctrl+v und Ctrl+c und es fügt leider nur unformatierten Text ein

    genau wie du es wolltest, kannst ja mal drübergucken.

  • Und so... (funktioniert bei mir mit Word 2016)

    Oben mit dem Script, unten ohne...

    Einmal editiert, zuletzt von Bitnugger (21. November 2017 um 13:13)

    • Offizieller Beitrag

    Grundsätzlich funktioniert es damit.

    Bei mir wird aber bei jedem Zeilenumbruch ein Seitenumbruch eingefügt. Ich muss dort ControlSend($hChild, '', '', StringReplace($sClip, @CRLF, @CR) , $SEND_RAW) verwenden.

    Ich lass es mal noch offen, vielleicht gibt es noch andere Ideen.

    • Offizieller Beitrag

    Ich hätte noch eine andere Idee.

    Man registriert einen eigenen Clipboard-Viewer (Beispiel aus der Hilfe zu "_ClipBoard_SetViewer").

    Dort dann bei "_ClipBoard_GetData" $CF_UNICODETEXT eintragen und zurück in die Zwischenablage. Fertig!

    Und so nebenbei bleibt man bei den gewohnten [ctrl] & [c] bzw, [ctrl] & [v]:

    • Offizieller Beitrag

    Dort dann bei "_ClipBoard_GetData" $CF_UNICODETEXT eintragen und zurück in die Zwischenablage. Fertig!

    Das hatte ich auch schon überlegt, allerdings habe ich da einen weniger aufwändigen und flexibleren Weg gewählt.

    - Hotkey um nur bei Bedarf den Inhalt der Zwischenablage in pur Text zu wandeln

    - Einfügen mit normal CTRL+V

    Ich werde dann wohl die Variante belassen, ein Hotkey mehr zum Ausführen bringt mich nicht um. ;)