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

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

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

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AZJIO



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

Код:
#NoTrayIcon ;скрыть в системной панели индикатор AutoIt
 
Global $aFolder
Global $aPathexe[1]
$ScanPath='X:\PROGRAMS\Scanner\SCANNER.EXE'
 
$close = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu", "close")
If @error=1 Then
   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "1")
   $close = '1'
EndIf
 
$sTarget = StringTrimLeft($CmdLineRaw, StringLen('"'&@ScriptFullPath&'" '))
If $sTarget='' Then Exit
$aPath=StringRegExp($sTarget, "(^.*)\\(.*)$", 3)
; если каталог, тогда ... иначе ...
If StringInStr(FileGetAttrib($sTarget), 'D') Then
 
; начало создания окна, вкладок, кнопок.
GUICreate($aPath[1],310,225) ; размер окна
GUICtrlCreateTab (0,0, 310,225) ; размер вкладки
 
$checkclose=GUICtrlCreateCheckbox ("Закрывать диалог при клике на кнопке", 10,10,290,24)
If $close = '1' Then GuiCtrlSetState(-1, 1)
 
$comstr=GUICtrlCreateButton ("Открыть ком-строку отсюда", 10,40,290,24)
GUICtrlSetTip(-1, "Для выполнения DOS-команд")
$list=GUICtrlCreateButton ("Создать список всех файлов и папок, только имена", 10,70,290,24)
GUICtrlSetTip(-1, "Без подкаталогов")
$listfull=GUICtrlCreateButton ("Создать список всех файлов и папок, полный путь", 10,100,290,24)
GUICtrlSetTip(-1, "Без подкаталогов")
 
$cacls=GUICtrlCreateButton ("Доступ", 10,130,90,24)
GUICtrlSetTip(-1, "Можно дать доступ к папке"&@CRLF&"System Volume Information")
$accfncombo=GUICtrlCreateCombo ("", 105,130,95,24)
GUICtrlSetData(-1,'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
GUICtrlSetTip($accfncombo, "Пользователи и группы")
$access=GUICtrlCreateCombo ("", 210,130,90,24)
GUICtrlSetData(-1,'запрет|чтение|запись|изменение|полный', 'полный')
GUICtrlSetTip($access, "Тип доступа")
 
$dfile=GUICtrlCreateButton ("Удалить тип файлов", 10,160,130,24)
$delcombo=GUICtrlCreateCombo ("", 145,160,55,24)
GUICtrlSetData(-1,'bak|gid|log|tmp', 'bak')
$checkAtrb=GUICtrlCreateCheckbox ("Снять атрибут", 210,160,90,24)
GuiCtrlSetState(-1, 1)
GUICtrlSetTip($checkAtrb, "Снимать атрибуты файла"&@CRLF&"для возможности его удалить")
 
$Scanner=GUICtrlCreateButton ("Открыть в Scanner", 10,190,290,24)
GUICtrlSetTip(-1, "Для просмотра занимаемого"&@CRLF&"пространтсва на харде")
 
GUICtrlCreateTabitem ("")   ; конец вкладок
 
GUISetState ()
 
    While 1
        $msg = GUIGetMsg()
        Select
            Case
$msg = $list
                $aFolder
= _FileListToArrayEx($sTarget, "", 0, 0)
                $Text = ""
                For $i=2 To $aFolder[0]
                  $aPath=StringRegExp($aFolder[$i], "(^.*)\\(.*)$", 3)
                  $Text &= $aPath[1] & @CRLF
                Next
                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')
                If GUICtrlRead ($checkclose) = 1 Then Exit
            Case $msg = $listfull
                $aFolder = _FileListToArrayEx($sTarget, "", 0, 0)
                $Text = ""
                For $i=2 To $aFolder[0]
                  $Text &= $aFolder[$i] & @CRLF
                Next
                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')
                If GUICtrlRead ($checkclose) = 1 Then Exit
            Case $msg = $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 )
                If GUICtrlRead ($checkclose) = 1 Then Exit
            Case $msg = $Scanner
                ShellExecute($ScanPath,'"'&$sTarget&'"','','', @SW_HIDE )
                If GUICtrlRead ($checkclose) = 1 Then Exit
             Case $msg = $comstr
                Run(@SystemDir&'\cmd.exe /k cd "'&$sTarget&'"')
                If GUICtrlRead ($checkclose) = 1 Then Exit
             Case $msg = $dfile
                $delcombo0=GUICtrlRead ($delcombo)
                $aFolder = _FileListToArrayEx($sTarget, $delcombo0, 0, 10)
                For $i=2 To $aFolder[0]
                  If StringInStr(FileGetAttrib($aFolder[$i]), 'D') Then
                     ContinueLoop
                  Else
                     If GUICtrlRead ($checkAtrb) = 1 Then FileSetAttrib($aFolder[$i], "-RASHT")
                     FileDelete($aFolder[$i])
                  EndIf
                Next
                If GUICtrlRead ($checkclose) = 1 Then Exit
             Case $msg = $checkclose
                If GUICtrlRead ($checkclose) = 1 Then
                   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "1")
                Else
                   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "0")
                EndIf
            Case $msg = -3
                ExitLoop
        EndSelect
    WEnd
 
Else
; здесь для файлов.
; начало создания окна, вкладок, кнопок.
GUICreate($aPath[1],310,165) ; размер окна
$tab=GUICtrlCreateTab (0,0, 310,165) ; размер вкладки
 
$checkclose=GUICtrlCreateCheckbox ("Закрывать диалог при клике на кнопке", 10,10,290,24)
If $close = '1' Then GuiCtrlSetState(-1, 1)
 
$comfile=GUICtrlCreateButton ("Открыть ком-строку отсюда", 10,40,290,24)
GUICtrlSetTip(-1, "Для выполнения DOS-команд")
$Pathfull=GUICtrlCreateButton ("Линк файла в буфер", 10,70,290,24)
GUICtrlSetTip(-1, "Полный путь и имя")
$assot=GUICtrlCreateButton ("Открыть каталог ассоциированной программы", 10,100,290,24)
 
$cacls=GUICtrlCreateButton ("Доступ", 10,130,90,24)
GUICtrlSetTip(-1, "Установить доступ к файлам")
$accfncombo=GUICtrlCreateCombo ("", 105,130,95,24)
GUICtrlSetData(-1,'Все|Administrator|Admin|Администратор|System|Гость', 'Все')
GUICtrlSetTip($accfncombo, "Пользователи и группы")
$access=GUICtrlCreateCombo ("", 210,130,90,24)
GUICtrlSetData(-1,'запрет|чтение|запись|изменение|полный', 'полный')
GUICtrlSetTip($access, "Тип доступа")
 
GUICtrlCreateTabitem ("")   ; конец вкладок
 
GUISetState ()
 
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $Pathfull
                ClipPut($sTarget)
                If GUICtrlRead ($checkclose) = 1 Then Exit
            Case $msg = $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 )
                If GUICtrlRead ($checkclose) = 1 Then Exit
             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"')
                  If GUICtrlRead ($checkclose) = 1 Then Exit
             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}")
                  If GUICtrlRead ($checkclose) = 1 Then Exit
             Case $msg = $checkclose
                If GUICtrlRead ($checkclose) = 1 Then
                   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "1")
                Else
                   RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\script_az\contmenu", "close", "REG_SZ", "0")
                EndIf
            Case $msg = -3
                ExitLoop
        EndSelect
    WEnd
 
EndIf
 
;$iMode <= 0 -> Folders + files
;$iMode = 1 -> Files only (first element still includes the initial path, wich is the $sPath)
;$iMode = 2 -> Folders only
Func _FileListToArrayEx($sPath, $sMask="*", $iMode=0, $iLevel=0)
    If Not StringInStr(FileGetAttrib($sPath), "D") Then Return SetError(1, 0, 0)
 
    $sPath = StringRegExpReplace($sPath, "\\+$", "")
    $sMask = "(?i)" & StringReplace(StringReplace($sMask, ".", "\."), "*", ".*")
 
    StringReplace($sPath, "\", "")
    Local $iLevel_Slashes = @extended + 1
 
    Local $aPathesArr[2] = [1, $sPath]
    Local $hSearch, $sFindNext, $i, $iIsDir
 
    While $i < $aPathesArr[0]
        $i += 1
 
        $hSearch = FileFindFirstFile($aPathesArr[$i] & "\*")
        If $hSearch = -1 Then ContinueLoop
 
        While 1
            $sFindNext = FileFindNextFile($hSearch)
            If @error Then ExitLoop
 
            $iIsDir = StringInStr(FileGetAttrib($aPathesArr[$i] & "\" & $sFindNext), "D")
 
            If $iMode < 2 Or ($iMode = 2 And $iIsDir) Then
                If Not $iIsDir And Not StringRegExp($sFindNext, $sMask) Then ContinueLoop
 
                $aPathesArr[0] += 1
                ReDim $aPathesArr[$aPathesArr[0]+1]
 
                $aPathesArr[$aPathesArr[0]] = $aPathesArr[$i] & "\" & $sFindNext
            EndIf
        WEnd
 
        FileClose($hSearch)
 
        StringReplace($aPathesArr[$aPathesArr[0]], "\", "")
        If @extended - $iLevel_Slashes = $iLevel Then ExitLoop
    Wend
 
    If $iMode = 1 Then
        Local $aTmp_Arr = $aPathesArr
        Local $iTmp_Count = 1
 
        For $i = 2 To $aPathesArr[0]
            If StringInStr(FileGetAttrib($aPathesArr[$i]), "D") Then ContinueLoop
 
            $iTmp_Count += 1
            $aTmp_Arr[$iTmp_Count] = $aPathesArr[$i]
        Next
 
        $aTmp_Arr[0] = $iTmp_Count
        ReDim $aTmp_Arr[$iTmp_Count+1]
 
        $aPathesArr = $aTmp_Arr
    EndIf
 
    Return $aPathesArr
EndFunc

Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 20:40 14-11-2009 | Исправлено: AZJIO, 04:18 16-11-2009
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru