Das SynEdit (= Editor-Control von PSPad) erlaubt manchmal das Auslesen von einigen Zeilen Text, aber dann ohne ersichtlichen Grund kommen nur noch chinesische Zeichen.
So geht es...
AutoIt
;-- TIME_STAMP 2021-02-27 00:49:45 v 0.1
;~ Opt('MustDeclareVars', 1)
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <Debug.au3>
#include <SendMessage.au3>
;~ #include <WinAPIConv.au3>
#include <WinAPISys.au3>
#include <WinAPISysWin.au3>
;~ #include <WinGetControls.au3>
#include <_ConOut.au3> ; <<-- WinAPIConv.au3
Local $aControls, $tChars, $sTxt, $hKeybLayout, $hActive = WinGetHandle('[ACTIVE]'), $hPSPad = ControlGetHandle('[CLASS:TfPSPad]', '', '[CLASS:TPSSynEdit; INSTANCE:1]')
ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: $hPSPad --> " & $hPSPad & @LF)
If Not IsHWnd($hPSPad) Then Exit 1
$hKeybLayout = _WinAPI_GetKeyboardLayout($hPSPad)
ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: $hKeybLayout --> " & $hKeybLayout & @LF)
Local $iLen = _SendMessage($hPSPad, $WM_GETTEXTLENGTH)
If $iLen < 1 Then Exit 2
$tChars = DllStructCreate('char['&$iLen&']')
_SendMessage($hPSPad, $WM_GETTEXT, $iLen, DllStructGetPtr($tChars))
For $i = 1 To $iLen Step 1
$sTxt &= DllStructGetData($tChars, 1, $i)
Next
_ConOut($sTxt & @CRLF)
; Funktioniert, aber nicht wie erwartet!
ControlFocus('', '', $hPSPad)
Local $iPID, $aInfo = _WinAPI_GetGUIThreadInfo(_WinAPI_GetWindowThreadProcessId($hPSPad, $iPID))
ConsoleWrite('- CaretX: ' & $aInfo[7] & ' CaretY: ' & $aInfo[8] & @CRLF)
;~ $aControls = _WinGetControls(WinGetHandle('[CLASS:TfPSPad]'))
;~ _ArrayDisplay($aControls, '$aControls')
WinActivate($hActive)
Alles anzeigen