Advertisement
AZJIO

меню 3

Sep 1st, 2011
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 31.38 KB | None | 0 0
  1. ;  @AZJIO
  2. #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
  3. #AutoIt3Wrapper_OutFile=contmenu.exe
  4. #AutoIt3Wrapper_icon=contmenu.ico
  5. #AutoIt3Wrapper_Compression=4
  6. #AutoIt3Wrapper_UseAnsi=y
  7. #AutoIt3Wrapper_Res_Comment=-
  8. #AutoIt3Wrapper_Res_Description=contmenu.exe
  9. #AutoIt3Wrapper_Res_Fileversion=0.2.0.0
  10. #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n
  11. #AutoIt3Wrapper_Res_LegalCopyright=AZJIO
  12. #AutoIt3Wrapper_Res_Language=1049
  13. #AutoIt3Wrapper_Run_AU3Check=n
  14. #AutoIt3Wrapper_Res_Field=Version|0.2
  15. #AutoIt3Wrapper_Res_Field=Build|2011.08.31
  16. #AutoIt3Wrapper_Res_Field=Coded by|AZJIO
  17. #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
  18. #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
  19. #AutoIt3Wrapper_Run_Obfuscator=y
  20. #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
  21. #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
  22. #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
  23.  
  24. #NoTrayIcon
  25. Opt("GUIOnEventMode", 1)
  26.  
  27. If RegRead("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "Path")<>@ScriptFullPath Then RegDelete("HKLM\SOFTWARE\AZJIO_Soft\contmenu")
  28. $close = RegRead("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close")
  29. If @error Then
  30.     RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close", "REG_SZ", "1")
  31.     RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "Path", "REG_SZ", @ScriptFullPath)
  32.     $close = '1'
  33.     ;регистрация в реестре и копирование в системную папку при первом запуске
  34.     RegWrite("HKCR\*\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление файлом')
  35.     RegWrite("HKCR\Directory\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление каталогом')
  36.     RegWrite("HKCR\Drive\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление каталогом')
  37.     RegWrite("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu", "", "REG_SZ", 'Управление каталогом') ; мои документы
  38.     If @compiled Then
  39.         RegWrite("HKCR\*\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
  40.         RegWrite("HKCR\Directory\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
  41.         RegWrite("HKCR\Drive\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
  42.         RegWrite("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu\command", "", "REG_SZ", '"'&@ScriptFullPath & '" "%1"')
  43.     Else
  44.         RegWrite("HKCR\*\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
  45.         RegWrite("HKCR\Directory\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
  46.         RegWrite("HKCR\Drive\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
  47.         RegWrite("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @ScriptFullPath & '" "%1"')
  48.     EndIf
  49.     MsgBox(0, 'Сообщение', 'Утилита добавлена в контекстное меню каталогов и файлов, '&@CRLF&'Удаление утилиты из контекстного меню доступно из окна управления файлами')
  50. EndIf
  51.  
  52. Global $Typelist, $subfol, $listfull, $checkAtrb, $delcombo, $sTarget, $assot, $aPath, $7zipPath, $Ini, $password, $ScanPath, $textedit, $WinRARPath, $TrF
  53.  
  54. $Ini=@ScriptDir&'\contmenu.ini'
  55. If Not FileExists($ini) Then
  56.     If DriveStatus(StringLeft(@ScriptDir, 1))<>'NOTREADY' Then
  57.         _SaveINI()
  58.         While 1
  59.             Sleep(100000)
  60.         WEnd
  61.     Else
  62.         MsgBox(0, 'Ошибка', 'Отсутствует contmenu.ini и невозможно его создать на диске.')
  63.         Exit
  64.     EndIf
  65. EndIf
  66.  
  67. $password = IniRead ($Ini, 'set', 'password', 'my_password')
  68. $ScanPath = IniRead ($Ini, 'set', 'ScanPath', @ProgramFilesDir&'\Scanner\Scanner.exe')
  69. $WinRARPath = IniRead ($Ini, 'set', 'WinRARPath', @ProgramFilesDir&'\WinRAR\WinRAR.exe')
  70. $7zipPath = IniRead ($Ini, 'set', '7zipPath', @ProgramFilesDir&'\7-Zip\7z')
  71. $textedit = IniRead ($Ini, 'set', 'textedit', @SystemDir&'\notepad.exe')
  72.  
  73. If $CmdLine[0]=0 Then Exit
  74. $sTarget = $CmdLine[1]
  75. Global $aFolder, $aPathexe[1], $aPath = StringRegExp($sTarget, "(^.*)\\(.*)$", 3)
  76. ; если каталог, тогда ... иначе ...
  77. If StringInStr(FileGetAttrib($sTarget), 'D') Then
  78.     $TrF=1
  79.     ; начало создания окна, вкладок, кнопок.
  80.     GUICreate($aPath[1], 310, 198) ; размер окна
  81.     GUISetBkColor (0xF9F9F9)
  82.     GUISetIcon('shell32.dll',-4)
  83.     GUISetOnEvent(-3, "_Exit")
  84.     $StatusBar=GUICtrlCreateLabel ('Строка состояния', 5,181,300,17,0xC) ; лейбл без автопереноса
  85.  
  86.     $checkclose = GUICtrlCreateCheckbox("Закрывать диалог при клике на кнопке", 10, 10, 290, 24)
  87.     GUICtrlSetOnEvent(-1, "_checkclose")
  88.     If $close = '1' Then GuiCtrlSetState(-1, 1)
  89.  
  90.     $comstr = GUICtrlCreateButton("cmd", 10, 40, 21, 21, 0x0040)
  91.     GUICtrlSetOnEvent(-1, "_cmd")
  92.     GUICtrlSetTip(-1, "Открыть ком-строку отсюда" & @CRLF & "Для выполнения DOS-команд")
  93.     GUICtrlSetImage(-1, @SystemDir & '\cmd.exe', 1, 0)
  94.  
  95.     If $ScanPath<>'' And FileExists($ScanPath) Then
  96.         $Scanner = GUICtrlCreateButton("scn", 35, 40, 21, 21, 0x0040)
  97.         GUICtrlSetOnEvent(-1, "_Scanner")
  98.         GUICtrlSetTip(-1, "Открыть в Scanner, для просмотра" & @CRLF & "занимаемого пространтсва на харде")
  99.         GUICtrlSetImage(-1, $ScanPath, 1, 0)
  100.     EndIf
  101.  
  102.     $Virtcd1 = GUICtrlCreateButton("cd+", 315, 40, 21, 21, 0x0040)
  103.     GUICtrlSetOnEvent(-1, "_Virtcd1")
  104.     GUICtrlSetTip(-1, "Создать виртуальный" & @CRLF & "диск Y: из папки")
  105.     GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 10, 0)
  106.  
  107.     $Virtcd2 = GUICtrlCreateButton("cd-", 315, 40, 21, 21, 0x0040)
  108.     GUICtrlSetOnEvent(-1, "_Virtcd2")
  109.     GUICtrlSetTip(-1, "Отключить виртуальный" & @CRLF & "диск Y:")
  110.     GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 11, 0)
  111.     _subst()
  112.  
  113.     If $WinRARPath<>'' And FileExists($WinRARPath) Then
  114.         $winrar = GUICtrlCreateButton("rar", 85, 40, 21, 21, 0x0040)
  115.         GUICtrlSetOnEvent(-1, "_winrar")
  116.         GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
  117.         GUICtrlSetImage(-1, $WinRARPath, 1, 0)
  118.     EndIf
  119.  
  120.     If $7zipPath<>'' And FileExists($7zipPath&'.exe') Then
  121.         $7zip = GUICtrlCreateButton("7z", 110, 40, 21, 21, 0x0040)
  122.         GUICtrlSetOnEvent(-1, "_7zip")
  123.         GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
  124.         GUICtrlSetImage(-1, $7zipPath&'FM.exe', 1, 0)
  125.     EndIf
  126.  
  127.     $compression = GUICtrlCreateButton("prs", 135, 40, 21, 21)
  128.     GUICtrlSetOnEvent(-1, "_compression")
  129.     GUICtrlSetTip(-1, "Применить NTFS-сжатие" & @CRLF & "к папке и её содержимому ")
  130.     GUICtrlSetColor(-1,0x0000ff)
  131.     GUICtrlSetBkColor(-1,0xdddddd)
  132.  
  133.     $decompression = GUICtrlCreateButton("de", 160, 40, 21, 21)
  134.     GUICtrlSetOnEvent(-1, "_decompression")
  135.     GUICtrlSetTip(-1, "Отменить NTFS-сжатие" & @CRLF & "к папке и её содержимому")
  136.     GUICtrlSetColor(-1,0x000000)
  137.     GUICtrlSetBkColor(-1,0xdddddd)
  138.  
  139.     GUICtrlCreateGroup ("", 7, 65, 296, 33)
  140.     $list = GUICtrlCreateButton("", 10, 74, 21, 21, 0x0040)
  141.     GUICtrlSetOnEvent(-1, "_FileList")
  142.     GUICtrlSetTip(-1, "Создать список файлов")
  143.     GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 2, 0)
  144.     $listfull = GUICtrlCreateCheckbox("Полный путь", 35, 75, 90, 20)
  145.     $subfol = GUICtrlCreateCheckbox("подпапки", 130, 75, 70, 20)
  146.     GUICtrlSetTip(-1, 'Включая вложенные')
  147.    
  148.     GUICtrlCreateLabel("Тип:", 207, 77, 29, 17)
  149.     $Typelist = GUICtrlCreateInput ("", 230, 75, 70, 20)
  150.     GUICtrlSetTip(-1, "Список только для" & @CRLF & 'указанных типов файлов' & @CRLF & 'например exe;dll;com' & @CRLF & 'Или маска "Мо*.tx?"')
  151.  
  152.     GUICtrlCreateGroup ("", 7, 100, 296, 36)
  153.     $cacls = GUICtrlCreateButton("Доступ", 10, 110, 90, 24)
  154.     GUICtrlSetOnEvent(-1, "_cacls")
  155.     GUICtrlSetTip(-1, "Можно дать доступ к папке" & @CRLF & "System Volume Information")
  156.     $accfncombo = GUICtrlCreateCombo("", 105, 110, 95, 24)
  157.     GUICtrlSetData(-1, 'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
  158.     GUICtrlSetTip($accfncombo, "Пользователи и группы")
  159.     $access = GUICtrlCreateCombo("", 205, 110, 95, 24)
  160.     GUICtrlSetData(-1, 'запрет|чтение|запись|изменение|полный', 'полный')
  161.     GUICtrlSetTip(-1, "Тип доступа")
  162.  
  163.     GUICtrlCreateGroup ("", 7, 138, 296, 36)
  164.     $dfile = GUICtrlCreateButton("Удалить", 10, 148, 55, 24)
  165.     GUICtrlSetOnEvent(-1, "_Delete")
  166.     GUICtrlSetTip(-1, "Удалить тип файлов," & @CRLF & "разделяя через ;")
  167.     $delcombo = GUICtrlCreateCombo("", 70, 148, 130, 24)
  168.     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')
  169.     $checkAtrb = GUICtrlCreateCheckbox("Снять атрибут", 205, 148, 95, 24)
  170.     GuiCtrlSetState(-1, 1)
  171.     GUICtrlSetTip($checkAtrb, "Снимать атрибуты файла" & @CRLF & "для возможности его удалить")
  172.  
  173.     $script = GUICtrlCreateButton("au3", 279, 40, 21, 21, 0x0040)
  174.     GUICtrlSetOnEvent(-1, "_Script_Edit")
  175.     GUICtrlSetTip(-1, "Редактировать скрипт" & @CRLF & "(пароль, пути)")
  176.     GUICtrlSetImage(-1, @AutoItExe, 1, 0)
  177.  
  178. Else
  179.     ; здесь для файлов.
  180.     ; начало создания окна, вкладок, кнопок.
  181.     $TrF=0
  182.     GUICreate($aPath[1], 310, 125) ; размер окна
  183.     GUISetBkColor (0xF9F9F9)
  184.    
  185.     $sExt=StringRegExpReplace($sTarget, '^(?:.*)(\.[^.\\]+)$', '\1')
  186.     $ico1=_FileDefaultIcon($sExt)
  187.     If Not @error Then
  188.         Switch UBound($ico1)
  189.             Case 2
  190.                 If StringInStr(';.exe;.scr;.ico;.ani;.cur;', ';'&$sExt&';') Then
  191.                     GUISetIcon($sTarget)
  192.                 Else
  193.                     GUISetIcon($ico1[1])
  194.                 EndIf
  195.             Case 3
  196.                 GUISetIcon($ico1[1],($ico1[2]+1)*-1)
  197.         EndSwitch
  198.     EndIf
  199.     GUISetOnEvent(-3, "_Exit")
  200.     $StatusBar=GUICtrlCreateLabel ('Строка состояния', 5,108,300,17,0xC) ; лейбл без автопереноса
  201.  
  202.     $checkclose = GUICtrlCreateCheckbox("Закрывать диалог при клике на кнопке", 10, 10, 266, 24)
  203.     GUICtrlSetOnEvent(-1, "_checkclose")
  204.     If $close = '1' Then GuiCtrlSetState(-1, 1)
  205.  
  206.     $uninstall = GUICtrlCreateButton("unl", 280, 10, 21, 21, 0x0040)
  207.     GUICtrlSetOnEvent(-1, "_uninstall")
  208.     GUICtrlSetTip(-1, "Удалить регистрацию панельки в реестре" & @CRLF & "соответственно удаление из контекст. меню")
  209.     GUICtrlSetImage(-1, @SystemDir & '\xpsp2res.dll', 1, 0)
  210.  
  211.     $comfile = GUICtrlCreateButton("Открыть ком-строку отсюда", 10, 40, 21, 21, 0x0040)
  212.     GUICtrlSetOnEvent(-1, "_comfile")
  213.     GUICtrlSetTip(-1, "Открыть ком-строку отсюда" & @CRLF & "Для выполнения DOS-команд")
  214.     GUICtrlSetImage(-1, @SystemDir & '\cmd.exe', 1, 0)
  215.  
  216.     If $WinRARPath<>'' And FileExists($WinRARPath) Then
  217.         $winrar = GUICtrlCreateButton("rar", 85, 40, 21, 21, 0x0040)
  218.         GUICtrlSetOnEvent(-1, "_winrar")
  219.         GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
  220.         GUICtrlSetImage(-1, $WinRARPath, 1, 0)
  221.     EndIf
  222.  
  223.     If $7zipPath<>'' And FileExists($7zipPath&'.exe') Then
  224.         $7zip = GUICtrlCreateButton("7z", 110, 40, 21, 21, 0x0040)
  225.         GUICtrlSetOnEvent(-1, "_7zip")
  226.         GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указан в ini)")
  227.         GUICtrlSetImage(-1, $7zipPath&'FM.exe', 1, 0)
  228.     EndIf
  229.  
  230.     $compression = GUICtrlCreateButton("prs", 135, 40, 21, 21)
  231.     GUICtrlSetOnEvent(-1, "_compression")
  232.     GUICtrlSetTip(-1, "Применить NTFS-сжатие" & @CRLF & "к файлу ")
  233.     GUICtrlSetColor(-1,0x0000ff)
  234.     GUICtrlSetBkColor(-1,0xdddddd)
  235.  
  236.     $decompression = GUICtrlCreateButton("de", 160, 40, 21, 21)
  237.     GUICtrlSetOnEvent(-1, "_decompression")
  238.     GUICtrlSetTip(-1, "Отменить NTFS-сжатие" & @CRLF & "к файлу")
  239.     GUICtrlSetColor(-1,0x000000)
  240.     GUICtrlSetBkColor(-1,0xdddddd)
  241.  
  242.     $Pathfull = GUICtrlCreateButton("", 35, 40, 21, 21, 0x0040)
  243.     GUICtrlSetOnEvent(-1, "_Pathfull")
  244.     GUICtrlSetTip(-1, "Линк файла в буфер," & @CRLF & "полный путь и имя")
  245.     GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 2, 0)
  246.    
  247.     $assot = GUICtrlCreateButton("", 60, 40, 21, 21, 0x0040)
  248.     GUICtrlSetOnEvent(-1, "_assot")
  249.     GUICtrlSetTip(-1, "Открыть каталог" & @CRLF & "ассоциированной программы")
  250.     GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
  251.  
  252.     GUICtrlCreateGroup ("", 7, 65, 296, 37)
  253.    
  254.     $cacls = GUICtrlCreateButton("Доступ", 10, 75, 90, 24)
  255.     GUICtrlSetOnEvent(-1, "_cacls")
  256.     GUICtrlSetTip(-1, "Установить доступ к файлам")
  257.     $accfncombo = GUICtrlCreateCombo("", 105, 75, 95, 24)
  258.     GUICtrlSetData(-1, 'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
  259.     GUICtrlSetTip($accfncombo, "Пользователи и группы")
  260.     $access = GUICtrlCreateCombo("", 210, 75, 90, 24)
  261.     GUICtrlSetData(-1, 'запрет|чтение|запись|изменение|полный', 'полный')
  262.     GUICtrlSetTip($access, "Тип доступа")
  263.  
  264.     $script = GUICtrlCreateButton("au3", 279, 40, 21, 21, 0x0040)
  265.     GUICtrlSetOnEvent(-1, "_Script_Edit")
  266.     GUICtrlSetTip(-1, "Редактировать скрипт" & @CRLF & "(пароль, пути)")
  267.     GUICtrlSetImage(-1, @AutoItExe, 1, 0)
  268. EndIf
  269.  
  270. GUISetState()
  271.  
  272. While 1
  273.     Sleep(100000)
  274. WEnd
  275.  
  276. Func _cacls()
  277.     $accfncombo0 = GUICtrlRead($accfncombo)
  278.     $access00 = GUICtrlRead($access)
  279.     Switch $access00
  280.         Case $access00 = "запрет"
  281.             $access0 = "N"
  282.         Case $access00 = "чтение"
  283.             $access0 = "R"
  284.         Case $access00 = "запись"
  285.             $access0 = "W"
  286.         Case $access00 = "изменение"
  287.             $access0 = "C"
  288.         Case $access00 = "полный"
  289.             $access0 = "F"
  290.         Case Else
  291.             $access0 = "F"
  292.     EndSwitch
  293.     ShellExecuteWait(@SystemDir & '\cacls.exe', '"' & $sTarget & '" /t /e /p "' & $accfncombo0 & '":' & $access0, '', '', @SW_HIDE)
  294.     _cc()
  295.     _sb('Изменение доступа выполнено')
  296. EndFunc   ;==>_cacls
  297.  
  298.  
  299. Func _Script_Edit()
  300. Local $Pathexe
  301. If @compiled Then
  302.     If FileExists($textedit) Then
  303.         Run('"'&$textedit&'" "'&@ScriptFullPath&'"')
  304.     Else
  305.         $Pathexe = _FileAssociation('.txt')
  306.         If Not @error And FileExists($Pathexe) Then Run('"'&$Pathexe&'" "'&@ScriptFullPath&'"')
  307.     EndIf
  308. Else
  309.     $Pathexe=StringRegExpReplace(@AutoItExe, '(.*)\\(?:.*)$', '\1')
  310.     If FileExists($Pathexe&'\SciTE\SciTE.exe') Then
  311.         Run('"'&$Pathexe&'\SciTE\SciTE.exe" "'&@ScriptFullPath&'"')
  312.     Else
  313.         If FileExists($textedit) Then
  314.             Run('"'&$textedit&'" "'&@ScriptFullPath&'"')
  315.         Else
  316.             $Pathexe = _FileAssociation('.txt')
  317.             If Not @error And FileExists($Pathexe) Then
  318.                 Run('"'&$Pathexe&'" "'&@ScriptFullPath&'"')
  319.             Else
  320.                 Run('Notepad.exe "'&@ScriptFullPath&'"')
  321.             EndIf
  322.         EndIf
  323.     EndIf
  324. EndIf
  325. EndFunc
  326.  
  327.  
  328. Func _subst()
  329.     If FileExists("Y:\") Then
  330.         GUICtrlSetPos($Virtcd2, 60, 40)
  331.         GUICtrlSetPos($Virtcd1, 315, 40)
  332.     Else
  333.         GUICtrlSetPos($Virtcd1, 60, 40)
  334.         GUICtrlSetPos($Virtcd2, 315, 40)
  335.     EndIf
  336. EndFunc   ;==>_subst
  337.  
  338. Func _winrar()
  339. Local $filename, $i
  340. _sb('Выполняется...')
  341. ; генерируем имя нового файла с номером копии на случай если файл существует
  342. $i = 1
  343. While FileExists($aPath[0]&'\'&$aPath[1]&$i&'.rar')
  344.     $i +=1
  345. WEnd
  346. $filename=$aPath[0]&'\'&$aPath[1]&$i&'.rar'
  347. If not FileExists($aPath[0]&'\'&$aPath[1]&'.rar') Then $filename=$aPath[0]&'\'&$aPath[1]&'.rar'
  348. RunWait ( $WinRARPath&' a -hp"'&$password&'" -m5  "'&$filename&'" "'&$aPath[1]&'"', '', @SW_HIDE )
  349. _sb('Готово - "'&StringRegExpReplace($filename, '(?:.*)\\(.*)$', '\1')&'"')
  350. _cc()
  351. EndFunc   ;==>_winrar
  352.  
  353. Func _7zip()
  354. Local $filename, $i
  355. _sb('Выполняется...')
  356. ; генерируем имя нового файла с номером копии на случай если файл существует
  357. $i = 1
  358. While FileExists($aPath[0]&'\'&$aPath[1]&$i&'.7z')
  359.     $i +=1
  360. WEnd
  361. $filename=$aPath[0]&'\'&$aPath[1]&$i&'.7z'
  362. If not FileExists($aPath[0]&'\'&$aPath[1]&'.7z') Then $filename=$aPath[0]&'\'&$aPath[1]&'.7z'
  363. RunWait ( $7zipPath&'.exe a "'&$filename&'" -p"'&$password&'" -mhe -mx9 "'&$aPath[1]&'"', '', @SW_HIDE )
  364. _sb('Готово - "'&StringRegExpReplace($filename, '(?:.*)\\(.*)$', '\1')&'"')
  365. _cc()
  366. EndFunc   ;==>_7zip
  367.  
  368.  
  369. Func _cc()
  370.     If GUICtrlRead($checkclose) = 1 Then Exit
  371. EndFunc
  372.  
  373. Func _sb($i)
  374.     GUICtrlSetData($StatusBar,$i)
  375. EndFunc
  376.  
  377.  
  378. Func _checkclose()
  379.     If GUICtrlRead($checkclose) = 1 Then
  380.         RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close", "REG_SZ", "1")
  381.     Else
  382.         RegWrite("HKLM\SOFTWARE\AZJIO_Soft\contmenu", "close", "REG_SZ", "0")
  383.     EndIf
  384. EndFunc   ;==>_checkclose
  385.  
  386. Func _cmd()
  387.     Run(@SystemDir & '\cmd.exe /k cd "' & $sTarget & '"')
  388.     _cc()
  389. EndFunc
  390.  
  391. Func _Scanner()
  392.     ShellExecute($ScanPath, '"' & $sTarget & '"', '', '', @SW_HIDE)
  393.     _cc()
  394. EndFunc
  395.  
  396. Func _Virtcd1()
  397.     Run ( @Comspec&' /C subst y: "'&$sTarget&'"', '', @SW_HIDE )
  398.     Sleep(150)
  399.     _subst()
  400.     _cc()
  401.     _sb('Диск Y создан')
  402. EndFunc
  403.  
  404. Func _Virtcd2()
  405.     Run ( @Comspec&' /C subst y: /d', '', @SW_HIDE )
  406.     Sleep(150)
  407.     _subst()
  408.     _cc()
  409.     _sb('Диск Y отключен')
  410. EndFunc
  411.  
  412. Func _compression()
  413.     Local $s=''
  414.     If $TrF=1 Then $s='/s:'
  415.     _sb('Выполняется...')
  416.     RunWait ( @Comspec&' /C compact /c /i '&$s&'"'&$sTarget&'"', '', @SW_HIDE )
  417.     _cc()
  418.     _sb('NTFS-сжатие выполнено')
  419. EndFunc
  420.  
  421. Func _decompression()
  422.     Local $s=''
  423.     If $TrF=1 Then $s='/s:'
  424.     _sb('Выполняется...')
  425.     RunWait ( @Comspec&' /C compact /u /i '&$s&'"'&$sTarget&'"', '', @SW_HIDE )
  426.     _cc()
  427.     _sb('NTFS-разжатие выполнено')
  428. EndFunc
  429.  
  430. Func _FileList()
  431.     Local $aPath
  432.     $Typelist0=GUICtrlRead($Typelist)
  433.     If GUICtrlRead($subfol) = 1 Then ; поиск в подпапках
  434.         $subfol0=100
  435.     Else
  436.         $subfol0=0
  437.     EndIf
  438.     If GUICtrlRead($listfull)=1 Then
  439.         $listfull0=1
  440.     Else
  441.         $listfull0=2
  442.     EndIf
  443.     $timer = TimerInit()
  444.     $Text=_FileSearch($sTarget, $Typelist0, True, $subfol0, $listfull0, 0)
  445.     If @error Then Return MsgBox(0, 'Сообщение', 'Неверная маска')
  446.    
  447.     If $subfol0=0 And($Typelist0='' Or $Typelist0='*') Then
  448.         $folder=_FolderSearch($sTarget)
  449.         If $listfull0=2 Then $folder=StringRegExpReplace($folder, '(?m)^(?:.*\\)(.*)$', '\1')
  450.         $Text=$folder&$Text
  451.     EndIf
  452.    
  453.     If $Text = '' Then Return MsgBox(0, 'Сообщение', 'Ничего не найдено')
  454.     _sb('Выполнено за  '&Round(TimerDiff($timer) / 1000,1)&' сек')
  455.     ClipPut($Text)
  456.     $file = FileOpen(@TempDir & '\contmenu_file.txt', 2)
  457.     If $file = -1 Then
  458.         MsgBox(0, "Ошибка", "Не возможно открыть файл.")
  459.         Exit
  460.     EndIf
  461.     FileWrite($file, $Text)
  462.     FileClose($file)
  463.    
  464.     If FileExists($textedit) Then
  465.         Run('"'&$textedit&'" "'&@TempDir & '\contmenu_file.txt"')
  466.     Else
  467.         $Pathexe = _FileAssociation('.txt')
  468.         If Not @error And FileExists($Pathexe) Then
  469.             Run('"'&$Pathexe&'" "'&@TempDir & '\contmenu_file.txt"')
  470.         Else
  471.             Run('Notepad.exe ' & @TempDir & '\contmenu_file.txt')
  472.         EndIf
  473.     EndIf
  474.     _cc()
  475. EndFunc
  476.  
  477. Func _FolderSearch($Path)
  478.     Local $FileList='', $file, $s = FileFindFirstFile($Path&'\*')
  479.     If $s = -1 Then Return ''
  480.     While 1
  481.         $file = FileFindNextFile($s)
  482.         If @error Then ExitLoop
  483.         If @extended Then
  484.             $FileList&=$Path&'\'&$file&@CRLF
  485.         EndIf
  486.     WEnd
  487.     FileClose($s)
  488.     Return $FileList
  489. EndFunc
  490.  
  491. Func _Delete()
  492.     $delcombo0 = GUICtrlRead($delcombo)
  493.  
  494.     $timer = TimerInit()
  495.     $aFile=_FileSearch($sTarget, $delcombo0, True, 100, 1, 1)
  496.     If @error Then Return MsgBox(0, 'Сообщение', 'Неверная маска')
  497.     If $aFile[0]=0 Then Return MsgBox(0, 'Сообщение', 'Ничего не найдено')
  498.     _sb('Список создан, '&$aFile[0]&' файлов за '&Round(TimerDiff($timer) / 1000,1)&' сек, удаление')
  499.     $kol = 0
  500.     If GUICtrlRead($checkAtrb) = 1 Then
  501.         For $i = 1 to $aFile[0]
  502.             FileSetAttrib($aFile[$i], "-RASHT")
  503.             If FileDelete($aFile[$i]) Then $kol += 1
  504.         Next
  505.     Else
  506.         For $i = 1 to $aFile[0]
  507.             If FileDelete($aFile[$i]) Then $kol += 1
  508.         Next
  509.     EndIf
  510.     _cc()
  511.     _sb('Удалено '&$kol&' файлов из '&$aFile[0])
  512. EndFunc
  513.  
  514. Func _Exit()
  515.     Exit
  516. EndFunc
  517.  
  518. Func _uninstall()
  519.      RegDelete("HKCR\*\shell\AZJIO_contmenu")
  520.      RegDelete("HKCR\Directory\shell\AZJIO_contmenu")
  521.      RegDelete("HKCR\Drive\shell\AZJIO_contmenu")
  522.      RegDelete("HKCR\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shell\AZJIO_contmenu") ; мои документы
  523.      RegDelete("HKLM\SOFTWARE\AZJIO_Soft\contmenu")
  524.     _cc()
  525. EndFunc
  526.  
  527. Func _Pathfull()
  528.     ClipPut($sTarget)
  529.     _cc()
  530.     GUICtrlSetTip($Pathfull, "Полный путь и имя" & @CRLF & $sTarget)
  531.     _sb('В буфере полный путь к файлу - "'&StringRegExpReplace($sTarget, '(?:.*)\\(.*)$', '\1')&'"')
  532. EndFunc
  533.  
  534. Func _assot()
  535.     $type=StringRegExpReplace($sTarget, '.*(\.\S+)', '\1')
  536.     $Path=_FileAssociation($type)
  537.     If @error Or Not FileExists($Path) Then
  538.         _sb('Каталог не определён')
  539.         GUICtrlSetPos($assot, 315, 40)
  540.         Return
  541.     Else
  542.         Run('Explorer.exe /select,"' & $Path & '"')
  543.     EndIf
  544.     _cc()
  545. EndFunc
  546.  
  547. Func _FileAssociation($sExt)
  548.     Local $aCall = DllCall("shlwapi.dll", "int", "AssocQueryStringW", _
  549.             "dword", 0x00000040, _ ;$ASSOCF_VERIFY
  550.             "dword", 2, _ ;$ASSOCSTR_EXECUTABLE
  551.             "wstr", $sExt, _
  552.             "ptr", 0, _
  553.             "wstr", "", _
  554.             "dword*", 65536)
  555.     If @error Then Return SetError(1, 0, "")
  556.     If Not $aCall[0] Then
  557.         Return SetError(0, 0, $aCall[5])
  558.     ElseIf $aCall[0] = 0x80070002 Then
  559.         Return SetError(1, 0, "{unknown}")
  560.     ElseIf $aCall[0] = 0x80004005 Then
  561.         Return SetError(1, 0, "{fail}")
  562.     Else
  563.         Return SetError(2, $aCall[0], "")
  564.     EndIf
  565. EndFunc  ;==>_FileAssociation
  566.  
  567. Func _comfile()
  568.     Local $aPath = StringRegExp($sTarget, "(^.*)\\(.*)$", 3)
  569.     ClipPut($aPath[1])
  570.     Run(@SystemDir & '\cmd.exe /k cd "' & $aPath[0] & '"')
  571.     WinWait("[CLASS:ConsoleWindowClass]")
  572.     Send("!{SPACE}")
  573.     Send("{DOWN 6}")
  574.     Send("{ENTER}")
  575.     Send("{DOWN 2}")
  576.     Send("{ENTER}")
  577.     _cc()
  578. EndFunc
  579.  
  580.  
  581.  
  582. Func _SaveINI()
  583.     $Gui1 = GUICreate('Первый запуск', 320, 300)
  584.     GUISetOnEvent(-3, "_Exit1")
  585.     Global $inpSet[5]
  586.    
  587.     GUICtrlCreateLabel('Укажите путь к WinRAR', 10, 13, 300, 17)
  588.     $inpSet[0]=GUICtrlCreateInput('', 10, 30, 300, 20)
  589.    
  590.     GUICtrlCreateLabel('Укажите путь к 7-Zip', 10, 63, 300, 17)
  591.     $inpSet[1]=GUICtrlCreateInput('', 10, 80, 300, 20)
  592.    
  593.     GUICtrlCreateLabel('Укажите путь к блокноту', 10, 113, 300, 17)
  594.     $inpSet[2]=GUICtrlCreateInput('', 10, 130, 300, 20)
  595.    
  596.     GUICtrlCreateLabel('Укажите путь к Scanner', 10, 163, 300, 17)
  597.     $inpSet[3]=GUICtrlCreateInput('', 10, 180, 300, 20)
  598.    
  599.     GUICtrlCreateLabel('Укажите пароль', 10, 213, 300, 17)
  600.     $inpSet[4]=GUICtrlCreateInput('', 10, 230, 300, 20)
  601.    
  602.     GUICtrlCreateButton('OK', 125, 260, 70, 25)
  603.     GUICtrlSetOnEvent(-1, "_OK")
  604.    
  605.     If FileExists(@ProgramFilesDir & '\WinRAR\WinRAR.exe') Then
  606.         GUICtrlSetData($inpSet[0],@ProgramFilesDir & '\WinRAR\WinRAR.exe')
  607.     Else
  608.         GUICtrlSetData($inpSet[0],'C:\Program Files\WinRAR\WinRAR.exe')
  609.     EndIf
  610.  
  611.     If FileExists(@ProgramFilesDir & '\7-Zip\7z.exe') Then
  612.         GUICtrlSetData($inpSet[1],@ProgramFilesDir & '\7-Zip\7z')
  613.     Else
  614.         GUICtrlSetData($inpSet[1],'C:\Program Files\7-Zip\7z')
  615.     EndIf
  616.  
  617.     If FileExists(@ProgramFilesDir & '\Notepad++\Notepad++.exe') Then
  618.         GUICtrlSetData($inpSet[2],@ProgramFilesDir & '\Notepad++\Notepad++.exe')
  619.     Else
  620.         GUICtrlSetData($inpSet[2],@SystemDir&'\notepad.exe')
  621.     EndIf
  622.  
  623.     If FileExists(@ProgramFilesDir & '\Scanner\Scanner.exe') Then
  624.         GUICtrlSetData($inpSet[3],@ProgramFilesDir & '\Scanner\Scanner.exe')
  625.     Else
  626.         GUICtrlSetData($inpSet[3],'C:\Program Files\Scanner\Scanner.exe')
  627.     EndIf
  628.    
  629.     GUICtrlSetData($inpSet[4],'my_password')
  630.  
  631.     GUISetState(@SW_SHOW, $Gui1)
  632. EndFunc
  633.  
  634. Func _OK()
  635.     $file = FileOpen($Ini,2)
  636.     FileWrite($file, '[set]' & @CRLF & _
  637.         'WinRARPath='&GUICtrlRead($inpSet[0]) & @CRLF & _
  638.         '7zipPath='&GUICtrlRead($inpSet[1])& @CRLF & _
  639.         'password='&GUICtrlRead($inpSet[2])& @CRLF & _
  640.         'ScanPath='&GUICtrlRead($inpSet[3])& @CRLF & _
  641.         'textedit='&GUICtrlRead($inpSet[4]))
  642.     FileClose($file)
  643.     Exit
  644. EndFunc
  645.  
  646. Func _Exit1()
  647.     $file = FileOpen($Ini,2)
  648.     FileWrite($file, '[set]' & @CRLF & _
  649.         'WinRARPath='& @CRLF & _
  650.         '7zipPath='& @CRLF & _
  651.         'password='& @CRLF & _
  652.         'ScanPath='& @CRLF & _
  653.         'textedit=')
  654.     FileClose($file)
  655.     Exit
  656. EndFunc
  657.  
  658. Func _FileDefaultIcon($sExt)
  659.     If $sExt = '' Or StringInStr($sExt, ':') Then Return SetError(1)
  660.  
  661.     Local $aCall = DllCall("shlwapi.dll", "int", "AssocQueryStringW", _
  662.             "dword", 0x00000040, _ ;$ASSOCF_VERIFY
  663.             "dword", 15, _ ;$ASSOCSTR_DEFAULTICON
  664.             "wstr", $sExt, _
  665.             "ptr", 0, _
  666.             "wstr", "", _
  667.             "dword*", 65536)
  668.  
  669.     If @error Then Return SetError(1, 0, "")
  670.  
  671.     If Not $aCall[0] Then
  672.         $sExt=StringReplace($aCall[5], '"', '')
  673.         $sExt=StringSplit($sExt, ',')
  674.         Opt('ExpandEnvStrings', 1)
  675.         $sExt[1]=$sExt[1]
  676.         Opt('ExpandEnvStrings', 0)
  677.         Return SetError(0, 0, $sExt)
  678.     ElseIf $aCall[0] = 0x80070002 Then
  679.         Return SetError(1, 0, "{unknown}")
  680.     ElseIf $aCall[0] = 0x80004005 Then
  681.         Return SetError(1, 0, "{fail}")
  682.     Else
  683.         Return SetError(2, $aCall[0], "")
  684.     EndIf
  685.  
  686. EndFunc  ;==>_FileAssociation
  687.  
  688. ; ============================================================================================
  689. ; Function Name ...: _FileSearch (__FileSearch, __FileSearchAll)
  690. ; AutoIt Version ....: 3.3.2.0+ , versions below this @extended should be replaced by of StringInStr(FileGetAttrib($Path&'\'&$file), "D")
  691. ; Description ........: Search files by mask in subdirectories.
  692. ; Syntax................: _FileSearch($Path[, $Mask = '*' [, $exclude=True [, $Level=100 [, $Full=1 [, $Arr=1]]]]])
  693. ; Parameters:
  694. ;       $Path - search path
  695. ;       $Mask - mask, the mask is allowed normal function FileFindFirstFile, or a list of extensions with the separator ";"
  696. ;       $exclude - (True / False) invert the mask, that is excluded from the search for these types of files
  697. ;       $Level - (0-100) nesting level (0 - root directory)
  698. ;       $Full - 1 - full path, 0 - relative, 2 - file names with extension, 3 - file names without extension
  699. ;       $Arr - if the value other than zero, the result is an array (by default ), 0 - a list of paths separated by @CRLF
  700. ; Return values ....: Success - Array ($array[0]=number of files) or a list of paths separated by @CRLF
  701. ;                   Failure - empty string, @error:
  702. ;                  |0 - no error
  703. ;                  |1 - Invalid path
  704. ;                  |2 - Invalid mask
  705. ; Author(s) ..........: AZJIO
  706. ; Remarks ..........: If an empty folder, it returns an empty string or array with one element $array[0]=0, @error=0
  707. ; ============================================================================================
  708. ; Имя функции ...: _FileSearch (__FileSearch, __FileSearchAll)
  709. ; Версия AutoIt ..: 3.3.2.0+ , в версиях ниже указанной нужно @extended заменить на StringInStr(FileGetAttrib($Path&'\'&$file), "D")
  710. ; Описание ........: Поиск файлов по маске в подкаталогах.
  711. ; Синтаксис.......: _FileSearch($Path[, $Mask = '*' [, $exclude=True [, $Level=100 [, $Full=1 [, $Arr=1]]]]])
  712. ; Параметры:
  713. ;       $Path - путь поиска
  714. ;       $Mask - маска, допустима обычная маска функции FileFindFirstFile, либо перечисление расширений через ";"
  715. ;       $exclude - (True / False) инвертировать маску, то есть исключить из поиска указанные типы файлов
  716. ;       $Level - (0-100) уровень вложенности (0 - корневой каталог)
  717. ;       $Full - 1 - полный путь, 0 - относительный, 2 - имена файлов с расширением, 3 - имена файлов без расширения
  718. ;       $Arr - значение кроме нуля результат в виде массива (по умолчанию), 0 - список с разделителем @CRLF
  719. ; Возвращаемое значение: Успешно - Массив ($array[0]=количество файлов) или список с разделителем @CRLF
  720. ;                   Неудачно - пустая строка, @error:
  721. ;                  |0 - нет ошибок
  722. ;                  |1 - неверный путь
  723. ;                  |2 - неверная маска
  724. ; Автор ..........: AZJIO
  725. ; Примечания ..: Если пустая папка, то возвращается пустая строка или массив с одной ячейкой $array[0]=0, при этом @error=0
  726. ; ============================================================================================
  727. ; функция проверки и подготовки входных параметров и обработка результирующего списка
  728. Func _FileSearch($Path, $Mask = '*', $exclude=True, $Level=100, $Full=1, $Arr=1)
  729.     Local $FileList
  730.     If Not StringRegExp($Path, '(?i)^[a-z]:[^/:*?"<>|]*$') Or StringInStr($Path, '\\') Then Return SetError(1, 0, '')
  731.     If StringRight($Path, 1)='\' Then $Path=StringTrimRight($Path, 1)
  732.     If $Mask = '' Then $Mask = '*'
  733.     If StringInStr($Mask, '*') Or StringInStr($Mask, '?') Then
  734.         If StringRegExp($Mask, '[\\/:"<>|]') Then Return SetError(2, 0, '')
  735.         $FileList=StringTrimRight(__FileSearchAll($Path, $Mask, $Level), 2)
  736.     Else
  737.         If StringRegExp($Mask, '[\\/:*?"<>|]') Then Return SetError(2, 0, '')
  738.         $Mask=';.'&StringReplace($Mask, ';', ';.')&';'
  739.         $FileList=StringTrimRight(__FileSearch($Path, $Mask, $exclude, $Level), 2)
  740.     EndIf
  741.     Switch $Full
  742.         Case 0
  743.             $FileList=StringRegExpReplace($FileList, '(?m)^(?:.{'&StringLen($Path)+1&'})(.*)$', '\1')
  744.         Case 2
  745.             $FileList=StringRegExpReplace($FileList, '(?m)^(?:.*\\)(.*)$', '\1')
  746.         Case 3
  747.             $FileList=StringRegExpReplace($FileList, '(?m)^(?:.*\\)([^\\]*?)(?:\.[^.]+)?$', '\1')
  748.     EndSwitch
  749.     If $Arr = True Then
  750.         $FileList=StringSplit($FileList, @CRLF, 1)
  751.         If @error Then Dim $FileList[1]=[0]
  752.     EndIf
  753.     Return $FileList
  754. EndFunc
  755.  
  756. ; поиск указанных типов файлов
  757. Func __FileSearch($Path, $Mask, $exclude, $Level, $LD=0)
  758.     Local $FileList='', $file, $s = FileFindFirstFile($Path&'\*')
  759.     If $s = -1 Then Return ''
  760.     While 1
  761.         $file = FileFindNextFile($s)
  762.         If @error Then ExitLoop
  763.         If @extended Then
  764.             If $LD>=$Level Then ContinueLoop
  765.             $LD+=1
  766.             $FileList&=__FileSearch($Path&'\'&$file, $Mask, $exclude, $Level, $LD)
  767.             $LD-=1
  768.         Else
  769.             If StringInStr($Mask, ';'&StringRight($file, 4)&';') = $exclude Then $FileList&=$Path&'\'&$file&@CRLF
  770.         EndIf
  771.     WEnd
  772.     FileClose($s)
  773.     Return $FileList
  774. EndFunc
  775.  
  776. ; поиск по маске
  777. Func __FileSearchAll($Path, $Mask, $Level, $LD=0)
  778.     Local $FileList='', $file, $s = FileFindFirstFile($Path&'\'&$Mask)
  779.     If $s = -1 Then Return ''
  780.     While 1
  781.         $file = FileFindNextFile($s)
  782.         If @error Then ExitLoop
  783.         If @extended Then
  784.             If $LD>=$Level Then ContinueLoop
  785.             $LD+=1
  786.             $FileList&=__FileSearchAll($Path&'\'&$file, $Mask, $Level, $LD)
  787.             $LD-=1
  788.         Else
  789.             $FileList&=$Path&'\'&$file&@CRLF
  790.         EndIf
  791.     WEnd
  792.     FileClose($s)
  793.     Return $FileList
  794. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement