Jump to content

Search the Community

Showing results for tags 'filesavedialog'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 1 result

  1. prologue On the occasion of @TheDcoder post (I wonder if someone can port it to AutoIt ) and because in the past I already had something similar (Active_SaveFileDlg), ( in which I remember making an effort so that it wouldn't catch windows other than Scite's) So I took it as a challenge. Of course, since I don't know much, I skipped the extras and stuck to the basics A brief description While the script is running in the background when you display the SaveFileDlg or OpenFileDlg window, display a button-icon in the center of the window title. Click it brings up a list of some favorite path plus the paths from all open folders. by selecting one of them, WindowDlg goes to the selected path. Active_FileDlg.au3 ; https://www.autoitscript.com/forum/topic/212478-active_filedlg/ ;---------------------------------------------------------------------------------------- ; Title...........: Active_FileDlg.au3 ; Description.....: Add All open folder & some extra as contex menu in SaveFileDlg & OpenFileDlg ; AutoIt Version..: 3.3.16.1 Author: ioa747 ;---------------------------------------------------------------------------------------- ;~ #NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Description=Add All open folder & some extra as contex menu in SaveFileDlg & OpenFileDlg #AutoIt3Wrapper_Res_Fileversion=0.0.0.1 #AutoIt3Wrapper_Res_ProductName=Active_FileDlg.au3 #AutoIt3Wrapper_UseX64=Y #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <WinAPISysWin.au3> #include <Misc.au3> #include <GuiTreeView.au3> #include <Array.au3> _Singleton(@ScriptName) Global $aFavFolder[3] ; Fav folder $aFavFolder[0] = 2 $aFavFolder[1] = @DesktopDir ; * <--------- Fav1 folder (get one of your own) $aFavFolder[2] = @MyDocumentsDir ; * <--------- Fav2 folder (get one of your own) Global $hGUI While 1 _main() Sleep(500) WEnd Exit ;-------------------------------------------------------------------------------------------------------------------------------- Func _main() If WinActive("[CLASS:#32770]") Then Local $hWnd = WinGetHandle("[CLASS:#32770]") ;specify SaveFileDlg & OpenFileDlg criteria Local $hUIControl = ControlGetHandle($hWnd, "", "[CLASS:DirectUIHWND]") Local $hSysTV = ControlGetHandle($hWnd, "", "[CLASS:SysTreeView32]") If $hUIControl And $hSysTV Then _FoldersGUI($hWnd) While WinActive($hWnd) ; Loop While win exits. Sleep(50) WEnd GUIDelete($hGUI) EndIf EndIf EndFunc ;==>_main ;---------------------------------------------------------------------------------------- Func _FoldersGUI($hWnd) $hGUI = GUICreate("MyGUI", 24, 24, -50, -50, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_NOACTIVATE), $hWnd) Local $idDummy = GUICtrlCreateDummy() Local $idButton = GUICtrlCreateButton("contex button", 0, 0, 24, 24, $BS_ICON) GUICtrlSetImage(-1, "shell32.dll", -68) Local $idContext = GUICtrlCreateContextMenu($idButton) Local $OpenFolders = _EnumAllOpenFolder() ;If not open folder, just add fav If $OpenFolders[0][0] = 0 Then ReDim $OpenFolders[UBound($OpenFolders) + 1][2] Else _ArrayInsert($OpenFolders, 1, "0|") ; separator EndIf ; Add Fav folder (the numbers on the front don't matter) For $i = 1 To $aFavFolder[0] _ArrayInsert($OpenFolders, 1, $i & "|" & $aFavFolder[$i]) Next $OpenFolders[0][0] = UBound($OpenFolders) - 1 ;_ArrayDisplay($OpenFolders) ; Create Context Menu For $i = 1 To $OpenFolders[0][0] GUICtrlCreateMenuItem($OpenFolders[$i][1], $idContext) Next Local $Wpos = WinGetPos($hWnd) WinMove($hGUI, "", $Wpos[0] + $Wpos[2] * 0.5, $Wpos[1] + 3) Sleep(100) GUISetState(@SW_SHOW, $hGUI) WinActivate($hWnd) Local $MsgId While WinExists($hWnd) $Wpos = WinGetPos($hWnd) WinMove($hGUI, "", $Wpos[0] + $Wpos[2] * 0.5, $Wpos[1] + 3) $MsgId = GUIGetMsg() Switch $MsgId Case 6 To $OpenFolders[0][0] + 6 _AddressBarPath($hWnd, $OpenFolders[$MsgId - 5][1]) Case $idButton GUICtrlSendToDummy($idDummy) Case $idDummy MouseClick("right") EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>_FoldersGUI ;---------------------------------------------------------------------------------------- Func _EnumAllOpenFolder() ; enumerating all open folders Local $oShell = ObjCreate("Shell.Application") Local $sPath, $index = 0 Local $aArray[$oShell.Windows.Count + 1][2] = [["hWnd", "Path"]] For $oWin In $oShell.Windows $index += 1 $aArray[0][0] = $index $sPath = StringTrimLeft($oWin.LocationURL, 8) ; trim 'file:///' $sPath = StringReplace($sPath, "/", "\") $sPath = _UnicodeURLDecode($sPath) $aArray[$index][0] = HWnd($oWin.HWND) $aArray[$index][1] = $sPath Next Return $aArray EndFunc ;==>_EnumAllOpenFolder ;---------------------------------------------------------------------------------------- Func _UnicodeURLDecode($toDecode) Local $strChar = "", $iOne, $iTwo Local $aryHex = StringSplit($toDecode, "") For $i = 1 To $aryHex[0] If $aryHex[$i] = "%" Then $i = $i + 1 $iOne = $aryHex[$i] $i = $i + 1 $iTwo = $aryHex[$i] $strChar = $strChar & Chr(Dec($iOne & $iTwo)) Else $strChar = $strChar & $aryHex[$i] EndIf Next Local $Process = StringToBinary($strChar) Local $DecodedString = BinaryToString($Process, 4) Return $DecodedString EndFunc ;==>_UnicodeURLDecode ;---------------------------------------------------------------------------------------- Func _AddressBarPath($hWnd, $sNewBarPath = "") WinActivate($hWnd) For $i = 1 To 10 Local $hCtrl = ControlGetHandle($hWnd, "", "ToolbarWindow32" & $i) If @error Then ExitLoop Local $sControlText = ControlGetText($hWnd, "", $hCtrl) If StringLeft($sControlText, 9) = "Address: " Then Local $aTextPart = StringSplit($sControlText, ": ", 1) If $aTextPart[0] = 2 Then ; Get AddressBarPath If $sNewBarPath == "" Then Return $aTextPart[2] Else ; Set AddressBarPath ControlCommand($hWnd, "", $hCtrl, "SendCommandID", 1280) Local $sCtrlNN = ControlGetFocus($hWnd) Local $hCtrlHnd = ControlGetHandle($hWnd, "", $sCtrlNN) ControlSetText($hWnd, "", $hCtrlHnd, $sNewBarPath) ControlSend($hWnd, "", $hCtrlHnd, "{ENTER}") Return $sNewBarPath EndIf EndIf EndIf Next ; If Error, return an empty string Return SetError(1, 0, "") EndFunc ;==>GetAddressBarPath ;-------------------------------------------------------------------------------------------------------------------------------- Please, every comment is appreciated! leave your comments and experiences here! Thank you very much
×
×
  • Create New...