#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_AU3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Run_Au3Stripper=n #Au3Stripper_Parameters=/mo #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include ;; #include #include #include #include #include #include #include #Region Assign global vars (if needed) $g_sSavePath = @ScriptDir & '\AutoIT.rtf' $g_bEncode = False ;(False: no encoding, True Filename encoding = on $g_REDebug = False Global $iBold ConsoleWrite($g_bEncode & @CRLF) #EndRegion Assign global vars (if needed) ; $g_sSavePath = StringReplace($g_sSavePath, @ScriptDir, 'x:') ;Test for errorhandling throws erros Global Const $sListdir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", $STR_NOCASESENSEBASIC, -1) - 1) Global $sTitle = 'GuiRichEditPlus_Example', $oldText, $newText Global $hGUI = GUICreate($sTitle, 600, 400, -1, 100) Global $g_aFileList, $g_Busy, $g_inserted, $g_failed Global $g_hRichEdit = _GUICtrlRichEdit_Create($hGUI, "", 10, 10, 580, 380, BitOR($ES_MULTILINE, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL)) ;_GUICtrlRichEdit_AutoDetectURL($g_hRichEdit, True) ;If FileExists($g_sSavePath) Then _GUICtrlRichEdit_StreamFromFile($g_hRichEdit, $g_sSavePath) ;_WinAPI_DragAcceptFiles($g_hRichEdit) ;not wanted in this example ;_GUICtrlRichEdit_SetEventMask($g_hRichEdit, BitOR($ENM_DROPFILES, $ENM_LINK)) _GUICtrlRichEdit_SetEventMask($g_hRichEdit, $ENM_LINK) ;not wanted in this example _SendMessage($g_hRichEdit, $EM_SETEDITSTYLE, $SES_HYPERLINKTOOLTIPS, $SES_HYPERLINKTOOLTIPS) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_SIZE, "WM_SIZE") Global $aParts[4] = [32, 90, 80, -1] Global $g_hStatus = _GUICtrlStatusBar_Create($hGUI, $aParts) Global $idAnim = GUICtrlCreateIcon('Shell32.dll', -24, 0, 0) Global $hAnim = GUICtrlGetHandle($idAnim) _GUICtrlStatusBar_EmbedControl($g_hStatus, 0, $hAnim) _GUICtrlStatusBar_SetMinHeight($g_hStatus, 38) _GUICtrlStatusBar_SetParts($g_hStatus, $aParts) _GUICtrlStatusBar_SetText($g_hStatus, 'Debug: ' & $g_REDebug, 1) _GUICtrlStatusBar_EmbedControl($g_hStatus, 0, $hAnim) ;ConsoleWrite('Icons' & _GUICtrlStatusBar_SetIcon($g_hStatus, 2, 23, "SyncCenter.dll")) WinMove($hGUI, '', 0, 0, @DesktopWidth, @DesktopHeight) _GUICtrlRichEdit_Save($g_hRichEdit) GUISetState() $g_Busy = True _GUICtrlStatusBar_SetText($g_hStatus, '_FileListToArrayRec ', 1) AdlibRegister('_ShowBusy', 20) $g_aFileList = _FileListToArrayRec($sListdir, '*', $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH) _GUICtrlRichEdit_AppendTextEx($g_hRichEdit, "Install Directory Structure" & @CRLF & @CRLF, "Arial", "00FFFF", 14) _GUICtrlRichEdit_SetFont($g_hRichEdit, 'Arial', 12) ConsoleWrite('SetCharBkColor: ' & _GUICtrlRichEdit_SetCharBkColor($g_hRichEdit, "FF1111") & @CRLF) _ArrayInsert($g_aFileList, 1, $sListdir) $g_aFileList[0] += 1 ;_ArrayDisplay($g_aFileList) _ArrayColInsert($g_aFileList, 1) _GUICtrlStatusBar_SetText($g_hStatus, 'RichEdit_insertLink(s)', 1) ; $g_aFileList[0][0] = 100 ;delete this for complete directory listing For $i = 1 To $g_aFileList[0][0] $g_aFileList[$i][1] = _GetDisplayName($g_aFileList[$i][0]) Switch @extended Case 0 #cs _GUICtrlRichEdit_SetCharBkColor($g_hRichEdit, '009999') _GUICtrlRichEdit_SetCharAttributes($g_hRichEdit, '+bo') _GUICtrlRichEdit_InsertText($g_hRichEdit, StringReplace($g_aFileList[$i][0], $g_aFileList[$i][1], '')) #ce $iBold = 1 _GUICtrlRichEdit_AppendTextEx($g_hRichEdit, StringReplace($g_aFileList[$i][0], $g_aFileList[$i][1], ''), "Arial", "00FFFF", 14, $iBold) $iBold = 0 _GUICtrlRichEdit_AppendTextEx($g_hRichEdit, ' ', "", "00FFFF", 10, $iBold) ContinueCase Case Else If _GUICtrlRichEdit_insertLink($g_hRichEdit, $g_aFileList[$i][0], $g_aFileList[$i][1], True) Then $g_inserted += 1 _GUICtrlStatusBar_SetText($g_hStatus, $g_inserted, 1) Else $g_failed += 1 _GUICtrlStatusBar_SetText($g_hStatus, $g_failed, 2) EndIf EndSwitch Next _GUICtrlRichEdit_SetCharAttributes($g_hRichEdit, '+hi') _GUICtrlRichEdit_insertLink($g_hRichEdit, 'hint://' & $g_inserted & ' Links succesfully inserted.| Links total: ' & $g_aFileList[0][0], 'Status', True) $g_Busy = False Global $nMsg While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Gui_EVENT_CLOSE If _GUICtrlRichEdit_IsModified($g_hRichEdit) Then _GUICtrlRichEdit_Deselect($g_hRichEdit) _GUICtrlRichEdit_AppendText($g_hRichEdit, @LF & @LF) _GUICtrlRichEdit_insertLink($g_hRichEdit, 'hint://Info: GuiRichEditPlus(_3).au3 autor autobert', 'Version') _GUICtrlRichEdit_Save($g_hRichEdit) ; , $g_sSavePath, True) EndIf _GUICtrlRichEdit_Destroy($g_hRichEdit) ; needed unless script crashes GUIDelete() ExitLoop EndSwitch WEnd Func _GetDisplayName($sText) Local $iPos = StringInStr($sText, '\', 0, -1) Local $sRet = StringMid($sText, $iPos + 1) $iPos = StringInStr($sText, '.', 0, -1) Return SetError(0, $iPos, $sRet) EndFunc ;==>_GetDisplayName Func _ShowBusy() Local Static $iBusy Local $sBusy ;ConsoleWrite($iBusy & @TAB) AdlibUnRegister('_ShowBusy') $iBusy += 1 If $iBusy < 23 Then $iBusy = 23 If $iBusy > 30 Then $iBusy = 23 ;$sBusy = $sAppIcons & '\SyncCenter_' & $iBusy & '.ico' ;ConsoleWrite($sBusy & @CRLF) GUICtrlSetImage($idAnim, 'SyncCenter.dll', ($iBusy + 1) * -1) ;to show Busy Icons If $g_Busy Then AdlibRegister('_ShowBusy', 20) Else ; WinSetTitle($hGUI, "", $sTitel) & $sProgVer & $sDLLName) GUICtrlSetImage($idAnim, 'SyncCenter', $iBusy * -1 + 1) EndIf EndFunc ;==>_ShowBusy Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) #forceref $iMsg, $wParam Local $hWndFrom, $iCode, $tNMHDR, $aFileList, $tDropFiles, $hDrop, $tEnLink, $cpMin, $cpMax, $tMsgFilter, $iPos, $sLink, $sDisplay, $aSplit, $iInserted, $sRet ; Local $hWndFrom, $iCode, $tNMHDR, $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $g_hRichEdit Switch $iCode Case $EN_DROPFILES ;Droped File Names extrahieren $tDropFiles = DllStructCreate($tagENDROPFILES, $lParam) $hDrop = DllStructGetData($tDropFiles, "hDrop") $aFileList = _WinAPI_DragQueryFileEx($hDrop, 0) For $i = 1 To $aFileList[0] $sLink = $aFileList[$i] $aSplit = StringSplit($sLink, '\', 1) $sDisplay = $aSplit[$aSplit[0]] $sRet = _GUICtrlRichEdit_insertLink($g_hRichEdit, $sLink, $sDisplay, True) If $sRet = True Then $iInserted += 1 Else ConsoleWrite($i & ': ' & $sRet & 'Failed') EndIf Next _GUICtrlRichEdit_SetSel($g_hRichEdit, -1, -1) ;_GUICtrlRichEdit_SetSel($hWndFrom, $tDropFiles.cp, $tDropFiles.cp) If Not $g_REDebug Then ConsoleWrite($iInserted & ' FileLinks inserted' & @CRLF) Return 1 Case $iCode = $EN_LINK ;ConsoleWrite('$EN_LINK' & @CRLF) $tMsgFilter = DllStructCreate($tagMSGFILTER, $lParam) If DllStructGetData($tMsgFilter, "msg") = $WM_LBUTTONDBLCLK Then $tEnLink = DllStructCreate($tagENLINK, $lParam) $cpMin = DllStructGetData($tEnLink, "cpMin") $cpMax = DllStructGetData($tEnLink, "cpMax") $sLink = _GUICtrlRichEdit_GetTextInRange($g_hRichEdit, $cpMin + 6, $cpMax) ConsoleWrite($sLink & ': ' & @error & '|' & @extended & @CRLF) _GetDisplayName($sLink) Switch @extended Case 0 ;quickckeck for Directory ShellExecute($sLink) ;opens a explorer link Case Else If FileExists($sLink) Then MsgBox(64, 'Link:', $sLink) Else ;it must be a hint MsgBox(64, 'Hint:', StringReplace($sLink, '/', '')) EndIf EndSwitch EndIf EndSwitch EndSwitch Return $Gui_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func WM_SIZE($hWndGUI, $MsgID, $wParam, $lParam) Local $iWidth = _WinAPI_LoWord($lParam) Local $iHeight = _WinAPI_HiWord($lParam) ; _WinAPI_MoveWindow($g_hRichEdit, 0, 0, $iWidth, $iHeight) _WinAPI_MoveWindow($g_hRichEdit, 4, 4, $iWidth - 8, $iHeight - 39) _WinAPI_MoveWindow($g_hStatus, 2, 2, $iWidth - 4, $iHeight - 38) ;Return 1 Return 0 ; "an application should return zero if it processes this message" (MSDN) EndFunc ;==>WM_SIZE