Dan_555 Posted March 21, 2020 Posted March 21, 2020 (edited) Hi. I'm using the FreeCommander XE file manager here, and i'v written a script, which will create an empty, new file, after choosing an extension out from the Listbox. The listview code is not mine, iv found the scripts somewhere on this forum. I have no credits in it, because it was intended to be only for my personal use. But now, i have a lot of free time, so i remembered that i haven't posted anything on this forum, yet, so here is my first script: It should be compiled with the Autoit v3.3.14.3 . The compiled exe needs a folder passed as a parameter, so that it know where to create the new file. A Listbox is opened, with a selection of available extensions. After selecting and doubleclicking (or using the ok button), the script creates a filename (if specified in the config file) with increased numbers (up to 9999). If the filename exist, the counter is checking the next number, until the maximum is reached. This script uses an ini file for configuration, called "NewFile.ini" which should be in the same folder, as the compiled exe. NewFile.au3 expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <String.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <EditConstants.au3> #include <GuiEdit.au3> #include <ScrollBarsConstants.au3> Global $test[0][2], $hFile, $cmd = "", $cmdtmp, $tmptxt, $tmpinidir, $filesetting, $MouseX, $MouseY, $UseMouseX, $UseMouseY, $Edit1 Global $aArray[1] = [] $cmdtmp = StringReplace($cmdlineraw, Chr(34), "") If StringLen($cmdtmp) = 2 Then If StringRight($cmdtmp, 1) = ":" Then $cmd = $cmdtmp & "\" EndIf Else If StringRight($cmdtmp, 1) <> "\" Or StringRight($cmdtmp, 1) <> "/" Then $cmd = $cmdtmp & "\" EndIf EndIf If Not FileExists($cmd) Then ;Check if the folder exists, display an error message if not ! DisplayReadMe(1) Exit EndIf If StringLen(@ScriptDir) > 3 And StringRight(@ScriptDir, 1) <> "\" Then $tmpinidir = @ScriptDir & "\" Else $tmpinidir = @ScriptDir EndIf Local Const $sFilePath = $tmpinidir & "NewFile.ini" $filesetting = IniRead($sFilePath, "setting", "filename", "MyNewFile") $filesetting = StringReplace($filesetting, ">", " ") ;msgbox (0,"",$filesetting) ;Debugging $UseMouseX = IniRead($sFilePath, "setting", "UseMouseX", "1") $UseMouseY = IniRead($sFilePath, "setting", "UseMouseY", "0") If FileExists($sFilePath) Then $aArray = IniReadSectionNames($sFilePath) ; Read the INI section names. This will return a 1 dimensional array. EndIf ; Check if an error occurred. If @error=0 Then ; Enumerate through the array displaying the section names. Local $count = 0 If FileExists($sFilePath) Then For $i = 1 To $aArray[0] $tmp1 = IniRead($sFilePath, $aArray[$i], "1", "none") If $tmp1 <> "none" And StringLeft($tmp1, 1) = "." Then ;Extension need to have a dot, or it will be ignored ! $tmptxt = $tmptxt & $tmp1 & "|" & $aArray[$i] & @CRLF $count = $count + 1 ;Count how many extensions are added ! EndIf Next EndIf If $count = 0 Then $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text File" & @CRLF ;MsgBox($MB_SYSTEMMODAL,"",$tmptxt) _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) Else ;Reading the ini failed, create a default array for the extensions $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text" & @CRLF _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) EndIf ;Local $test[5][2] = [['.au3', 'AutoIt'], ['.ahk', 'Auto Hotkey'], ['.txt', 'text'], ['.sdlbas', 'Sdl Basic'], ['.html', 'Webpage']] If $UseMouseX = 1 Then $MouseX = MouseGetPos(0) Else $MouseX = -1 EndIf If $UseMouseY = 1 Then $MouseY = MouseGetPos(1) Else $MouseY = -1 EndIf $Form1 = GUICreate("Create New File", 210, 247, $MouseX, $MouseY, $WS_CAPTION, $WS_EX_TOOLWINDOW) $List = GUICtrlCreateListView("", 5, 5, 200, 200) _GUICtrlListView_InsertColumn($List, 0, "Extension", 65) _GUICtrlListView_InsertColumn($List, 1, "Description", 115) _GUICtrlListView_AddArray($List, $test) GUICtrlCreateLabel("Example:" & $filesetting & "0000.ext", 5, 205) $Button1 = GUICtrlCreateButton("Ok", 16, 224, 45, 22) $Button3 = GUICtrlCreateButton("ReadMe", 80, 224, 55, 22) $Button2 = GUICtrlCreateButton("Cancel", 150, 224, 45, 22) $cDummy = GUICtrlCreateDummy() GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Button2 Exit Case $Button3 DisplayReadMe(0) Case $Button1, $cDummy Local $tmptxt = StringSplit(_GUICtrlListView_GetItemTextString($List), "|")[1] If StringLen($tmptxt) > 0 Then Local $fnr = 0, $tmpfile = "" While $fnr < 10000 $tmpfile = $cmd & $filesetting & _StringRepeat("0", 4 - StringLen($fnr)) & $fnr & $tmptxt ;MsgBox(0,"",$tmpfile) ; for debugging If Not (FileExists($tmpfile)) Then $hFile = _WinAPI_CreateFile($tmpfile, 0) _WinAPI_CloseHandle($hFile) Exit EndIf $fnr = $fnr + 1 WEnd EndIf EndSwitch WEnd ;================================================================================ Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $List If Not IsHWnd($List) Then $hWndListView = GUICtrlGetHandle($List) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_DBLCLK ; Fire the dummy if the ListView is double clicked GUICtrlSendToDummy($cDummy) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func DisplayReadMe($err) Local $Form1 = GUICreate("Read Me", 550, 400, 10, 10, BitOR($WS_CAPTION, $WS_THICKFRAME ,$WS_MAXIMIZEBOX)) $Edit1 = GUICtrlCreateEdit("", 0, 0, 549, 399) GUICtrlSetData(-1, "") GUISetState(@SW_SHOW) If $err=1 then local $txttmp01="Error: Path does not exist" local $txttmp02="Commandline call was: " AddText ($txttmp01) Addtext ($txttmp02 & $cmd & @CRLF & @CRLF) EndIf AddText("Instructions:" & @CRLF) AddText("Displays a selection of available extensions and then creates a new file at the Path's location." & @CRLF & @CRLF & "Usage: NewFile Path") AddText("Example: NewFile c:\myfolder\" & @CRLF) AddText("Result: A file with a name 'MyFile0000.ext' will be created at the Path's location.") AddText("If the filename exists, the number counter will increase, until it finds a free number, up to 9999." & @CRLF) AddText("Uses a configuration file in the .exe folder named NewFile.ini !" & @CRLF) AddText("Example of a config file:" & @CRLF) AddText("[setting]" & @CRLF & "filename=MyFile>") AddText("UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings !") AddText("UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates !" & @CRLF) AddText(";Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number)" & @CRLF) AddText(";Format for this ini file is:" & @CRLF & ";Name e.g [Auto It]") AddText(";extension e.g 1=.au3" & @CRLF & "; p.s. only 1 extension per section ! the number must be 1" & @CRLF) AddText("[AutoIt3]" & @CRLF & "1=.au3" & @CRLF & @CRLF & "[Text]" & @CRLF & "1=.txt") _GUICtrlEdit_SetSel($Edit1, 0, 0) _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET) If $err=1 Then _GUICtrlEdit_SetSel($Edit1, 0, StringLen($txttmp01 & $txttmp02 & $cmd)+5) EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIDelete($Form1) ExitLoop EndSwitch WEnd EndFunc ;==>DisplayReadMe Func AddText($edittxt) _GUICtrlEdit_AppendText($Edit1, $edittxt & @CRLF) EndFunc ;==>AddText NewFile.ini [setting] filename=MyNewFile_ UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings ! UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates ! ;Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number) ;Format for this ini file is: ;Name e.g [Auto It] ;extension e.g 1=.au3 ; p.s. only 1 extension per section ! the number must be 1 [AutoIt3] 1=.au3 [Auto Hotkey] 1=.ahk [Text] 1=.txt [Sdl Basic] 1=.sdlbas [Webpage] 1=.html [Basic] 1=.bas [Pascal] 1=.pas [Rich Text (RTF)] 1=.rtf [Word Document] 1=.doc [Hex File] 1=.hex Edited March 5, 2023 by Dan_555 Possible bug fixing ... Some of my script sourcecode
Dan_555 Posted March 27, 2020 Author Posted March 27, 2020 (edited) Hi, here is an updated version of the script. Now it can, optionally, make the new file and to copy the clipboard content into it. To copy Clipboard text, select an extension, then click on "Save Clip Text" button, instead of ok. Save Clip Text is only available if the clipboard is holding text formated data, and if the extension is selected. Ok button is only clickable, if an extension is selected. (hint. you can double click on the extension, to create an empty file). expandcollapse popup#include <StructureConstants.au3> #include <Array.au3> #include <Clipboard.au3> #include <FontConstants.au3> #include <GuiButton.au3> #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <GuiListView.au3> #include <ScrollBarsConstants.au3> #include <String.au3> #include <WinAPIHObj.au3> #include <WinAPIInternals.au3> #include <WindowsConstants.au3> #NoTrayIcon Global $test[0][2], $hFile, $cmd = "", $cmdtmp, $tmptxt, $tmpinidir, $filesetting, $MouseX, $MouseY, $UseMouseX, $UseMouseY, $Edit1, $fInput Global $aArray[1] = [], $sData = "", $lastused = 0, $List, $cDummy $cmdtmp = StringReplace($cmdlineraw, Chr(34), "") If StringLen($cmdtmp) = 2 Then If StringRight($cmdtmp, 1) = ":" Then $cmd = $cmdtmp & "\" EndIf Else If StringRight($cmdtmp, 1) <> "\" Or StringRight($cmdtmp, 1) <> "/" Then $cmd = $cmdtmp & "\" EndIf EndIf If StringLen(@ScriptDir) > 3 And StringRight(@ScriptDir, 1) <> "\" Then $tmpinidir = @ScriptDir & "\" Else $tmpinidir = @ScriptDir EndIf If StringLen($cmd) > 0 Then If Not FileExists($cmd) Then ;Check if the folder exists, display an error message if not ! DisplayReadMe(1) Exit EndIf Else $cmd = $tmpinidir EndIf Local Const $sFilePath = $tmpinidir & "NewFile.ini" ;ConsoleWrite ($sFilePath & @CRLF) $filesetting = IniRead($sFilePath, "setting", "filename", "MyNewFile") $filesetting = StringReplace($filesetting, ">", " ") ;msgbox (0,"",$filesetting) ;Debugging $UseMouseX = IniRead($sFilePath, "setting", "UseMouseX", "1") $UseMouseY = IniRead($sFilePath, "setting", "UseMouseY", "0") If FileExists($sFilePath) Then $aArray = IniReadSectionNames($sFilePath) ; Read the INI section names. This will return a 1 dimensional array. EndIf ; Check if an error occurred. If @error = 0 Then ; Enumerate through the array displaying the section names. Local $count = 0 For $i = 1 To $aArray[0] $tmp1 = IniRead($sFilePath, $aArray[$i], "1", "none") If $tmp1 <> "none" And StringLeft($tmp1, 1) = "." Then ;Extension need to have a dot, or it will be ignored ! $tmptxt = $tmptxt & $tmp1 & "|" & $aArray[$i] & @CRLF $count = $count + 1 ;Count how many extensions are added ! EndIf Next If $count = 0 Then $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text File" & @CRLF ;MsgBox($MB_SYSTEMMODAL,"",$tmptxt) _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) Else ;Reading the ini failed, create a default array for the extensions $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text" & @CRLF _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) EndIf ;Local $test[5][2] = [['.au3', 'AutoIt'], ['.ahk', 'Auto Hotkey'], ['.txt', 'text'], ['.sdlbas', 'Sdl Basic'], ['.html', 'Webpage']] If $UseMouseX = 1 Then $MouseX = MouseGetPos(0) Else $MouseX = -1 EndIf If $UseMouseY = 1 Then $MouseY = MouseGetPos(1) Else $MouseY = -1 EndIf $Form1 = GUICreate("Create New File", 210, 247, $MouseX, $MouseY, $WS_CAPTION, $WS_EX_APPWINDOW) $List = GUICtrlCreateListView("", 5, 5, 200, 199) ;GUICtrlCreateLabel("Example:" & $filesetting & "0000.ext", 5, 205) $fInput = GUICtrlCreateInput($filesetting, 5, 206, 201, 18) $Button1 = GUICtrlCreateButton("Ok", 3, 224, 30, 22) $Button4 = GUICtrlCreateButton("Save Clip Text", 33, 224, 75, 22) $Button3 = GUICtrlCreateButton("?", 108, 224, 23, 22) GUICtrlSetTip(-1, "Help Text") $Button5 = GUICtrlCreateButton("CFG", 130, 224, 33, 22) GUICtrlSetTip(-1, "Close and Configure") $Button2 = GUICtrlCreateButton("Cancel", 163, 224, 45, 22) $cDummy = GUICtrlCreateDummy() GUISetState(@SW_SHOW) _GUICtrlListView_BeginUpdate($List) _GUICtrlListView_InsertColumn($List, 0, "Extension", 65) _GUICtrlListView_InsertColumn($List, 1, "Description", 115) _GUICtrlListView_AddArray($List, $test) $lastused = IniRead($sFilePath, "setting", "lastused", "0") If $lastused > _GUICtrlListView_GetItemCount($List) Then $lastused = 0 _GUICtrlListView_SetItemSelected($List, Int($lastused), True, True) _GUICtrlListView_EndUpdate($List) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") Local $aFormats[3] = [2, $CF_TEXT, $CF_OEMTEXT] While 1 $nMsg = GUIGetMsg() Local $tmptxt = StringSplit(_GUICtrlListView_GetItemTextString($List), "|")[1] If @error = 1 Then $tmptxt = "" If StringLen($tmptxt) > 0 Then _GUICtrlButton_Enable($Button1, 1) If _ClipBoard_GetPriorityFormat($aFormats) > 0 Then _GUICtrlButton_Enable($Button4, 1) Else _GUICtrlButton_Enable($Button4, 0) EndIf Else _GUICtrlButton_Enable($Button4, 0) _GUICtrlButton_Enable($Button1, 0) EndIf For $x = 0 To _GUICtrlListView_GetItemCount($List) If _GUICtrlListView_GetItemSelected($List, $x) = True Then $lastused = $x ExitLoop 1 EndIf Next Switch $nMsg Case $Button5 ExitLoop Case $GUI_EVENT_CLOSE, $Button2 Exit Case $Button3 DisplayReadMe(0) Case $Button1, $cDummy If StringLen($tmptxt) > 0 Then $tmpfile = GetFreeFileName() If $tmpfile <> "" Then $hFile = _WinAPI_CreateFile($tmpfile, 0) _WinAPI_CloseHandle($hFile) IniWrite($sFilePath, "setting", "lastused", $lastused) Exit ;End the program EndIf EndIf Case $Button4 If StringLen($tmptxt) > 0 Then $tmpfile = GetFreeFileName() ConsoleWrite($tmpfile) If $tmpfile <> "" Then $hFile = FileOpen($tmpfile, 17) Local $sData = ClipGet() For $x = 1 To StringLen($sData) Local $tmpwtxt = StringMid($sData, $x, 1) FileWrite($hFile, StringToBinary($tmpwtxt)) FileSetPos($hFile, $x, 0) Next FileClose($hFile) IniWrite($sFilePath, "setting", "lastused", $lastused) Exit ;End the program EndIf EndIf EndSwitch WEnd GUIDelete($Form1) ConfigWindow() Func GetFreeFileName() Local $fnr = 0, $tmpfile = "", $tmpfile1 = "" Local $tmpread = GUICtrlRead($fInput), $fc = 0 If $tmpread <> $filesetting And StringLen($tmpread) > 0 Then $filesetting = $tmpread Local $invalidfnamechars = ':*/\?"<>' For $x = 1 To StringLen($invalidfnamechars) $filesetting = StringReplace($filesetting, StringMid($invalidfnamechars, $x, 1), "") Next $fc = 1 EndIf If $fc = 1 Then $tmpfile1 = $cmd & $filesetting & $tmptxt If FileExists($cmd & $filesetting & $tmptxt) Then $fc = 0 EndIf If $fc = 0 Then While $fnr < 10000 $tmpfile = $cmd & $filesetting & _StringRepeat("0", 4 - StringLen($fnr)) & $fnr & $tmptxt ;MsgBox(0,"",$tmpfile) ; for debugging If Not (FileExists($tmpfile)) Then $tmpfile1 = $tmpfile ExitLoop EndIf $fnr = $fnr + 1 WEnd EndIf Return $tmpfile1 EndFunc ;==>GetFreeFileName ;================================================================================ Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $List If Not IsHWnd($List) Then $hWndListView = GUICtrlGetHandle($List) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_DBLCLK ; Fire the dummy if the ListView is double clicked GUICtrlSendToDummy($cDummy) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func DisplayReadMe($err) Local $Form1 = GUICreate("Read Me", 550, 400, 10, 10, BitOR($WS_CAPTION, $WS_THICKFRAME, $WS_MAXIMIZEBOX)) $Edit1 = GUICtrlCreateEdit("", 0, 0, 549, 399) GUICtrlSetData(-1, "") GUISetState(@SW_SHOW) If $err = 1 Then Local $txttmp01 = "Error: Path does not exist" Local $txttmp02 = "Commandline call was: " AddText($txttmp01) AddText($txttmp02 & $cmd & @CRLF & @CRLF) EndIf AddText("Instructions:" & @CRLF) AddText("Displays a selection of available extensions and then creates a new file at the Path's location." & @CRLF & @CRLF & "Usage: NewFile Path") AddText("Example: NewFile c:\myfolder\" & @CRLF) AddText("Result: A file with a name 'MyFile0000.ext' will be created at the Path's location.") AddText("If the filename exists, the number counter will increase, until it finds a free number, up to 9999." & @CRLF) AddText("You can change the filename in the input field. If the filename does not exists, it will be saved." & @CRLF) AddText("If the filename from the input field exists, the numbers (0000-9999) will be added." & @CRLF) AddText("Use Save Clip button to copy the Clipboard text content into the file !" & @CRLF) AddText("OK + save clip buttons are clickable, only when an extension is selected. Save Clip needs (additionally) to have text data in the clipboard." & @CRLF) AddText("Uses a configuration file in the .exe folder named NewFile.ini !" & @CRLF) AddText("Example of a config file:" & @CRLF) AddText("[setting]" & @CRLF & "filename=MyFile>") AddText("UseMouseX=0 ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings !") AddText("UseMouseY=0 ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates !" & @CRLF) AddText(";Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number)" & @CRLF) AddText(";Format for this ini file is:" & @CRLF & ";Name e.g [Auto It]") AddText(";extension e.g 1=.au3" & @CRLF & "; p.s. only 1 extension per section ! the number must be 1" & @CRLF) AddText("[AutoIt3]" & @CRLF & "1=.au3" & @CRLF & @CRLF & "[Text]" & @CRLF & "1=.txt") _GUICtrlEdit_SetSel($Edit1, 0, 0) _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET) If $err = 1 Then _GUICtrlEdit_SetSel($Edit1, 0, StringLen($txttmp01 & $txttmp02 & $cmd) + 5) EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIDelete($Form1) ExitLoop EndSwitch WEnd EndFunc ;==>DisplayReadMe Func AddText($edittxt) _GUICtrlEdit_AppendText($Edit1, $edittxt & @CRLF) EndFunc ;==>AddText Func ConfigWindow() #Region ### START Koda GUI section ### Form=C:\!basic\AutoIt3\NewFileIniEd\Form1.kxf Global $IniEdGui = GUICreate("Config", 178, 184, -1, -1, BitOR($WS_CAPTION, $DS_MODALFRAME)) Global $iniEdDefName = GUICtrlCreateInput("", 79, 24, 98, 21) GUICtrlSetTip(-1, "Set the default filename") $label = GUICtrlCreateLabel("Default Name", 5, 28, 69, 17) Global $CheckboxMX = GUICtrlCreateCheckbox("MouseX", 3, 3, 55, 17) GUICtrlSetTip(-1, "Open the Window at the MouseX coorditates") Global $CheckboxMY = GUICtrlCreateCheckbox("MouseY", 64, 3, 62, 17) GUICtrlSetTip(-1, "Open the Window at the MouseY coorditates") Global $configed = GUICtrlCreateEdit("", 3, 50, 174, 114) GUICtrlSetFont($configed, 10, $FW_BOLD, $GUI_FONTNORMAL, "ARIAL") GUICtrlSetTip(-1, "Use:" & @CRLF & "Name;Extension" & @CRLF & "Extension without ." & @CRLF & "Name should be unique and no [] chars") $ButtonSave = GUICtrlCreateButton("Save", 3, 165, 40, 18) GUICtrlSetTip(-1, "Save the extensions + Default name") $ButtonQuit = GUICtrlCreateButton("Quit", 137, 165, 40, 18) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### CFGRead() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $ButtonQuit ExitLoop Case $ButtonSave CFGWrite() Case $CheckboxMX If _IsChecked($CheckboxMX) = 1 Then IniWrite($sFilePath, "setting", "UseMouseX", "1") Else IniWrite($sFilePath, "setting", "UseMouseX", "0") EndIf Case $CheckboxMY If _IsChecked($CheckboxMY) = 1 Then IniWrite($sFilePath, "setting", "UseMouseY", "1") Else IniWrite($sFilePath, "setting", "UseMouseY", "0") EndIf EndSwitch WEnd GUIDelete($IniEdGui) EndFunc ;==>ConfigWindow Func CFGRead() Local $y = 0 Local $tmp1 = "", $tmp2 = "", $tmp3 Local $aTmp = IniReadSectionNames($sFilePath) If @error = 0 Then For $x = 1 To $aTmp[0] If $aTmp[$x] <> "setting" Then $y = $y + 1 $tmp1 = $aTmp[$x] $tmp2 = StringReplace(IniRead($sFilePath, $aTmp[$x], "1", ""), ".", "") If StringLen($tmp2) > 0 Then $tmp3 = $tmp3 & $tmp1 & ";" & $tmp2 & @CRLF EndIf EndIf Next GUICtrlSetData($configed, $tmp3) EndIf If IniRead($sFilePath, "setting", "UseMouseX", "0") = 1 Then _CheckUncheck($CheckboxMX, 1) If IniRead($sFilePath, "setting", "UseMouseY", "0") = 1 Then _CheckUncheck($CheckboxMY, 1) GUICtrlSetData($iniEdDefName, IniRead($sFilePath, "setting", "filename", "")) EndFunc ;==>CFGRead Func CFGWrite() Local $tmp, $tmp1, $tmp2, $tmpx, $filesetting Local $aTmp = IniReadSectionNames($sFilePath) If @error = 0 Then For $x = 1 To $aTmp[0] If $aTmp[$x] <> "setting" Then IniDelete($sFilePath, $aTmp[$x]) EndIf Next EndIf $filesetting = StringRemoveMulti(GUICtrlRead($iniEdDefName), "<:./\[]*?=") IniWrite($sFilePath, "setting", "filename", StringReplace($filesetting, " ", ">")) $tmp = StringRemoveMulti(GUICtrlRead($configed), "<>:./\[]*?=") GUICtrlSetData($configed, $tmp) $aTmp = StringSplit($tmp, @CRLF, 3) For $x = 0 To UBound($aTmp) - 1 $tmp = $aTmp[$x] $tmpx = StringInStr($tmp, ";") If $tmpx > 0 Then $tmp1 = StringMid($tmp, 1, $tmpx - 1) $tmp2 = StringMid($tmp, $tmpx + 1) If StringLen($tmp1) > 0 And StringLen($tmp2) > 0 Then IniWrite($sFilePath, $tmp1, "1", "." & $tmp2) EndIf Next EndFunc ;==>CFGWrite Func StringRemoveMulti($txt, $rep) ;Replace each single char in $rep from $txt ;eg $txt="MyFileName:Which\Should/not*contain invalid chars" $rep=":/\*" Returns: "MyFileNameWhichShouldnotcontain invalid chars" Local $x For $x = 1 To StringLen($rep) $txt = StringReplace($txt, StringMid($rep, $x, 1), "") Next Return $txt EndFunc ;==>StringReplaceMulti Func _CheckUncheck($id, $nr) If $nr = 0 Then GUICtrlSetState($id, $GUI_UNCHECKED) Else GUICtrlSetState($id, $GUI_CHECKED) EndIf EndFunc ;==>_CheckUncheck Func _IsChecked($idControlID) ;Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED ;Returns true or false (oneliner) ;The lines below convert true and false to numbers - 1 and 0 Local $x = BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED If $x = True Then Return 1 Return 0 EndFunc ;==>_IsChecked Edit: 9.4.2020 - Fixed the bug (the 3 null bytes at the end of the file do not appear now.) Edit:26.02.2023 - Replaced the Label with input box, now you can enter a custom filename and Newfile will save it under that name if it does not exist, or add numbers if the file exists. Edited April 23, 2023 by Dan_555 Update: Added a configuration window. Some of my script sourcecode
Dan_555 Posted March 4, 2023 Author Posted March 4, 2023 (edited) Edit:04.03.2023 - New version (post #2): Now the last used extension will be automatically selected. Edited March 4, 2023 by Dan_555 Some of my script sourcecode
Trong Posted March 5, 2023 Posted March 5, 2023 You can optimize ini files to easily add and modify ini files without rewriting code: expandcollapse popup[Ext_Conf] count= 10 [Ext_1] Ext= au3 Title= AutoIt Script [Ext_2] Ext= ahk Title= Auto Hotkey [Ext_3] Ext= txt Title= Text [Ext_4] Ext= sdlbas Title= Sdl Basic [Ext_5] Ext= html Title= Webpage [Ext_6] Ext= bas Title= Basic [Ext_7] Ext= pas Title= Pascal [Ext_8] Ext= rtf Title= Rich Text (RTF) [Ext_9] Ext= doc Title= Word Document [Ext_10] Ext= hex Title= Hex File Regards,
Dan_555 Posted March 5, 2023 Author Posted March 5, 2023 (edited) Uhm, currently the script can read unlimited extensions (within the ini file limitations ... ). you just have to add some to the ini file, there is no need to change anything in the script. Edit: While looking at the sourcecode i have noticed that i have inserted some code which could bypass the error checking. this is now fixed (see post #1 + 2). Edited March 5, 2023 by Dan_555 argumentum 1 Some of my script sourcecode
Dan_555 Posted April 23, 2023 Author Posted April 23, 2023 (edited) Updated the code in the 2nd post. It has now the configuration window. You can now change the default filename, turn on mouse x/y coordinate window spawn and add/arrange extensions in a edit box. Edited April 23, 2023 by Dan_555 Some of my script sourcecode
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now