Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; @AZJIO
- #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
- #AutoIt3Wrapper_OutFile=contmenu.exe
- #AutoIt3Wrapper_icon=contmenu.ico
- #AutoIt3Wrapper_Compression=4
- #AutoIt3Wrapper_UseAnsi=y
- #AutoIt3Wrapper_Res_Comment=-
- #AutoIt3Wrapper_Res_Description=contmenu.exe
- #AutoIt3Wrapper_Res_Fileversion=0.2.0.0
- #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n
- #AutoIt3Wrapper_Res_LegalCopyright=AZJIO
- #AutoIt3Wrapper_Res_Language=1049
- #AutoIt3Wrapper_Run_AU3Check=n
- #AutoIt3Wrapper_Res_Field=Version|0.2
- #AutoIt3Wrapper_Res_Field=Build|2011.08.31
- #AutoIt3Wrapper_Res_Field=Coded by|AZJIO
- #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
- #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
- #AutoIt3Wrapper_Run_Obfuscator=y
- #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
- #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
- #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
- #NoTrayIcon
- Opt("GUIOnEventMode", 1)
- If RegRead("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "Path")<>@ScriptFullPath Then RegDelete("HKLM\SOFTWARE\AZJIO_Soft\contmenu")
- $close = RegRead("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close")
- If @error Then
- RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close", "REG_SZ", "1")
- RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "Path", "REG_SZ", @ScriptFullPath)
- $close = '1'
- ;регистрация в реестре и копирование в системную папку при первом запуске
- RegWrite("HKCR\*\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление файлом')
- RegWrite("HKCR\Directory\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление каталогом')
- RegWrite("HKCR\Drive\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление каталогом')
- RegWrite("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление каталогом') ; мои документы
- If @compiled Then
- RegWrite("HKCR\*\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
- RegWrite("HKCR\Directory\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
- RegWrite("HKCR\Drive\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
- RegWrite("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
- Else
- RegWrite("HKCR\*\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
- RegWrite("HKCR\Directory\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
- RegWrite("HKCR\Drive\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
- RegWrite("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
- EndIf
- MsgBox(0, 'Сообщение', 'Утилита добавлена в контекстное меню каталогов и файлов, '&@CRLF&'Удаление утилиты из контекстного меню доступно из окна управления файлами')
- EndIf
- Global $Typelist, $subfol, $listfull, $checkAtrb, $delcombo, $sTarget, $assot, $aPath, $7zipPath, $Ini, $password, $ScanPath, $textedit, $WinRARPath, $TrF
- $Ini=@ScriptDir&'\contmenu.ini'
- If Not FileExists($ini) Then
- If DriveStatus(StringLeft(@ScriptDir, 1))<>'NOTREADY' Then
- _SaveINI()
- While 1
- Sleep(100000)
- WEnd
- Else
- MsgBox(0, 'Ошибка', 'Отсутствует contmenu.ini и невозможно его создать на диске.')
- Exit
- EndIf
- EndIf
- $password = IniRead ($Ini, 'set', 'password', 'my_password')
- $ScanPath = IniRead ($Ini, 'set', 'ScanPath', @ProgramFilesDir&'\Scanner\Scanner.exe')
- $WinRARPath = IniRead ($Ini, 'set', 'WinRARPath', @ProgramFilesDir&'\WinRAR\WinRAR.exe')
- $7zipPath = IniRead ($Ini, 'set', '7zipPath', @ProgramFilesDir&'\7-Zip\7z')
- $textedit = IniRead ($Ini, 'set', 'textedit', @SystemDir&'\notepad.exe')
- If $CmdLine[0]=0 Then Exit
- $sTarget = $CmdLine[1]
- Global $aFolder, $aPathexe[1], $aPath = StringRegExp($sTarget, "(^.*)\\(.*)$", 3)
- ; если каталог, тогда ... иначе ...
- If StringInStr(FileGetAttrib($sTarget), 'D') Then
- $TrF=1
- ; начало создания окна, вкладок, кнопок.
- GUICreate($aPath[1], 310, 198) ; размер окна
- GUISetBkColor (0xF9F9F9)
- GUISetIcon('shell32.dll',-4)
- GUISetOnEvent(-3, "_Exit")
- $StatusBar=GUICtrlCreateLabel ('Строка состояния', 5,181,300,17,0xC) ; лейбл без автопереноса
- $checkclose = GUICtrlCreateCheckbox("Закрывать диалог при клике на кнопке", 10, 10, 290, 24)
- GUICtrlSetOnEvent(-1, "_checkclose")
- If $close = '1' Then GuiCtrlSetState(-1, 1)
- $comstr = GUICtrlCreateButton("cmd", 10, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_cmd")
- GUICtrlSetTip(-1, "Открыть ком-строку отсюда" & @CRLF & "Для выполнения DOS-команд")
- GUICtrlSetImage(-1, @SystemDir & '\cmd.exe', 1, 0)
- If $ScanPath<>'' And FileExists($ScanPath) Then
- $Scanner = GUICtrlCreateButton("scn", 35, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_Scanner")
- GUICtrlSetTip(-1, "Открыть в Scanner, для просмотра" & @CRLF & "занимаемого пространтсва на харде")
- GUICtrlSetImage(-1, $ScanPath, 1, 0)
- EndIf
- $Virtcd1 = GUICtrlCreateButton("cd+", 315, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_Virtcd1")
- GUICtrlSetTip(-1, "Создать виртуальный" & @CRLF & "диск Y: из папки")
- GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 10, 0)
- $Virtcd2 = GUICtrlCreateButton("cd-", 315, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_Virtcd2")
- GUICtrlSetTip(-1, "Отключить виртуальный" & @CRLF & "диск Y:")
- GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 11, 0)
- _subst()
- If $WinRARPath<>'' And FileExists($WinRARPath) Then
- $winrar = GUICtrlCreateButton("rar", 85, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_winrar")
- GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
- GUICtrlSetImage(-1, $WinRARPath, 1, 0)
- EndIf
- If $7zipPath<>'' And FileExists($7zipPath&'.exe') Then
- $7zip = GUICtrlCreateButton("7z", 110, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_7zip")
- GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
- GUICtrlSetImage(-1, $7zipPath&'FM.exe', 1, 0)
- EndIf
- $compression = GUICtrlCreateButton("prs", 135, 40, 21, 21)
- GUICtrlSetOnEvent(-1, "_compression")
- GUICtrlSetTip(-1, "Применить NTFS-сжатие" & @CRLF & "к папке и её содержимому ")
- GUICtrlSetColor(-1,0x0000ff)
- GUICtrlSetBkColor(-1,0xdddddd)
- $decompression = GUICtrlCreateButton("de", 160, 40, 21, 21)
- GUICtrlSetOnEvent(-1, "_decompression")
- GUICtrlSetTip(-1, "Отменить NTFS-сжатие" & @CRLF & "к папке и её содержимому")
- GUICtrlSetColor(-1,0x000000)
- GUICtrlSetBkColor(-1,0xdddddd)
- GUICtrlCreateGroup ("", 7, 65, 296, 33)
- $list = GUICtrlCreateButton("", 10, 74, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_FileList")
- GUICtrlSetTip(-1, "Создать список файлов")
- GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 2, 0)
- $listfull = GUICtrlCreateCheckbox("Полный путь", 35, 75, 90, 20)
- $subfol = GUICtrlCreateCheckbox("подпапки", 130, 75, 70, 20)
- GUICtrlSetTip(-1, 'Включая вложенные')
- GUICtrlCreateLabel("Тип:", 207, 77, 29, 17)
- $Typelist = GUICtrlCreateInput ("", 230, 75, 70, 20)
- GUICtrlSetTip(-1, "Список только для" & @CRLF & 'указанных типов файлов' & @CRLF & 'например exe;dll;com' & @CRLF & 'Или маска "Мо*.tx?"')
- GUICtrlCreateGroup ("", 7, 100, 296, 36)
- $cacls = GUICtrlCreateButton("Доступ", 10, 110, 90, 24)
- GUICtrlSetOnEvent(-1, "_cacls")
- GUICtrlSetTip(-1, "Можно дать доступ к папке" & @CRLF & "System Volume Information")
- $accfncombo = GUICtrlCreateCombo("", 105, 110, 95, 24)
- GUICtrlSetData(-1, 'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
- GUICtrlSetTip($accfncombo, "Пользователи и группы")
- $access = GUICtrlCreateCombo("", 205, 110, 95, 24)
- GUICtrlSetData(-1, 'запрет|чтение|запись|изменение|полный', 'полный')
- GUICtrlSetTip(-1, "Тип доступа")
- GUICtrlCreateGroup ("", 7, 138, 296, 36)
- $dfile = GUICtrlCreateButton("Удалить", 10, 148, 55, 24)
- GUICtrlSetOnEvent(-1, "_Delete")
- GUICtrlSetTip(-1, "Удалить тип файлов," & @CRLF & "разделяя через ;")
- $delcombo = GUICtrlCreateCombo("", 70, 148, 130, 24)
- GUICtrlSetData(-1, 'bak;gid;log;tmp|htm;html;css;js;php|bmp;gif;jpg;jpeg;png;tif;tiff|exe;msi;scr;dll;cpl;ax|com;sys;bat;cmd', 'bak;gid;log;tmp')
- $checkAtrb = GUICtrlCreateCheckbox("Снять атрибут", 205, 148, 95, 24)
- GuiCtrlSetState(-1, 1)
- GUICtrlSetTip($checkAtrb, "Снимать атрибуты файла" & @CRLF & "для возможности его удалить")
- $script = GUICtrlCreateButton("au3", 279, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_Script_Edit")
- GUICtrlSetTip(-1, "Редактировать скрипт" & @CRLF & "(пароль, пути)")
- GUICtrlSetImage(-1, @AutoItExe, 1, 0)
- Else
- ; здесь для файлов.
- ; начало создания окна, вкладок, кнопок.
- $TrF=0
- GUICreate($aPath[1], 310, 125) ; размер окна
- GUISetBkColor (0xF9F9F9)
- $sExt=StringRegExpReplace($sTarget, '^(?:.*)(\.[^.\\]+)$', '\1')
- $ico1=_FileDefaultIcon($sExt)
- If Not @error Then
- Switch UBound($ico1)
- Case 2
- If StringInStr(';.exe;.scr;.ico;.ani;.cur;', ';'&$sExt&';') Then
- GUISetIcon($sTarget)
- Else
- GUISetIcon($ico1[1])
- EndIf
- Case 3
- GUISetIcon($ico1[1],($ico1[2]+1)*-1)
- EndSwitch
- EndIf
- GUISetOnEvent(-3, "_Exit")
- $StatusBar=GUICtrlCreateLabel ('Строка состояния', 5,108,300,17,0xC) ; лейбл без автопереноса
- $checkclose = GUICtrlCreateCheckbox("Закрывать диалог при клике на кнопке", 10, 10, 266, 24)
- GUICtrlSetOnEvent(-1, "_checkclose")
- If $close = '1' Then GuiCtrlSetState(-1, 1)
- $uninstall = GUICtrlCreateButton("unl", 280, 10, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_uninstall")
- GUICtrlSetTip(-1, "Удалить регистрацию панельки в реестре" & @CRLF & "соответственно удаление из контекст. меню")
- GUICtrlSetImage(-1, @SystemDir & '\xpsp2res.dll', 1, 0)
- $comfile = GUICtrlCreateButton("Открыть ком-строку отсюда", 10, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_comfile")
- GUICtrlSetTip(-1, "Открыть ком-строку отсюда" & @CRLF & "Для выполнения DOS-команд")
- GUICtrlSetImage(-1, @SystemDir & '\cmd.exe', 1, 0)
- If $WinRARPath<>'' And FileExists($WinRARPath) Then
- $winrar = GUICtrlCreateButton("rar", 85, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_winrar")
- GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
- GUICtrlSetImage(-1, $WinRARPath, 1, 0)
- EndIf
- If $7zipPath<>'' And FileExists($7zipPath&'.exe') Then
- $7zip = GUICtrlCreateButton("7z", 110, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_7zip")
- GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
- GUICtrlSetImage(-1, $7zipPath&'FM.exe', 1, 0)
- EndIf
- $compression = GUICtrlCreateButton("prs", 135, 40, 21, 21)
- GUICtrlSetOnEvent(-1, "_compression")
- GUICtrlSetTip(-1, "Применить NTFS-сжатие" & @CRLF & "к файлу ")
- GUICtrlSetColor(-1,0x0000ff)
- GUICtrlSetBkColor(-1,0xdddddd)
- $decompression = GUICtrlCreateButton("de", 160, 40, 21, 21)
- GUICtrlSetOnEvent(-1, "_decompression")
- GUICtrlSetTip(-1, "Отменить NTFS-сжатие" & @CRLF & "к файлу")
- GUICtrlSetColor(-1,0x000000)
- GUICtrlSetBkColor(-1,0xdddddd)
- $Pathfull = GUICtrlCreateButton("", 35, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_Pathfull")
- GUICtrlSetTip(-1, "Линк файла в буфер," & @CRLF & "полный путь и имя")
- GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 2, 0)
- $assot = GUICtrlCreateButton("", 60, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_assot")
- GUICtrlSetTip(-1, "Открыть каталог" & @CRLF & "ассоциированной программы")
- GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
- GUICtrlCreateGroup ("", 7, 65, 296, 37)
- $cacls = GUICtrlCreateButton("Доступ", 10, 75, 90, 24)
- GUICtrlSetOnEvent(-1, "_cacls")
- GUICtrlSetTip(-1, "Установить доступ к файлам")
- $accfncombo = GUICtrlCreateCombo("", 105, 75, 95, 24)
- GUICtrlSetData(-1, 'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
- GUICtrlSetTip($accfncombo, "Пользователи и группы")
- $access = GUICtrlCreateCombo("", 210, 75, 90, 24)
- GUICtrlSetData(-1, 'запрет|чтение|запись|изменение|полный', 'полный')
- GUICtrlSetTip($access, "Тип доступа")
- $script = GUICtrlCreateButton("au3", 279, 40, 21, 21, 0x0040)
- GUICtrlSetOnEvent(-1, "_Script_Edit")
- GUICtrlSetTip(-1, "Редактировать скрипт" & @CRLF & "(пароль, пути)")
- GUICtrlSetImage(-1, @AutoItExe, 1, 0)
- EndIf
- GUISetState()
- While 1
- Sleep(100000)
- WEnd
- Func _cacls()
- $accfncombo0 = GUICtrlRead($accfncombo)
- $access00 = GUICtrlRead($access)
- Switch $access00
- Case $access00 = "запрет"
- $access0 = "N"
- Case $access00 = "чтение"
- $access0 = "R"
- Case $access00 = "запись"
- $access0 = "W"
- Case $access00 = "изменение"
- $access0 = "C"
- Case $access00 = "полный"
- $access0 = "F"
- Case Else
- $access0 = "F"
- EndSwitch
- ShellExecuteWait(@SystemDir & '\cacls.exe', '"' & $sTarget & '" /t /e /p "' & $accfncombo0 & '":' & $access0, '', '', @SW_HIDE)
- _cc()
- _sb('Изменение доступа выполнено')
- EndFunc ;==>_cacls
- Func _Script_Edit()
- Local $Pathexe
- If @compiled Then
- If FileExists($textedit) Then
- Run('"'&$textedit&'" "'&@ScriptFullPath&'"')
- Else
- $Pathexe = _FileAssociation('.txt')
- If Not @error And FileExists($Pathexe) Then Run('"'&$Pathexe&'" "'&@ScriptFullPath&'"')
- EndIf
- Else
- $Pathexe=StringRegExpReplace(@AutoItExe, '(.*)\\(?:.*)$', '\1')
- If FileExists($Pathexe&'\SciTE\SciTE.exe') Then
- Run('"'&$Pathexe&'\SciTE\SciTE.exe" "'&@ScriptFullPath&'"')
- Else
- If FileExists($textedit) Then
- Run('"'&$textedit&'" "'&@ScriptFullPath&'"')
- Else
- $Pathexe = _FileAssociation('.txt')
- If Not @error And FileExists($Pathexe) Then
- Run('"'&$Pathexe&'" "'&@ScriptFullPath&'"')
- Else
- Run('Notepad.exe "'&@ScriptFullPath&'"')
- EndIf
- EndIf
- EndIf
- EndIf
- EndFunc
- Func _subst()
- If FileExists("Y:\") Then
- GUICtrlSetPos($Virtcd2, 60, 40)
- GUICtrlSetPos($Virtcd1, 315, 40)
- Else
- GUICtrlSetPos($Virtcd1, 60, 40)
- GUICtrlSetPos($Virtcd2, 315, 40)
- EndIf
- EndFunc ;==>_subst
- Func _winrar()
- Local $filename, $i
- _sb('Выполняется...')
- ; генерируем имя нового файла с номером копии на случай если файл существует
- $i = 1
- While FileExists($aPath[0]&'\'&$aPath[1]&$i&'.rar')
- $i +=1
- WEnd
- $filename=$aPath[0]&'\'&$aPath[1]&$i&'.rar'
- If not FileExists($aPath[0]&'\'&$aPath[1]&'.rar') Then $filename=$aPath[0]&'\'&$aPath[1]&'.rar'
- RunWait ( $WinRARPath&' a -hp"'&$password&'" -m5 "'&$filename&'" "'&$aPath[1]&'"', '', @SW_HIDE )
- _sb('Готово - "'&StringRegExpReplace($filename, '(?:.*)\\(.*)$', '\1')&'"')
- _cc()
- EndFunc ;==>_winrar
- Func _7zip()
- Local $filename, $i
- _sb('Выполняется...')
- ; генерируем имя нового файла с номером копии на случай если файл существует
- $i = 1
- While FileExists($aPath[0]&'\'&$aPath[1]&$i&'.7z')
- $i +=1
- WEnd
- $filename=$aPath[0]&'\'&$aPath[1]&$i&'.7z'
- If not FileExists($aPath[0]&'\'&$aPath[1]&'.7z') Then $filename=$aPath[0]&'\'&$aPath[1]&'.7z'
- RunWait ( $7zipPath&'.exe a "'&$filename&'" -p"'&$password&'" -mhe -mx9 "'&$aPath[1]&'"', '', @SW_HIDE )
- _sb('Готово - "'&StringRegExpReplace($filename, '(?:.*)\\(.*)$', '\1')&'"')
- _cc()
- EndFunc ;==>_7zip
- Func _cc()
- If GUICtrlRead($checkclose) = 1 Then Exit
- EndFunc
- Func _sb($i)
- GUICtrlSetData($StatusBar,$i)
- EndFunc
- Func _checkclose()
- If GUICtrlRead($checkclose) = 1 Then
- RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close", "REG_SZ", "1")
- Else
- RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close", "REG_SZ", "0")
- EndIf
- EndFunc ;==>_checkclose
- Func _cmd()
- Run(@SystemDir & '\cmd.exe /k cd "' & $sTarget & '"')
- _cc()
- EndFunc
- Func _Scanner()
- ShellExecute($ScanPath, '"' & $sTarget & '"', '', '', @SW_HIDE)
- _cc()
- EndFunc
- Func _Virtcd1()
- Run ( @Comspec&' /C subst y: "'&$sTarget&'"', '', @SW_HIDE )
- Sleep(150)
- _subst()
- _cc()
- _sb('Диск Y создан')
- EndFunc
- Func _Virtcd2()
- Run ( @Comspec&' /C subst y: /d', '', @SW_HIDE )
- Sleep(150)
- _subst()
- _cc()
- _sb('Диск Y отключен')
- EndFunc
- Func _compression()
- Local $s=''
- If $TrF=1 Then $s='/s:'
- _sb('Выполняется...')
- RunWait ( @Comspec&' /C compact /c /i '&$s&'"'&$sTarget&'"', '', @SW_HIDE )
- _cc()
- _sb('NTFS-сжатие выполнено')
- EndFunc
- Func _decompression()
- Local $s=''
- If $TrF=1 Then $s='/s:'
- _sb('Выполняется...')
- RunWait ( @Comspec&' /C compact /u /i '&$s&'"'&$sTarget&'"', '', @SW_HIDE )
- _cc()
- _sb('NTFS-разжатие выполнено')
- EndFunc
- Func _FileList()
- Local $aPath
- $Typelist0=GUICtrlRead($Typelist)
- If GUICtrlRead($subfol) = 1 Then ; поиск в подпапках
- $subfol0=100
- Else
- $subfol0=0
- EndIf
- If GUICtrlRead($listfull)=1 Then
- $listfull0=1
- Else
- $listfull0=2
- EndIf
- $timer = TimerInit()
- $Text=_FileSearch($sTarget, $Typelist0, True, $subfol0, $listfull0, 0)
- If @error Then Return MsgBox(0, 'Сообщение', 'Неверная маска')
- If $subfol0=0 And($Typelist0='' Or $Typelist0='*') Then
- $folder=_FolderSearch($sTarget)
- If $listfull0=2 Then $folder=StringRegExpReplace($folder, '(?m)^(?:.*\\)(.*)$', '\1')
- $Text=$folder&$Text
- EndIf
- If $Text = '' Then Return MsgBox(0, 'Сообщение', 'Ничего не найдено')
- _sb('Выполнено за '&Round(TimerDiff($timer) / 1000,1)&' сек')
- ClipPut($Text)
- $file = FileOpen(@TempDir & '\contmenu_file.txt', 2)
- If $file = -1 Then
- MsgBox(0, "Ошибка", "Не возможно открыть файл.")
- Exit
- EndIf
- FileWrite($file, $Text)
- FileClose($file)
- If FileExists($textedit) Then
- Run('"'&$textedit&'" "'&@TempDir & '\contmenu_file.txt"')
- Else
- $Pathexe = _FileAssociation('.txt')
- If Not @error And FileExists($Pathexe) Then
- Run('"'&$Pathexe&'" "'&@TempDir & '\contmenu_file.txt"')
- Else
- Run('Notepad.exe ' & @TempDir & '\contmenu_file.txt')
- EndIf
- EndIf
- _cc()
- EndFunc
- Func _FolderSearch($Path)
- Local $FileList='', $file, $s = FileFindFirstFile($Path&'\*')
- If $s = -1 Then Return ''
- While 1
- $file = FileFindNextFile($s)
- If @error Then ExitLoop
- If @extended Then
- $FileList&=$Path&'\'&$file&@CRLF
- EndIf
- WEnd
- FileClose($s)
- Return $FileList
- EndFunc
- Func _Delete()
- $delcombo0 = GUICtrlRead($delcombo)
- $timer = TimerInit()
- $aFile=_FileSearch($sTarget, $delcombo0, True, 100, 1, 1)
- If @error Then Return MsgBox(0, 'Сообщение', 'Неверная маска')
- If $aFile[0]=0 Then Return MsgBox(0, 'Сообщение', 'Ничего не найдено')
- _sb('Список создан, '&$aFile[0]&' файлов за '&Round(TimerDiff($timer) / 1000,1)&' сек, удаление')
- $kol = 0
- If GUICtrlRead($checkAtrb) = 1 Then
- For $i = 1 to $aFile[0]
- FileSetAttrib($aFile[$i], "-RASHT")
- If FileDelete($aFile[$i]) Then $kol += 1
- Next
- Else
- For $i = 1 to $aFile[0]
- If FileDelete($aFile[$i]) Then $kol += 1
- Next
- EndIf
- _cc()
- _sb('Удалено '&$kol&' файлов из '&$aFile[0])
- EndFunc
- Func _Exit()
- Exit
- EndFunc
- Func _uninstall()
- RegDelete("HKCR\*\shell\AZJIO_contmenu")
- RegDelete("HKCR\Directory\shell\AZJIO_contmenu")
- RegDelete("HKCR\Drive\shell\AZJIO_contmenu")
- RegDelete("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu") ; мои документы
- RegDelete("HKLM\SOFTWARE\AZJIO_Soft\contmenu")
- _cc()
- EndFunc
- Func _Pathfull()
- ClipPut($sTarget)
- _cc()
- GUICtrlSetTip($Pathfull, "Полный путь и имя" & @CRLF & $sTarget)
- _sb('В буфере полный путь к файлу - "'&StringRegExpReplace($sTarget, '(?:.*)\\(.*)$', '\1')&'"')
- EndFunc
- Func _assot()
- $type=StringRegExpReplace($sTarget, '.*(\.\S+)', '\1')
- $Path=_FileAssociation($type)
- If @error Or Not FileExists($Path) Then
- _sb('Каталог не определён')
- GUICtrlSetPos($assot, 315, 40)
- Return
- Else
- Run('Explorer.exe /select,"' & $Path & '"')
- EndIf
- _cc()
- EndFunc
- Func _FileAssociation($sExt)
- Local $aCall = DllCall("shlwapi.dll", "int", "AssocQueryStringW", _
- "dword", 0x00000040, _ ;$ASSOCF_VERIFY
- "dword", 2, _ ;$ASSOCSTR_EXECUTABLE
- "wstr", $sExt, _
- "ptr", 0, _
- "wstr", "", _
- "dword*", 65536)
- If @error Then Return SetError(1, 0, "")
- If Not $aCall[0] Then
- Return SetError(0, 0, $aCall[5])
- ElseIf $aCall[0] = 0x80070002 Then
- Return SetError(1, 0, "{unknown}")
- ElseIf $aCall[0] = 0x80004005 Then
- Return SetError(1, 0, "{fail}")
- Else
- Return SetError(2, $aCall[0], "")
- EndIf
- EndFunc ;==>_FileAssociation
- Func _comfile()
- Local $aPath = StringRegExp($sTarget, "(^.*)\\(.*)$", 3)
- ClipPut($aPath[1])
- Run(@SystemDir & '\cmd.exe /k cd "' & $aPath[0] & '"')
- WinWait("[CLASS:ConsoleWindowClass]")
- Send("!{SPACE}")
- Send("{DOWN 6}")
- Send("{ENTER}")
- Send("{DOWN 2}")
- Send("{ENTER}")
- _cc()
- EndFunc
- Func _SaveINI()
- $Gui1 = GUICreate('Первый запуск', 320, 300)
- GUISetOnEvent(-3, "_Exit1")
- Global $inpSet[5]
- GUICtrlCreateLabel('Укажите путь к WinRAR', 10, 13, 300, 17)
- $inpSet[0]=GUICtrlCreateInput('', 10, 30, 300, 20)
- GUICtrlCreateLabel('Укажите путь к 7-Zip', 10, 63, 300, 17)
- $inpSet[1]=GUICtrlCreateInput('', 10, 80, 300, 20)
- GUICtrlCreateLabel('Укажите путь к блокноту', 10, 113, 300, 17)
- $inpSet[2]=GUICtrlCreateInput('', 10, 130, 300, 20)
- GUICtrlCreateLabel('Укажите путь к Scanner', 10, 163, 300, 17)
- $inpSet[3]=GUICtrlCreateInput('', 10, 180, 300, 20)
- GUICtrlCreateLabel('Укажите пароль', 10, 213, 300, 17)
- $inpSet[4]=GUICtrlCreateInput('', 10, 230, 300, 20)
- GUICtrlCreateButton('OK', 125, 260, 70, 25)
- GUICtrlSetOnEvent(-1, "_OK")
- If FileExists(@ProgramFilesDir & '\WinRAR\WinRAR.exe') Then
- GUICtrlSetData($inpSet[0],@ProgramFilesDir & '\WinRAR\WinRAR.exe')
- Else
- GUICtrlSetData($inpSet[0],'C:\Program Files\WinRAR\WinRAR.exe')
- EndIf
- If FileExists(@ProgramFilesDir & '\7-Zip\7z.exe') Then
- GUICtrlSetData($inpSet[1],@ProgramFilesDir & '\7-Zip\7z')
- Else
- GUICtrlSetData($inpSet[1],'C:\Program Files\7-Zip\7z')
- EndIf
- If FileExists(@ProgramFilesDir & '\Notepad++\Notepad++.exe') Then
- GUICtrlSetData($inpSet[2],@ProgramFilesDir & '\Notepad++\Notepad++.exe')
- Else
- GUICtrlSetData($inpSet[2],@SystemDir&'\notepad.exe')
- EndIf
- If FileExists(@ProgramFilesDir & '\Scanner\Scanner.exe') Then
- GUICtrlSetData($inpSet[3],@ProgramFilesDir & '\Scanner\Scanner.exe')
- Else
- GUICtrlSetData($inpSet[3],'C:\Program Files\Scanner\Scanner.exe')
- EndIf
- GUICtrlSetData($inpSet[4],'my_password')
- GUISetState(@SW_SHOW, $Gui1)
- EndFunc
- Func _OK()
- $file = FileOpen($Ini,2)
- FileWrite($file, '[set]' & @CRLF & _
- 'WinRARPath='&GUICtrlRead($inpSet[0]) & @CRLF & _
- '7zipPath='&GUICtrlRead($inpSet[1])& @CRLF & _
- 'password='&GUICtrlRead($inpSet[2])& @CRLF & _
- 'ScanPath='&GUICtrlRead($inpSet[3])& @CRLF & _
- 'textedit='&GUICtrlRead($inpSet[4]))
- FileClose($file)
- Exit
- EndFunc
- Func _Exit1()
- $file = FileOpen($Ini,2)
- FileWrite($file, '[set]' & @CRLF & _
- 'WinRARPath='& @CRLF & _
- '7zipPath='& @CRLF & _
- 'password='& @CRLF & _
- 'ScanPath='& @CRLF & _
- 'textedit=')
- FileClose($file)
- Exit
- EndFunc
- Func _FileDefaultIcon($sExt)
- If $sExt = '' Or StringInStr($sExt, ':') Then Return SetError(1)
- Local $aCall = DllCall("shlwapi.dll", "int", "AssocQueryStringW", _
- "dword", 0x00000040, _ ;$ASSOCF_VERIFY
- "dword", 15, _ ;$ASSOCSTR_DEFAULTICON
- "wstr", $sExt, _
- "ptr", 0, _
- "wstr", "", _
- "dword*", 65536)
- If @error Then Return SetError(1, 0, "")
- If Not $aCall[0] Then
- $sExt=StringReplace($aCall[5], '"', '')
- $sExt=StringSplit($sExt, ',')
- Opt('ExpandEnvStrings', 1)
- $sExt[1]=$sExt[1]
- Opt('ExpandEnvStrings', 0)
- Return SetError(0, 0, $sExt)
- ElseIf $aCall[0] = 0x80070002 Then
- Return SetError(1, 0, "{unknown}")
- ElseIf $aCall[0] = 0x80004005 Then
- Return SetError(1, 0, "{fail}")
- Else
- Return SetError(2, $aCall[0], "")
- EndIf
- EndFunc ;==>_FileAssociation
- ; ============================================================================================
- ; Function Name ...: _FileSearch (__FileSearch, __FileSearchAll)
- ; AutoIt Version ....: 3.3.2.0+ , versions below this @extended should be replaced by of StringInStr(FileGetAttrib($Path&'\'&$file), "D")
- ; Description ........: Search files by mask in subdirectories.
- ; Syntax................: _FileSearch($Path[, $Mask = '*' [, $exclude=True [, $Level=100 [, $Full=1 [, $Arr=1]]]]])
- ; Parameters:
- ; $Path - search path
- ; $Mask - mask, the mask is allowed normal function FileFindFirstFile, or a list of extensions with the separator ";"
- ; $exclude - (True / False) invert the mask, that is excluded from the search for these types of files
- ; $Level - (0-100) nesting level (0 - root directory)
- ; $Full - 1 - full path, 0 - relative, 2 - file names with extension, 3 - file names without extension
- ; $Arr - if the value other than zero, the result is an array (by default ), 0 - a list of paths separated by @CRLF
- ; Return values ....: Success - Array ($array[0]=number of files) or a list of paths separated by @CRLF
- ; Failure - empty string, @error:
- ; |0 - no error
- ; |1 - Invalid path
- ; |2 - Invalid mask
- ; Author(s) ..........: AZJIO
- ; Remarks ..........: If an empty folder, it returns an empty string or array with one element $array[0]=0, @error=0
- ; ============================================================================================
- ; Имя функции ...: _FileSearch (__FileSearch, __FileSearchAll)
- ; Версия AutoIt ..: 3.3.2.0+ , в версиях ниже указанной нужно @extended заменить на StringInStr(FileGetAttrib($Path&'\'&$file), "D")
- ; Описание ........: Поиск файлов по маске в подкаталогах.
- ; Синтаксис.......: _FileSearch($Path[, $Mask = '*' [, $exclude=True [, $Level=100 [, $Full=1 [, $Arr=1]]]]])
- ; Параметры:
- ; $Path - путь поиска
- ; $Mask - маска, допустима обычная маска функции FileFindFirstFile, либо перечисление расширений через ";"
- ; $exclude - (True / False) инвертировать маску, то есть исключить из поиска указанные типы файлов
- ; $Level - (0-100) уровень вложенности (0 - корневой каталог)
- ; $Full - 1 - полный путь, 0 - относительный, 2 - имена файлов с расширением, 3 - имена файлов без расширения
- ; $Arr - значение кроме нуля результат в виде массива (по умолчанию), 0 - список с разделителем @CRLF
- ; Возвращаемое значение: Успешно - Массив ($array[0]=количество файлов) или список с разделителем @CRLF
- ; Неудачно - пустая строка, @error:
- ; |0 - нет ошибок
- ; |1 - неверный путь
- ; |2 - неверная маска
- ; Автор ..........: AZJIO
- ; Примечания ..: Если пустая папка, то возвращается пустая строка или массив с одной ячейкой $array[0]=0, при этом @error=0
- ; ============================================================================================
- ; функция проверки и подготовки входных параметров и обработка результирующего списка
- Func _FileSearch($Path, $Mask = '*', $exclude=True, $Level=100, $Full=1, $Arr=1)
- Local $FileList
- If Not StringRegExp($Path, '(?i)^[a-z]:[^/:*?"<>|]*$') Or StringInStr($Path, '\\') Then Return SetError(1, 0, '')
- If StringRight($Path, 1)='\' Then $Path=StringTrimRight($Path, 1)
- If $Mask = '' Then $Mask = '*'
- If StringInStr($Mask, '*') Or StringInStr($Mask, '?') Then
- If StringRegExp($Mask, '[\\/:"<>|]') Then Return SetError(2, 0, '')
- $FileList=StringTrimRight(__FileSearchAll($Path, $Mask, $Level), 2)
- Else
- If StringRegExp($Mask, '[\\/:*?"<>|]') Then Return SetError(2, 0, '')
- $Mask=';.'&StringReplace($Mask, ';', ';.')&';'
- $FileList=StringTrimRight(__FileSearch($Path, $Mask, $exclude, $Level), 2)
- EndIf
- Switch $Full
- Case 0
- $FileList=StringRegExpReplace($FileList, '(?m)^(?:.{'&StringLen($Path)+1&'})(.*)$', '\1')
- Case 2
- $FileList=StringRegExpReplace($FileList, '(?m)^(?:.*\\)(.*)$', '\1')
- Case 3
- $FileList=StringRegExpReplace($FileList, '(?m)^(?:.*\\)([^\\]*?)(?:\.[^.]+)?$', '\1')
- EndSwitch
- If $Arr = True Then
- $FileList=StringSplit($FileList, @CRLF, 1)
- If @error Then Dim $FileList[1]=[0]
- EndIf
- Return $FileList
- EndFunc
- ; поиск указанных типов файлов
- Func __FileSearch($Path, $Mask, $exclude, $Level, $LD=0)
- Local $FileList='', $file, $s = FileFindFirstFile($Path&'\*')
- If $s = -1 Then Return ''
- While 1
- $file = FileFindNextFile($s)
- If @error Then ExitLoop
- If @extended Then
- If $LD>=$Level Then ContinueLoop
- $LD+=1
- $FileList&=__FileSearch($Path&'\'&$file, $Mask, $exclude, $Level, $LD)
- $LD-=1
- Else
- If StringInStr($Mask, ';'&StringRight($file, 4)&';') = $exclude Then $FileList&=$Path&'\'&$file&@CRLF
- EndIf
- WEnd
- FileClose($s)
- Return $FileList
- EndFunc
- ; поиск по маске
- Func __FileSearchAll($Path, $Mask, $Level, $LD=0)
- Local $FileList='', $file, $s = FileFindFirstFile($Path&'\'&$Mask)
- If $s = -1 Then Return ''
- While 1
- $file = FileFindNextFile($s)
- If @error Then ExitLoop
- If @extended Then
- If $LD>=$Level Then ContinueLoop
- $LD+=1
- $FileList&=__FileSearchAll($Path&'\'&$file, $Mask, $Level, $LD)
- $LD-=1
- Else
- $FileList&=$Path&'\'&$file&@CRLF
- EndIf
- WEnd
- FileClose($s)
- Return $FileList
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement