Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AZJIO



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
;  @AZJIO
$password='ru-board' ; указываем пароль для упаковки архивов
;$AutoIt3Path = @SystemDir & '\AutoIt3.exe''
$AutoIt3Path = @ProgramFilesDir&'\AutoIt3\AutoIt3.exe'
$ScanPath = @ProgramFilesDir&'\Scanner\Scanner.exe'
$WinRARPath = @ProgramFilesDir&'\WinRAR\WinRAR.exe'
$7zipPath = @ProgramFilesDir&'\7-Zip\7z' ; файл 7z.exe специально указан без расширения, не путаться...
#NoTrayIcon ;скрыть в системной панели индикатор AutoIt
Global $Stack[50], $Stack1[50], $aFolder, $aPathexe[1]
 
$close = RegRead("HKLM\SOFTWARE\script_az\contmenu", "close")
If @error = 1 Then
    RegWrite("HKLM\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "1")
    $close = '1'
    ;регистрация в реестре и копирование в системную папку при первом запуске
    RegWrite("HKCR\*\shell\contmenu", "", "REG_SZ", 'Управление файлом')
    RegWrite("HKCR\*\shell\contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @SystemDir & '\contmenu.au3" "%1"')
    RegWrite("HKCR\Folder\shell\contmenu", "", "REG_SZ", 'Управление каталогом')
    RegWrite("HKCR\Folder\shell\contmenu\command", "", "REG_SZ", @AutoItExe & ' "' & @SystemDir & '\contmenu.au3" "%1"')
    If Not FileExists(@SystemDir & '\contmenu.au3') Then FileCopy(@ScriptDir & '\contmenu.au3', @SystemDir, 1)
EndIf
 
If $CmdLine[0]=0 Then Exit
$sTarget = $CmdLine[1]
$aPath = StringRegExp($sTarget, "(^.*)\\(.*)$", 3)
; если каталог, тогда ... иначе ...
If StringInStr(FileGetAttrib($sTarget), 'D') Then
 
    ; начало создания окна, вкладок, кнопок.
    GUICreate($aPath[1], 310, 165) ; размер окна
    GUICtrlCreateTab(0, 0, 310, 165) ; размер вкладки
 
    $checkclose = GUICtrlCreateCheckbox("Закрывать диалог при клике на кнопке", 10, 10, 290, 24)
    If $close = '1' Then GuiCtrlSetState(-1, 1)
 
    $comstr = GUICtrlCreateButton("cmd", 10, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Открыть ком-строку отсюда" & @CRLF & "Для выполнения DOS-команд")
    GUICtrlSetImage(-1, @SystemDir & '\cmd.exe', 1, 0)
 
    $Scanner = GUICtrlCreateButton("scn", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Открыть в Scanner, для просмотра" & @CRLF & "занимаемого пространтсва на харде")
    GUICtrlSetImage(-1, $ScanPath, 1, 0)
    If FileExists($ScanPath) Then GUICtrlSetPos($Scanner, 35, 40)
 
    $Virtcd1 = GUICtrlCreateButton("cd+", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Создать виртуальный" & @CRLF & "диск Y: из папки")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 10, 0)
 
    $Virtcd2 = GUICtrlCreateButton("cd-", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Отключить виртуальный" & @CRLF & "диск Y:")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 11, 0)
    _subst()
 
    $winrar = GUICtrlCreateButton("rar", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указать в скрипте)")
    GUICtrlSetImage(-1, $WinRARPath, 1, 0)
    If FileExists($WinRARPath) Then GUICtrlSetPos($winrar, 85, 40)
 
    $7zip = GUICtrlCreateButton("7z", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указать в скрипте)")
    GUICtrlSetImage(-1, $7zipPath&'FM.exe', 1, 0)
    If FileExists($7zipPath&'.exe') Then GUICtrlSetPos($7zip, 110, 40)
 
    $list = GUICtrlCreateButton("", 10, 70, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Создать список всех файлов и папок," & @CRLF & "только имена, без подкаталогов")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 2, 0)
    $listfull = GUICtrlCreateCheckbox("Полный путь", 35, 70, 90, 20)
    $subfol = GUICtrlCreateCheckbox("подпапки", 130, 70, 70, 20)
    GUICtrlSetTip(-1, "Только для списка файлов")
     
    GUICtrlCreateLabel(" Тип:", 210, 72, 29, 17)
    $Typelist = GUICtrlCreateInput ("", 243, 70, 57, 20)
    GUICtrlSetTip(-1, "Список только для" & @CRLF & "указанных типов файлов")
     
    $Labelkol = GUICtrlCreateLabel("", 180, 40, 90, 20) ; количество удалённых
    GUICtrlSetTip(-1, 'Количество файлов'& @CRLF &'при нажатии "Удалить"')
 
    $cacls = GUICtrlCreateButton("Доступ", 10, 100, 90, 24)
    GUICtrlSetTip(-1, "Можно дать доступ к папке" & @CRLF & "System Volume Information")
    $accfncombo = GUICtrlCreateCombo("", 105, 100, 95, 24)
    GUICtrlSetData(-1, 'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
    GUICtrlSetTip($accfncombo, "Пользователи и группы")
    $access = GUICtrlCreateCombo("", 205, 100, 95, 24)
    GUICtrlSetData(-1, 'запрет|чтение|запись|изменение|полный', 'полный')
    GUICtrlSetTip(-1, "Тип доступа")
 
    $dfile = GUICtrlCreateButton("Удалить", 10, 130, 55, 24)
    GUICtrlSetTip(-1, "Удалить тип файлов," & @CRLF & "разделяя через ;")
    $delcombo = GUICtrlCreateCombo("", 70, 130, 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, 130, 95, 24)
    GuiCtrlSetState(-1, 1)
    GUICtrlSetTip($checkAtrb, "Снимать атрибуты файла" & @CRLF & "для возможности его удалить")
 
    $script = GUICtrlCreateButton("au3", 279, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Редактировать скрипт" & @CRLF & "(пароль, пути)")
    GUICtrlSetImage(-1, $AutoIt3Path, 1, 0)
 
 
    GUICtrlCreateTabitem("") ; конец вкладок
 
    GUISetState()
 
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $script
                 ShellExecute(@ScriptFullPath, '', '', "edit")
            Case $msg = $7zip
                 _7zip()
            Case $msg = $winrar
                 _winrar()
            Case $msg = $Virtcd1
                Run ( @Comspec&' /C subst y: "'&$sTarget&'"', '', @SW_HIDE )
                Sleep(150)
                _subst()
                _cc()
            Case $msg = $Virtcd2
                Run ( @Comspec&' /C subst y: /d', '', @SW_HIDE )
                Sleep(150)
                _subst()
                _cc()
            Case $msg = $list
                $Typelist0=GUICtrlRead($Typelist)
                $mode0=''
                If $Typelist0<>'' Then $mode0=1
                $Text = ""
                If GUICtrlRead($subfol) = 1 Then ; поиск в подпапках
                    FileFindNextFirst($sTarget)
                    While 1
                        $tempname = FileFindNext($Typelist0, $mode0)
                        If $tempname = "" Then ExitLoop
                        $Text &= $tempname & @CRLF
                    WEnd
                    If GUICtrlRead($listfull) = 4 Then $Text = StringRegExpReplace($Text, "(?:.*)\\(.*\r\n)", '\1')
                Else
                    FileFindNextFirst($sTarget) ; поиск папок в корне
                    While 1
                        $tempname = FileFindNext('',2,2)
                        If $tempname = "" Then ExitLoop
                            If GUICtrlRead($listfull) = 1 Then
                                $Text &= $tempname & @CRLF
                            Else
                                $aPath = StringRegExp($tempname, "(^.*)\\(.*)$", 3)
                                $Text &= $aPath[1] & @CRLF
                            EndIf
                    WEnd
                    FileFindNextFirst($sTarget)
                    While 1
                        $tempname = FileFindNext($Typelist0, $mode0,1) ; поиск файлов в корне
                        If $tempname = "" Then ExitLoop
                            If GUICtrlRead($listfull) = 1 Then
                                $Text &= $tempname & @CRLF
                            Else
                                $aPath = StringRegExp($tempname, "(^.*)\\(.*)$", 3)
                                $Text &= $aPath[1] & @CRLF
                            EndIf
                    WEnd
                EndIf
                ClipPut($Text)
                $file = FileOpen(@TempDir & '\file.txt', 2)
                If $file = -1 Then
                    MsgBox(0, "Ошибка", "Не возможно открыть файл.")
                    Exit
                EndIf
                FileWrite($file, $Text)
                FileClose($file)
                Run('Notepad.exe ' & @TempDir & '\file.txt')
                _cc()
            Case $msg = $cacls
                _cacls()
            Case $msg = $Scanner
                ShellExecute($ScanPath, '"' & $sTarget & '"', '', '', @SW_HIDE)
                _cc()
            Case $msg = $comstr
                Run(@SystemDir & '\cmd.exe /k cd "' & $sTarget & '"')
                _cc()
            Case $msg = $dfile
                $delcombo0 = GUICtrlRead($delcombo)
                $kol = 0
                    FileFindNextFirst($sTarget)
                    While 1
                        $tempname = FileFindNext()
                        If $tempname = "" Then ExitLoop
                        If StringInStr(';'&$delcombo0&';', ';'&StringRegExpReplace($tempname, '(?:^.*)\.(.*)$', '\1')&';')>0 Then
                            If GUICtrlRead($checkAtrb) = 1 Then FileSetAttrib($tempname, "-RASHT")
                            FileDelete($tempname)
                            $kol += 1
                        EndIf
                    WEnd
                GUICtrlSetData($Labelkol, 'удалено ' & $kol)
                _cc()
            Case $msg = $checkclose
                 _checkclose()
            Case $msg = -3
                ExitLoop
        EndSelect
    WEnd
 
Else
    ; здесь для файлов.
    ; начало создания окна, вкладок, кнопок.
    GUICreate($aPath[1], 310, 105) ; размер окна
    $tab = GUICtrlCreateTab(0, 0, 310, 105) ; размер вкладки
 
    $checkclose = GUICtrlCreateCheckbox("Закрывать диалог при клике на кнопке", 10, 10, 266, 24)
    If $close = '1' Then GuiCtrlSetState(-1, 1)
 
    $uninstall = GUICtrlCreateButton("unl", 280, 10, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Удалить регистрацию панельки в реестре" & @CRLF & "соответственно удаление из контекст. меню")
    GUICtrlSetImage(-1, @SystemDir & '\xpsp2res.dll', 1, 0)
 
    $comfile = GUICtrlCreateButton("Открыть ком-строку отсюда", 10, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Открыть ком-строку отсюда" & @CRLF & "Для выполнения DOS-команд")
    GUICtrlSetImage(-1, @SystemDir & '\cmd.exe', 1, 0)
 
    $winrar = GUICtrlCreateButton("rar", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указать в скрипте)")
    GUICtrlSetImage(-1, $WinRARPath, 1, 0)
    If FileExists($WinRARPath) Then GUICtrlSetPos($winrar, 85, 40)
 
    $7zip = GUICtrlCreateButton("7z", 315, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Упаковать с паролем" & @CRLF & "(указать в скрипте)")
    GUICtrlSetImage(-1, $7zipPath&'FM.exe', 1, 0)
    If FileExists($7zipPath&'.exe') Then GUICtrlSetPos($7zip, 110, 40)
 
    $Pathfull = GUICtrlCreateButton("", 35, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Линк файла в буфер," & @CRLF & "полный путь и имя")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 2, 0)
    $assot = GUICtrlCreateButton("", 60, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Открыть каталог" & @CRLF & "ассоциированной программы")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
 
    $cacls = GUICtrlCreateButton("Доступ", 10, 70, 90, 24)
    GUICtrlSetTip(-1, "Установить доступ к файлам")
    $accfncombo = GUICtrlCreateCombo("", 105, 70, 95, 24)
    GUICtrlSetData(-1, 'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
    GUICtrlSetTip($accfncombo, "Пользователи и группы")
    $access = GUICtrlCreateCombo("", 210, 70, 90, 24)
    GUICtrlSetData(-1, 'запрет|чтение|запись|изменение|полный', 'полный')
    GUICtrlSetTip($access, "Тип доступа")
 
    $script = GUICtrlCreateButton("au3", 279, 40, 21, 21, 0x0040)
    GUICtrlSetTip(-1, "Редактировать скрипт" & @CRLF & "(пароль, пути)")
    GUICtrlSetImage(-1, $AutoIt3Path, 1, 0)
 
    GUICtrlCreateTabitem("") ; конец вкладок
 
    GUISetState()
 
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $uninstall
                 RegDelete("HKCR\*\shell\contmenu")
                 RegDelete("HKCR\Folder\shell\contmenu")
                 RegDelete("HKLM\SOFTWARE\script_az\contmenu")
                _cc()
            Case $msg = $script
                ShellExecute(@ScriptFullPath, '', '', "edit")
            Case $msg = $7zip
                 _7zip()
            Case $msg = $winrar
                 _winrar()
            Case $msg = $Pathfull
                ClipPut($sTarget)
                _cc()
                GUICtrlSetTip($Pathfull, "Полный путь и имя" & @CRLF & $sTarget)
            Case $msg = $cacls
                _cacls()
            Case $msg = $assot
                $type = StringRegExp($sTarget, "(^.*)\.(.*)$", 3)
                If @error = 1 Then ContinueLoop
                $astype = RegRead('HKEY_CLASSES_ROOT\.' & $type[1], "")
                $astype = RegRead('HKEY_CLASSES_ROOT\' & $astype & '\shell\open\command', "")
                If @error = 1 Then ContinueLoop
                $aPathexe = StringRegExp($astype, "(^.*)exe(.*)$", 3)
                If @error = 1 Then ContinueLoop
                $Pathexe1 = StringReplace($aPathexe[0], '"', '')
                If FileExists($Pathexe1 & 'exe') Then Run('Explorer.exe /select,"' & $Pathexe1 & 'exe"')
                _cc()
            Case $msg = $comfile
                $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()
            Case $msg = $checkclose
                 _checkclose()
            Case $msg = -3
                ExitLoop
        EndSelect
    WEnd
 
 
EndIf
 
 
;=====================================================
Func FileFindNextFirst($FindCat)
    $Stack[0] = 1
    $Stack1[1] = $FindCat
    $Stack[1] = FileFindFirstFile($FindCat & "\*.*")
    Return $Stack[1]
EndFunc   ;==>FileFindNextFirst
 
Func FileFindNext($type = 'log', $mode = 0, $Level=49)
    While 1
        $file = FileFindNextFile($Stack[$Stack[0]])
        If @error Then
            FileClose($Stack[$Stack[0]])
            If $Stack[0] = 1 Then
                Return ""
            Else
                $Stack[0] -= 1
                ContinueLoop
            EndIf
        Else
            If StringInStr(FileGetAttrib($Stack1[$Stack[0]] & "\" & $file), "D") > 0 Then
                If $Stack[0] = $Level Then ContinueLoop
                $Stack[0] += 1
                $Stack1[$Stack[0]] = $Stack1[$Stack[0] - 1] & "\" & $file
                $Stack[$Stack[0]] = FileFindFirstFile($Stack1[$Stack[0]] & "\*.*")
                If $mode=2 Then
                    Return $Stack1[$Stack[0]]
                Else
                    ContinueLoop
                EndIf
            Else
                If $mode=2 Then ContinueLoop
                If $mode=1 Then
                    If StringRight($Stack1[$Stack[0]] & "\" & $file, 4)<>'.'&$type Then
                        ContinueLoop
                    Else
                        Return $Stack1[$Stack[0]] & "\" & $file
                    EndIf
                Else
                    Return $Stack1[$Stack[0]] & "\" & $file
                EndIf
            EndIf
        EndIf
    WEnd
EndFunc   ;==>FileFindNext
 
 
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
    ShellExecute(@SystemDir & '\cacls.exe', '"' & $sTarget & '" /t /e /p "' & $accfncombo0 & '":' & $access0, '', '', @SW_HIDE)
    _cc()
EndFunc   ;==>_cacls
 
 
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()
; генерируем имя нового файла с номером копии на случай если файл существует
$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'
Run ( $WinRARPath&' a -hp"'&$password&'" -m5  "'&$filename&'" "'&$aPath[1]&'"', '', @SW_HIDE )
EndFunc   ;==>_winrar
 
Func _7zip()
; генерируем имя нового файла с номером копии на случай если файл существует
$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'
Run ( $7zipPath&'.exe a "'&$filename&'" -p"'&$password&'" -mhe -mx9 "'&$aPath[1]&'"', '', @SW_HIDE )
EndFunc   ;==>_7zip
 
 
Func _cc()
    If GUICtrlRead($checkclose) = 1 Then Exit
EndFunc   ;==>_cc
 
 
Func _checkclose()
    If GUICtrlRead($checkclose) = 1 Then
        RegWrite("HKLM\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "1")
    Else
        RegWrite("HKLM\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "0")
    EndIf
EndFunc   ;==>_checkclose

Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 01:03 20-06-2010 | Исправлено: AZJIO, 01:11 20-06-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
gyra (23-01-2020 10:51): AutoIT (Часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru