- 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.
#include <Clipboard.au3>
#include <WinAPISys.au3>
HotKeySet('^u', '_ClipBoard_InsertUnformat') ; Ctrl+U
HotKeySet('^+e', '_exit') ; Ctrl+Shift+E
Func _ClipBoard_InsertUnformat()
; get clipboard entry as text-only
Local $sClip = _ClipBoard_GetData($CF_UNICODETEXT)
; get current window & child window from mouse position
Local $hWnd = WinGetHandle('[ACTIVE]')
Local $tPOINT = _WinAPI_GetMousePos(True, $hWnd)
Local $hChild = _WinAPI_ChildWindowFromPointEx($hWnd, $tPOINT)
; check if child exists
If $hChild = $hWnd Then Return
; create buffer
Local $tCLIP = DllStructCreate('wchar buffer[' & StringLen($sClip)+1 & ']')
$tCLIP.buffer = $sClip & Chr(0)
; sets text from buffer to mouse position
#cs >> https://msdn.microsoft.com/en-us/library/windows/desktop/ms632644(v=vs.85).aspx <<
Remarks
The DefWindowProc function sets and displays the window text. For an edit control, the text is the contents of the edit control.
For a combo box, the text is the contents of the edit-control portion of the combo box. For a button, the text is the button name.
For other windows, the text is the window title.
#ce
;~ _SendMessage($hWnd, $WM_SETTEXT, 0, DllStructGetPtr($tCLIP)) ; mit $hWnd wird Titel gesetzt --> das funktioniert
_SendMessage($hChild, $WM_SETTEXT, 0, DllStructGetPtr($tCLIP)) ; den Text in ein offenes Editor- oder Wordfenster eintragen funktioniert nicht
EndFunc
Func _exit()
Exit
EndFunc
While True
Sleep(10)
WEnd
Alles anzeigen