Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Maza Faka
Дата сообщения: 17.07.2007 15:23
Koppew
ViSiToR
Спасибо!


Цитата:
В каком редакторе код набираешь?
Если честно очень не удобно обрабатывать такой код, особенно при проверке ошибок, и тем более код не свой


Редактор SciTE4AutoIt3, просто когда много раз исправляешь код, он теряет свою удобочитабельность
Автор: ViSiToR
Дата сообщения: 17.07.2007 15:44
Maza Faka

Цитата:
когда много раз исправляешь код, он теряет свою удобочитабельность

Мой тебе (и вообще всем) совет - привыкай сразу набирать/править код в удобочитаемом виде (с отводками табов и автоматической подстановкой регистра букв, тем более что SciTE это позволяет ), чтобы потом не пришлось переделывать груды скриптов (когда захочется красивого вида кодов, ну или чтобы другим его давать - исходный код в программе и т.п)
Автор: Maza Faka
Дата сообщения: 17.07.2007 18:18
ViSiToR

Цитата:
не рекоммендуется смешивать открытия файлов, поиск и т.п... нужно в цикле предварительно поместить все нужные файлы в массив, потом периберая массив открывать нужные файлы, писать в них, и закрывать


Можно примерчик?
Автор: Koppew
Дата сообщения: 17.07.2007 18:42
Maza Faka
дык ведь был уже примерчик http://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=180#2
Автор: ViSiToR
Дата сообщения: 18.07.2007 00:55
Maza Faka

Цитата:
Можно примерчик?


Для начала попробуй так:


Код:
$path = "d:\music"
$search = FileFindFirstFile("d:\music\*.*")

While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$full_file = $path & "\" & $file
If StringInStr(FileGetAttrib($full_file), "D") > 0 Then Find_mp3($full_file, $file)
WEnd

FileClose($search)

Func Find_mp3($full_file, $file)
$var = FileFindFirstFile($full_file & "\*.*")
While 1
$value = FileFindNextFile($var)
If @error Then ExitLoop
$value = $full_file & "\" & $value
If StringInStr(FileGetAttrib($value), "D") > 0 Then Find_mp3($value, $file)
If StringRight($value, 3) = "mp3" Then
$list = FileOpen("C:\PlayList\" & $file & ".m3u", 1)
If $list <> -1 Then
FileWriteLine($list, $value)
FileClose($list)
EndIf
EndIf
WEnd
FileClose($var)
EndFunc
Автор: Maza Faka
Дата сообщения: 18.07.2007 07:18
ViSiToR

Цитата:
FileWriteLine($list, $value)
FileClose($list)

Для чего закрывать $list, внутри цикла понятно, а зачем закрывать "$search" вне цикла?
Автор: Koppew
Дата сообщения: 18.07.2007 08:04
ViSiToR
а если делать через массивы, то сначала пробегаем собираем пути для всех директорий в массив, а потом в массиве пробегаем и для всех директорий создаем плейлист? это ведь займет немного больше времени, чем текущий вариант? т.е. в чем выигрыш от использования массивов?
Автор: ViSiToR
Дата сообщения: 18.07.2007 17:57
Maza Faka


Цитата:
зачем закрывать "$search" вне цикла?

Из справки по AutoIt:


Цитата:
Autoit normally closes all files upon termination, but explicitly calling FileClose is still a good idea.


Т.е я в принципе не знаю, закончена ли работа скрипта после этого цикла, или нет, поэтому ничего мне не мешает закрыть открытый поиск (“Дела нужно доводить до конца” © ).

Koppew

Цитата:
это ведь займет немного больше времени, чем текущий вариант? т.е. в чем выигрыш от использования массивов?

Да, возможно времени уйдёт больше, а возможно и нет, но это будет надёжнее...

А также учитываем, что при пробежке по созданному массиву, мы можем ОДИН раз открыть файл, и закрыть его по окончанию, это сохранит нам много времени на обработку (открытия файла и его закрытия при каждой записи)... впрочем в текущем примере, нет необходимости вообще открывать файл (если это делается при каждом обращении), т.к сама функция FileWriteLine обладает возможностью открывать файл.

Хотя можно открыть и тут файл в самом начале... и закрыть по завершению (это будет во много раз быстрее):


Код: $path = "d:\music"
$search = FileFindFirstFile("d:\music\*.*")

While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$full_file = $path & "\" & $file
If StringInStr(FileGetAttrib($full_file), "D") > 0 Then Find_mp3($full_file, $file)
WEnd

FileClose($search)

Func Find_mp3($full_file, $file)
$list = FileOpen("C:\PlayList\" & $file & ".m3u", 1)
$var = FileFindFirstFile($full_file & "\*.*")
While 1
$value = FileFindNextFile($var)
If @error Then ExitLoop
$value = $full_file & "\" & $value
If StringInStr(FileGetAttrib($value), "D") > 0 Then Find_mp3($value, $file)
If StringRight($value, 3) = "mp3" And $list <> -1 Then FileWriteLine($list, $value)
WEnd
FileClose($list)
FileClose($var)
EndFunc
Автор: Koppew
Дата сообщения: 18.07.2007 18:31
ViSiToR

Цитата:
Хотя можно открыть и тут файл в самом начале... и закрыть по завершению (это будет во много раз быстрее)

не... если будет много вложенных папок - не получается выгоды тож... будет куча открытых поисков и файлов...

ну да ладно... вопросик тут возник

есть ссылка вида javascript:function(param); можно ли вызвать ее в браузере с помощью AutoIt? не имитируя клика мыши... (мдя... нечетко я вопросы ставлю)
Автор: ViSiToR
Дата сообщения: 18.07.2007 19:07
Koppew

Цитата:
будет куча открытых поисков и файлов...

Почему? по завершению функции файл закрывается


Цитата:
можно ли вызвать ее в браузере с помощью AutoIt?

В браузере по умолчанию? я бы и сам хотел узнать как такое сделать... а если в каком то специфическом браузере (возьму за пример Opera), то можно так:


Код: Run('Opera.exe "javascript:function(param);"')
Автор: Koppew
Дата сообщения: 18.07.2007 19:18
ViSiToR

Цитата:
Почему? по завершению функции файл закрывается

из-за рекурсивного вызова при наличии вложенных директорий... т.е. в конце-то они все закроются конечно...

по поводу яваскрипта: вызвать надо ссылку на уже открытой странице в открытом браузере...
Автор: ViSiToR
Дата сообщения: 18.07.2007 20:15
Koppew

Цитата:
вызвать надо ссылку на уже открытой странице в открытом браузере

В каком браузере?
Если IE, то для этого есть немаленькая библиотека IE.au3, в ней есть примеры...


Код: #include <IE.au3>

$oIE = _IECreate("www.autoitscript.com")
_IENavigate ($oIE, "javascript: alert('test')", 0)
Автор: kpuk
Дата сообщения: 18.07.2007 22:16
Народ подскажите как например с формы или какогонить элемента получить путь если на них перетащить файл.
подробно: я перетягиваю на форму ехе и отпускаю туда, а потом получаю путь к этому ехе
Автор: Koppew
Дата сообщения: 18.07.2007 22:52
ViSiToR
первый пример работает, а второй че-то нет но идею я уловил...

кста, а есть ли где-нить библиотека для работы с акцессом?
Автор: ViSiToR
Дата сообщения: 19.07.2007 01:12
kpuk


Цитата:
как например с формы или какогонить элемента получить путь если на них перетащить файл.



Код:
#include <GuiConstants.au3>

$Gui = GuiCreate("Drop Test", 220, 100, -1, -1, -1, $WS_EX_ACCEPTFILES+$WS_EX_TOPMOST)

$InputForm = GUICtrlCreateInput("Drop file here", 10, 40, 200)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetColor(-1, 0xCCCCC0)

GUISetState()

While 1
$Msg = GUIGetMsg()
Switch $Msg
Case -3
Exit
Case $GUI_EVENT_DROPPED
GUICtrlSetData($InputForm, @GUI_DragFile)
GUICtrlSetColor($InputForm, 0x000000)
MsgBox(262144+64, "Dropped", "You dropped:" & @LF & @GUI_DragFile)
EndSwitch
WEnd
Автор: Koppew
Дата сообщения: 19.07.2007 09:06
ViSiToR

Цитата:
Вроде вот что-то.

золотой человек, право слово, дай я тебя расцелую

пошел вкуривать...
Автор: Maza Faka
Дата сообщения: 20.07.2007 11:41
ViSiToR
Накарябал GUI-твикер, результат: громоздкий и нерабочий скрипт.
Плз посмотри и посоветуй, как можно сделать красивее.
[more]

Код:
#include <GUIConstants.au3>

GUICreate("Easy Tweaker for client workstation", 350, 280, -1, -1, -1, $WS_EX_CLIENTEDGE)
GuiSetIcon("regedit.exe", 0)
;GUISetBkColor(0xE0FFFF)

;Label
GUICtrlCreateLabel("Каталог для временных (temp) файлов", 10, 185, 200, 15)
GUICtrlCreateLabel("Настройка прокси", 10, 235, 100, 15)

;Buttons
$ok = GuiCtrlCreateButton("Ok", 200, 250, 60, -1, $BS_FLAT)
$cancel = GUICtrlCreateButton("Cancel", 285, 250, 60, -1, $BS_FLAT)

;Input
$tmp = GUICtrlCreateInput(@HomeDrive & "\Temp", 10, 200, 100, 17, -1)
GUICtrlSetTip(-1, "Введите путь для папки с временными файлами")
$proksi = GUICtrlCreateInput("192.168.0.11:8080", 10, 250, 100, 17, -1)
GUICtrlSetTip(-1, "Укажите IP-адрес сервера и порт")

;Checkbox
$print = GUICtrlCreateCheckbox("Отменить поиск сетевых принтеров", 10, 10, 200, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$sched = GUICtrlCreateCheckbox("Отменить поиск назначенных заданий", 10, 25, 215, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$chkdsk = GUICtrlCreateCheckbox("Сократить время ожидания перед проверкой диска", 10, 40, 280, 15)
GUICtrlSetTip(-1, "Сокращает время ожидания с 10 до 3 секунд")
$update = GUICtrlCreateCheckbox("Отключить автоматическое обновление Windows", 10, 55, 270, 15)
GUICtrlSetTip(-1, "Полностью отключить обновление Windows из интернета")
$clean = GUICtrlCreateCheckbox("Отключить мастер очистки рабочего стола", 10, 70, 235, 15)
GUICtrlSetTip(-1, "Отключает очистку рабочего стола от неиспользуемых ярлыков")
$secur = GUICtrlCreateCheckbox("Отключить все предупреждения центра безопасности", 10, 85, 300, 15)
GUICtrlSetTip(-1, "Отключает значок предупреждения системы безопасности в трее")
$remote = GUICtrlCreateCheckbox("Отключить отправку приглашения удалённому помощнику", 10, 100, 340, 15)
GUICtrlSetTip(-1, "Отключает возможность удалённого подключения к рабочему столу компьютера")
$share = GUICtrlCreateCheckbox("Отключить простой общий доступ к файлам", 10, 115, 250, 15)
GUICtrlSetTip(-1, "Устанавливает классический диалог назначения прав и доступа")
$bug = GUICtrlCreateCheckbox("Отключить отчёт об ошибках", 10, 130, 200, 15)
GUICtrlSetTip(-1, "Отключает возможность отправки отчёта об ошибке в Microsoft")

GUISetState()

While 1
$msg = GUIGetMsg()
Select
Case $msg = $print
$print1 = GUICtrlRead($print, 0)
Case $msg = $sched
$sched1 = GUICtrlRead($sched, 0)
Case $msg = $chkdsk
$chkdsk1 = GUICtrlRead($chkdsk, 0)
Case $msg = $update
$update1 = GUICtrlRead($update, 0)
Case $msg = $clean
$clean1 = GUICtrlRead($clean, 0)
Case $msg = $secur
$secur1 = GUICtrlRead($secur, 0)
Case $msg = $remote
$remote1 = GUICtrlRead($remote, 0)
Case $msg = $share
$share1 = GUICtrlRead($share, 0)
Case $msg = $bug
$bug1 = GUICtrlRead($bug, 0)
Case $msg = $ok
Select
Case $print1 = $GUI_CHECKED
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}")
Case $sched1 = $GUI_CHECKED
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}")
Case $chkdsk1 = $GUI_CHECKED
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager", "AutoChkTimeOut", "REG_DWORD", "3")
EndSelect
ExitLoop
Case $msg = $cancel
ExitLoop
EndSelect
WEnd

ExitLoop
EndSelect
WEnd
Автор: ViSiToR
Дата сообщения: 20.07.2007 17:17
Maza Faka
Первым делом, я прогнал скрипт на проверку синтаксиса, в SciTE есть встроенная проверка синтаксиса по Ctrl F5 (для перехода к следующей ошибке, используй клавишу F4) - сразу выскочили все ошибки ...

У тебя зачем то существует в конце цикла ExitLoop и EndSelect (лишний), и сразу после них ещё один (лишний ) Wend...

Просто с конца твоего скрипта убери это:



Код: ExitLoop
EndSelect
WEnd
Автор: Maza Faka
Дата сообщения: 21.07.2007 06:39
ViSiToR

Цитата:
У тебя зачем то существует в конце цикла ExitLoop и EndSelect

Понятия не имею откуда они взялись, в исходном коде их нет, наверное когда редактировал, так получилось. А не работает этот фрагмент:

Код:
Case $msg = $ok
Select
Case $print1 = $GUI_CHECKED
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}")
Case $sched1 = $GUI_CHECKED
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}")
Case $chkdsk1 = $GUI_CHECKED
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager", "AutoChkTimeOut", "REG_DWORD", "3")
EndSelect
ExitLoop
Автор: ViSiToR
Дата сообщения: 21.07.2007 08:47
Maza Faka
У тебя в корне неверно построено всё...

Зачем задавать значения при нажатии чекбоксов?
Ты проверяешь выбор (Select), там будет происходить только одно условие/случай (первое найденное)...

Вот поизучай


Код:
#include <GUIConstants.au3>

GUICreate("Easy Tweaker for client workstation", 350, 280, -1, -1, -1, $WS_EX_CLIENTEDGE)
GuiSetIcon("regedit.exe", 0)
;GUISetBkColor(0xE0FFFF

;Label
GUICtrlCreateLabel("Каталог для временных (temp)файлов", 10, 185, 200, 15)
GUICtrlCreateLabel("Настройка прокси", 10, 235, 100, 15)

;Buttons
$ok = GuiCtrlCreateButton("Ok", 200, 250, 60, -1, $BS_FLAT)
$cancel = GUICtrlCreateButton("Cancel", 285, 250, 60, -1, $BS_FLAT)

;Input
$tmp = GUICtrlCreateInput(@HomeDrive & "\Temp", 10, 200, 100, 17, -1)
GUICtrlSetTip(-1, "Введите путь для папки с временными файлами")
$proksi = GUICtrlCreateInput("192.168.0.11:8080", 10, 250, 100, 17, -1)
GUICtrlSetTip(-1, "Укажите IP-адрес сервера и порт")

;Checkbox
$print = GUICtrlCreateCheckbox("Отменить поиск сетевых принтеров", 10, 10, 200, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$sched = GUICtrlCreateCheckbox("Отменить поиск назначенных заданий", 10, 25, 215, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$chkdsk = GUICtrlCreateCheckbox("Сократить время ожидания перед проверкой диска", 10, 40, 280, 15)
GUICtrlSetTip(-1, "Сокращает время ожидания с 10 до 3 секунд")
$update = GUICtrlCreateCheckbox("Отключить автоматическое обновление Windows", 10, 55, 270, 15)
GUICtrlSetTip(-1, "Полностью отключить обновление Windows из интернета")
$clean = GUICtrlCreateCheckbox("Отключить мастер очистки рабочего стола", 10, 70, 235, 15)
GUICtrlSetTip(-1, "Отключает очистку рабочего стола от неиспользуемых ярлыков")
$secur = GUICtrlCreateCheckbox("Отключить все предупреждения центра безопасности", 10, 85, 300, 15)
GUICtrlSetTip(-1, "Отключает значок предупреждения системы безопасности в трее")
$remote = GUICtrlCreateCheckbox("Отключить отправку приглашения удалённому помощнику", 10, 100, 340, 15)
GUICtrlSetTip(-1, "Отключает возможность удалённого подключения к рабочему столу компьютера")
$share = GUICtrlCreateCheckbox("Отключить простой общий доступ к файлам", 10, 115, 250, 15)
GUICtrlSetTip(-1, "Устанавливает классический диалог назначения прав и доступа")
$bug = GUICtrlCreateCheckbox("Отключить отчёт об ошибках", 10, 130, 200, 15)
GUICtrlSetTip(-1, "Отключает возможность отправки отчёта об ошибке в Microsoft")

GUISetState()

While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $ok
$PrintRead = GUICtrlRead($print)
$SchedRead = GUICtrlRead($sched)
$ChkdskRead = GUICtrlRead($chkdsk)
$UpdateRead = GUICtrlRead($update)
$CleanRead = GUICtrlRead($clean)
$SecurRead = GUICtrlRead($secur)
$RemoteRead = GUICtrlRead($remote)
$ShareRead = GUICtrlRead($share)
$BugRead = GUICtrlRead($bug)

If $PrintRead = $GUI_CHECKED Then
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\" & _
"{2227A280-3AEA-1069-A2DE-08002B30309D}")
EndIf

If $SchedRead = $GUI_CHECKED Then
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\" & _
"{D6277990-4C6A-11CF-8D87-00AA0060F5BF}")
EndIf

If $ChkdskRead = $GUI_CHECKED Then
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager", "AutoChkTimeOut", "REG_DWORD", "3")
EndIf

;И так далее...

ExitLoop
Case $cancel
ExitLoop
EndSwitch
WEnd
Автор: Maza Faka
Дата сообщения: 21.07.2007 10:20
ViSiToR
Спасибо, что нашёл время просмотреть мой скрипт.

Ошибку свою понял:
Цитата:
Если выражение справедливо, то выполняются все следующие за ним команды вплоть до следующего выражения Case или EndSelect. Если окажутся справедливыми несколько выражений Case, то будут выполнены команды только первого из них.

Просто хотелось без If...Then..., что бы код покрасивее был.[more]
Код:
#include <GUIConstants.au3>

Dim $print1, $sched1, $chkdsk1, $update1, $clean1, $secur1, $remote1, $share1, $bug1, $tmp, $proksi

GUICreate("Easy Tweaker for client workstation v1.0", 350, 325, -1, -1, $WS_SizeBox+$WS_MaximizeBox+$WS_MinimizeBox)
GuiSetIcon("regedit.exe", 0)

;Menu
$menu = GUICtrlCreateMenu("F&ile")
$about = GUICtrlCreateMenuItem("О программе", $menu)
GUICtrlCreateMenuItem("", $menu)
$quit = GUICtrlCreateMenuItem("Выход", $menu)

;Label
GUICtrlCreateLabel("Каталог для временных (temp) файлов", 10, 185, 200, 15)
GUICtrlCreateLabel("Настройка прокси", 10, 235, 100, 15)

;Buttons
$ok = GuiCtrlCreateButton("Ok", 200, 250, 60, -1, $BS_FLAT)
$cancel = GUICtrlCreateButton("Cancel", 285, 250, 60, -1, $BS_FLAT)

;Input
$tmp = GUICtrlCreateInput(@HomeDrive & "\Temp", 10, 200, 100, 17, -1)
GUICtrlSetTip(-1, "Введите путь для папки с временными файлами")
$proksi = GUICtrlCreateInput("192.168.0.11:8080", 10, 250, 100, 17, -1)
GUICtrlSetTip(-1, "Укажите IP-адрес сервера и порт")

;Checkbox
$print = GUICtrlCreateCheckbox("Отменить поиск сетевых принтеров", 10, 10, 200, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$sched = GUICtrlCreateCheckbox("Отменить поиск назначенных заданий", 10, 25, 215, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$chkdsk = GUICtrlCreateCheckbox("Сократить время ожидания перед проверкой диска", 10, 40, 280, 15)
GUICtrlSetTip(-1, "Сокращает время ожидания с 10 до 3 секунд")
$update = GUICtrlCreateCheckbox("Отключить автоматическое обновление Windows", 10, 55, 270, 15)
GUICtrlSetTip(-1, "Полностью отключить обновление Windows из интернета")
$clean = GUICtrlCreateCheckbox("Отключить мастер очистки рабочего стола", 10, 70, 235, 15)
GUICtrlSetTip(-1, "Отключает очистку рабочего стола от неиспользуемых ярлыков")
$secur = GUICtrlCreateCheckbox("Отключить все предупреждения центра безопасности", 10, 85, 300, 15)
GUICtrlSetTip(-1, "Отключает значок предупреждения системы безопасности в трее")
$remote = GUICtrlCreateCheckbox("Отключить отправку приглашения удалённому помощнику", 10, 100, 340, 15)
GUICtrlSetTip(-1, "Отключает возможность удалённого подключения к рабочему столу компьютера")
$share = GUICtrlCreateCheckbox("Отключить простой общий доступ к файлам", 10, 115, 250, 15)
GUICtrlSetTip(-1, "Устанавливает классический диалог назначения прав и доступа")
$bug = GUICtrlCreateCheckbox("Отключить отчёт об ошибках", 10, 130, 200, 15)
GUICtrlSetTip(-1, "Отключает возможность отправки отчёта об ошибке в Microsoft")

GUISetState()

While 1
$msg = GUIGetMsg()
Select
Case $msg = $print
$print1 = GUICtrlRead($print, 0)
Case $msg = $sched
$sched1 = GUICtrlRead($sched, 0)
Case $msg = $chkdsk
$chkdsk1 = GUICtrlRead($chkdsk, 0)
Case $msg = $update
$update1 = GUICtrlRead($update, 0)
Case $msg = $clean
$clean1 = GUICtrlRead($clean, 0)
Case $msg = $secur
$secur1 = GUICtrlRead($secur, 0)
Case $msg = $remote
$remote1 = GUICtrlRead($remote, 0)
Case $msg = $share
$share1 = GUICtrlRead($share, 0)
Case $msg = $bug
$bug1 = GUICtrlRead($bug, 0)
Case $msg = $ok
If $print1 = $GUI_CHECKED Then RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}")
If $sched1 = $GUI_CHECKED Then RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}")
If $chkdsk1 = $GUI_CHECKED Then RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager", "AutoChkTimeOut", "REG_DWORD", "3")
If $update1 = $GUI_CHECKED Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update", "AUOptions", "REG_DWORD", "1")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update", "NextDetectionTime")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update", "ScheduledInstallDate")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update", "UnableToDetectTime")
EndIf
If $clean1 = $GUI_CHECKED Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\CleanupWiz", "NoRun", "REG_DWORD", "1")
If $secur1 = $GUI_CHECKED Then
$secur_key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center"
Local $security[3] = ["AntiVirusDisableNotify", "FirewallDisableNotify", "UpdatesDisableNotify"]
For $i = 0 To Ubound($security)-1
RegWrite($secur_key, $security[$i], "REG_DWORD", "1")
Next
EndIf
If $remote1 = $GUI_CHECKED Then RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server", "fAllowToGetHelp", "REG_DWORD", "1")
If $share1 = $GUI_CHECKED Then RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa", "forceguest", "REG_DWORD", "0")
If $bug1 = $GUI_CHECKED Then RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCHealth\ErrorReporting", "DoReport", "REG_DWORD", "0")
If GUICtrlRead($proksi, 0) > 0 Then
$proksi_value = GUICtrlRead($proksi, 0)
$proksi_key = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
RegWrite($proksi_key, "ProxyEnable", "REG_DWORD", "1")
RegWrite($proksi_key, "ProxyServer", "REG_SZ", $proksi_value)
RegWrite($proksi_key, "ProxyOverride", "REG_SZ", "")
EndIf
If GUICtrlRead($tmp, 0) > 0 Then
$tmp_value = GUICtrlRead($tmp, 0)
$tmp_key = "HKEY_CURRENT_USER\Environment"
RegWrite($tmp_key, "TEMP", "REG_SZ", $tmp_value)
RegWrite($tmp_key, "TMP", "REG_SZ", $tmp_value)
EndIf
ExitLoop
Case $msg = $cancel
ExitLoop
Case $msg = $Gui_Event_Close
ExitLoop
Case $msg = $quit
Exit
Case $msg = $about
About()
EndSelect
WEnd

Func About()
MsgBox(64, "О программе", "Easy tweaker v1.0" & @CRLF & @CRLF & "Программа для тонкой настройки клубных машин" & @CRLF & @CRLF & "CopyRight: Cyber Soft")
EndFunc
Автор: ViSiToR
Дата сообщения: 21.07.2007 10:36
Maza Faka
Я не понимаю зачем ты настаиваешь проверять нажатие чекбоксов в реалдьном времени?

Это замедляет работу скрипта раз, нагружает память два, не даёт никакого эффекта три, и лишний код в скрипте четыре

У тебя также проверяется на выход с цикла, можно и покороче...


Код: Case $msg = $cancel
ExitLoop
Case $msg = $Gui_Event_Close
ExitLoop
Автор: Maza Faka
Дата сообщения: 21.07.2007 14:03
ViSiToR

Цитата:
Я не понимаю зачем ты настраиваешь проверять нажатие чекбоксов в реальном времени?


Да, знаю, что неудачно организована проверка, просто не знаю, как проверять нажатие чекбоксов, если например пользователь отметил чекбокс, а потом снял отметку с этого чекбокса, вот и проверяется нажатие чекбокса в момент нажатия элемента "OK"
Подкинь идею, как можно реализовать всё это красиво.
Автор: NIKZZZZ
Дата сообщения: 21.07.2007 14:38
Maza Faka

Цитата:
Подкинь идею, как можно реализовать всё это красиво.

А почему-бы просто не использовать режим OnEvent ?


Автор: ViSiToR
Дата сообщения: 21.07.2007 16:31
Maza Faka

Цитата:
Подкинь идею

Это шутка? - Ты видмо мой пример не смотрел?

Я там сократил твой код почти вдвое, и всё попрежнему функционирует как ты это задумал ...

Чекбоксы проверяем ТОЛЬКО после нажатии кнопки $Ok, т.е нет необходимости проверять их налету (в данном случае), просто по нажатию ОК проверяем значение (состояние) чекбоксов (If GuiCtrRead($CheckBoxID) = $GUI_CHECKED Then ...).


И как посоветовал NIKZZZZ, ещё более удобнее использовать OnEvent метод (смотри в справке Opt("GuiSetOnEventMode", 1), хотя в данном случае можно и без него.
Автор: Maza Faka
Дата сообщения: 21.07.2007 17:18
ViSiToR

Цитата:
Ты видимо мой пример не смотрел?


Спасибо, теперь понял, что в моём примере происходит постоянный опрос чекбоксов, что не есть хорошо для производительности, а в твоём опрос происходит только один раз, во время нажатия элемента "OK", я поначалу просто не вкурил твой пример, думал, что там тоже происходит постоянный опрос чекбоксов, как видно ошибся из-за невнимательности.

NIKZZZZ

Цитата:
А почему-бы просто не использовать режим OnEvent ?

Да, попробую, о результатах отпишусь.

Добавлено:

Цитата:
У тебя также проверяется на выход с цикла, можно и покороче...

Код:Case $msg = $cancel
ExitLoop
Case $msg = $Gui_Event_Close
ExitLoop

Это можно проверить в одном Case...

Код:Case $msg = $cancel Or $msg = $Gui_Event_Close
ExitLoop


Интересно, а почему такая конструкция не работает при использовании "Switch"

Код:
Case $cancel Or $Gui_Event_Close
ExitLoop
Автор: ViSiToR
Дата сообщения: 22.07.2007 00:19
Maza Faka

Цитата:
почему такая конструкция не работает при использовании "Switch"

Потому что так задуманно разработчиками
Switch нужен когда используется одна и таже переменная для сравнения, а обычный Select когда нужно выбрать одно действие из многих условии.

Автор: Maza Faka
Дата сообщения: 22.07.2007 08:08
ViSiToR

Цитата:
И как посоветовал NIKZZZZ, ещё более удобнее использовать OnEvent метод

Накарябал с использованием GuiOnEventMode, посмотри плз, так сойдёт?
Сокращённый вариант кода [more]
Код:
#include <GUIConstants.au3>
Opt("GuiOnEventMode", 1)

GUICreate("Easy Tweaker for client workstation", 350, 280, -1, -1, -1, $WS_EX_CLIENTEDGE)
GuiSetIcon("regedit.exe", 0)
GUISetBkColor(0xE0FFFF)

;Label
GUICtrlCreateLabel("Каталог для временных (temp) файлов", 10, 185, 200, 15)
GUICtrlCreateLabel("Настройка прокси", 10, 235, 100, 15)

;Buttons
$ok = GuiCtrlCreateButton("Ok", 200, 250, 60, -1, $BS_FLAT)
$cancel = GUICtrlCreateButton("Cancel", 285, 250, 60, -1, $BS_FLAT)

;Input
$tmp = GUICtrlCreateInput(@HomeDrive & "\Temp", 10, 200, 100, 17, -1)
GUICtrlSetTip(-1, "Введите путь для папки с временными файлами")
$proksi = GUICtrlCreateInput("192.168.0.11:8080", 10, 250, 100, 17, -1)
GUICtrlSetTip(-1, "Укажите IP-адрес сервера и порт")

;Checkbox
$print = GUICtrlCreateCheckbox("Отменить поиск сетевых принтеров", 10, 10, 200, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$sched = GUICtrlCreateCheckbox("Отменить поиск назначенных заданий", 10, 25, 215, 15)
GUICtrlSetTip(-1, "Ускоряет отображение сетевых подключений")
$chkdsk = GUICtrlCreateCheckbox("Сократить время ожидания перед проверкой диска", 10, 40, 280, 15)
GUICtrlSetTip(-1, "Сокращает время ожидания с 10 до 3 секунд")
$update = GUICtrlCreateCheckbox("Отключить автоматическое обновление Windows", 10, 55, 270, 15)
GUICtrlSetTip(-1, "Полностью отключить обновление Windows из интернета")
$clean = GUICtrlCreateCheckbox("Отключить мастер очистки рабочего стола", 10, 70, 235, 15)
GUICtrlSetTip(-1, "Отключает очистку рабочего стола от неиспользуемых ярлыков")
$secur = GUICtrlCreateCheckbox("Отключить все предупреждения центра безопасности", 10, 85, 300, 15)
GUICtrlSetTip(-1, "Отключает значок предупреждения системы безопасности в трее")
$remote = GUICtrlCreateCheckbox("Отключить отправку приглашения удалённому помощнику", 10, 100, 340, 15)
GUICtrlSetTip(-1, "Отключает возможность удалённого подключения к рабочему столу компьютера")
$share = GUICtrlCreateCheckbox("Отключить простой общий доступ к файлам", 10, 115, 250, 15)
GUICtrlSetTip(-1, "Устанавливает классический диалог назначения прав и доступа")
$bug = GUICtrlCreateCheckbox("Отключить отчёт об ошибках", 10, 130, 200, 15)
GUICtrlSetTip(-1, "Отключает возможность отправки отчёта об ошибке в Microsoft")

GUISetState()

GUISetOnEvent($Gui_Event_Close, "Close")
GUICtrlSetOnEvent($ok, "Ok")
GUICtrlSetOnEvent($cancel, "Close")

While 1
Sleep(1000)
WEnd

Func Close()
Exit
EndFunc

Func Ok()
$Readprint = GUICtrlRead($print)
$Readsched = GUICtrlRead($sched)
If $Readprint = $Gui_Checked Then RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}")
If $Readsched = $Gui_Checked Then RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}")
Exit
EndFunc
Автор: Koppew
Дата сообщения: 23.07.2007 13:02
вобщем ничего не понимаю нужна помощь...

хотел через AutoIt распаковывать rar-архивы, используя unrar.dll... залез на оф.форум, нашел ветку
там не было предложено решения для AutoIt...

я бы хотел попросить местных мудрецов посмотреть скрипт для AutoIt и описание unrar.dll


[more=описание unrar.dll]
Код: UnRAR.dll Manual
~~~~~~~~~~~~~~~~

UnRAR.dll is a 32-bit Windows dynamic-link library which provides
file extraction from RAR archives.


Exported functions

====================================================================
HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData)
====================================================================

Description
~~~~~~~~~~~
Open RAR archive and allocate memory structures

Parameters
~~~~~~~~~~
ArchiveData Points to RAROpenArchiveData structure

struct RAROpenArchiveData
{
char *ArcName;
UINT OpenMode;
UINT OpenResult;
char *CmtBuf;
UINT CmtBufSize;
UINT CmtSize;
UINT CmtState;
};

Structure fields:

ArcName
Input parameter which should point to zero terminated string
containing the archive name.

OpenMode
Input parameter.

Possible values

RAR_OM_LIST Open archive for reading file headers only
RAR_OM_EXTRACT Open archive for testing and extracting files

OpenResult
Output parameter.

Possible values

0 Success
ERAR_NO_MEMORY Not enough memory to initialize data structures
ERAR_BAD_DATA Archive header broken
ERAR_BAD_ARCHIVE File is not valid RAR archive
ERAR_UNKNOWN_FORMAT Unknown encryption used for archive headers
ERAR_EOPEN File open error

CmtBuf
Input parameter which should point to the buffer for archive
comments. Maximum comment size is limited to 64Kb. Comment text is
zero terminated. If the comment text is larger than the buffer
size, the comment text will be truncated. If CmtBuf is set to
NULL, comments will not be read.

CmtBufSize
Input parameter which should contain size of buffer for archive
comments.

CmtSize
Output parameter containing size of comments actually read into the
buffer, cannot exceed CmtBufSize.

CmtState
Output parameter.

Possible values

0 comments not present
1 Comments read completely
ERAR_NO_MEMORY Not enough memory to extract comments
ERAR_BAD_DATA Broken comment
ERAR_UNKNOWN_FORMAT Unknown comment format
ERAR_SMALL_BUF Buffer too small, comments not completely read

Return values
~~~~~~~~~~~~~
Archive handle or NULL in case of error


========================================================================
HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData)
========================================================================

Description
~~~~~~~~~~~
Similar to RAROpenArchive, but uses RAROpenArchiveDataEx structure
allowing to specify Unicode archive name and returning information
about archive flags.

Parameters
~~~~~~~~~~
ArchiveData Points to RAROpenArchiveDataEx structure

struct RAROpenArchiveDataEx
{
char *ArcName;
wchar_t *ArcNameW;
unsigned int OpenMode;
unsigned int OpenResult;
char *CmtBuf;
unsigned int CmtBufSize;
unsigned int CmtSize;
unsigned int CmtState;
unsigned int Flags;
unsigned int Reserved[32];
};

Structure fields:

ArcNameW
Input parameter which should point to zero terminated Unicode string
containing the archive name or NULL if Unicode name is not specified.

Flags
Output parameter. Combination of bit flags.

Possible values

0x0001 - Volume attribute (archive volume)
0x0002 - Archive comment present
0x0004 - Archive lock attribute
0x0008 - Solid attribute (solid archive)
0x0010 - New volume naming scheme ('volname.partN.rar')
0x0020 - Authenticity information present
0x0040 - Recovery record present
0x0080 - Block headers are encrypted
0x0100 - First volume (set only by RAR 3.0 and later)

Reserved[32]
Reserved for future use. Must be zero.

Information on other structure fields and function return values
is available above, in RAROpenArchive function description.


====================================================================
int PASCAL RARCloseArchive(HANDLE hArcData)
====================================================================

Description
~~~~~~~~~~~
Close RAR archive and release allocated memory. It must be called when
archive processing is finished, even if the archive processing was stopped
due to an error.

Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the
RAROpenArchive function call.

Return values
~~~~~~~~~~~~~
0 Success
ERAR_ECLOSE Archive close error


====================================================================
int PASCAL RARReadHeader(HANDLE hArcData,
struct RARHeaderData *HeaderData)
====================================================================

Description
~~~~~~~~~~~
Read header of file in archive.

Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the
RAROpenArchive function call.

HeaderData
It should point to RARHeaderData structure:

struct RARHeaderData
{
char ArcName[260];
char FileName[260];
UINT Flags;
UINT PackSize;
UINT UnpSize;
UINT HostOS;
UINT FileCRC;
UINT FileTime;
UINT UnpVer;
UINT Method;
UINT FileAttr;
char *CmtBuf;
UINT CmtBufSize;
UINT CmtSize;
UINT CmtState;
};

Structure fields:

ArcName
Output parameter which contains a zero terminated string of the
current archive name. May be used to determine the current volume
name.

FileName
Output parameter which contains a zero terminated string of the
file name in OEM (DOS) encoding.

Flags
Output parameter which contains file flags:

0x01 - file continued from previous volume
0x02 - file continued on next volume
0x04 - file encrypted with password
0x08 - file comment present
0x10 - compression of previous files is used (solid flag)

bits 7 6 5

0 0 0 - dictionary size 64 Kb
0 0 1 - dictionary size 128 Kb
0 1 0 - dictionary size 256 Kb
0 1 1 - dictionary size 512 Kb
1 0 0 - dictionary size 1024 Kb
1 0 1 - dictionary size 2048 KB
1 1 0 - dictionary size 4096 KB
1 1 1 - file is directory

Other bits are reserved.

PackSize
Output parameter means packed file size or size of the
file part if file was split between volumes.

UnpSize
Output parameter - unpacked file size.

HostOS
Output parameter - operating system used for archiving:

0 - MS DOS;
1 - OS/2.
2 - Win32
3 - Unix

FileCRC
Output parameter which contains unpacked file CRC. It should not be
used for file parts which were split between volumes.

FileTime
Output parameter - contains date and time in standard MS DOS format.

UnpVer
Output parameter - RAR version needed to extract file.
It is encoded as 10 * Major version + minor version.

Method
Output parameter - packing method.

FileAttr
Output parameter - file attributes.

CmtBuf
File comments support is not implemented in the new DLL version yet.
Now CmtState is always 0.

/*
* Input parameter which should point to the buffer for file
* comments. Maximum comment size is limited to 64Kb. Comment text is
* a zero terminated string in OEM encoding. If the comment text is
* larger than the buffer size, the comment text will be truncated.
* If CmtBuf is set to NULL, comments will not be read.
*/

CmtBufSize
Input parameter which should contain size of buffer for archive
comments.

CmtSize
Output parameter containing size of comments actually read into the
buffer, should not exceed CmtBufSize.

CmtState
Output parameter.

Possible values

0 Absent comments
1 Comments read completely
ERAR_NO_MEMORY Not enough memory to extract comments
ERAR_BAD_DATA Broken comment
ERAR_UNKNOWN_FORMAT Unknown comment format
ERAR_SMALL_BUF Buffer too small, comments not completely read

Return values
~~~~~~~~~~~~~

0 Success
ERAR_END_ARCHIVE End of archive
ERAR_BAD_DATA File header broken


====================================================================
int PASCAL RARReadHeaderEx(HANDLE hArcData,
struct RARHeaderDataEx *HeaderData)
====================================================================

Description
~~~~~~~~~~~
Similar to RARReadHeader, but uses RARHeaderDataEx structure,
containing information about Unicode file names and 64 bit file sizes.

struct RARHeaderDataEx
{
char ArcName[1024];
wchar_t ArcNameW[1024];
char FileName[1024];
wchar_t FileNameW[1024];
unsigned int Flags;
unsigned int PackSize;
unsigned int PackSizeHigh;
unsigned int UnpSize;
unsigned int UnpSizeHigh;
unsigned int HostOS;
unsigned int FileCRC;
unsigned int FileTime;
unsigned int UnpVer;
unsigned int Method;
unsigned int FileAttr;
char *CmtBuf;
unsigned int CmtBufSize;
unsigned int CmtSize;
unsigned int CmtState;
unsigned int Reserved[1024];
};


====================================================================
int PASCAL RARProcessFile(HANDLE hArcData,
int Operation,
char *DestPath,
char *DestName)
====================================================================

Description
~~~~~~~~~~~
Performs action and moves the current position in the archive to
the next file. Extract or test the current file from the archive
opened in RAR_OM_EXTRACT mode. If the mode RAR_OM_LIST is set,
then a call to this function will simply skip the archive position
to the next file.

Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the
RAROpenArchive function call.

Operation
File operation.

Possible values

RAR_SKIP Move to the next file in the archive. If the
archive is solid and RAR_OM_EXTRACT mode was set
when the archive was opened, the current file will
be processed - the operation will be performed
slower than a simple seek.

RAR_TEST Test the current file and move to the next file in
the archive. If the archive was opened with
RAR_OM_LIST mode, the operation is equal to
RAR_SKIP.

RAR_EXTRACT Extract the current file and move to the next file.
If the archive was opened with RAR_OM_LIST mode,
the operation is equal to RAR_SKIP.


DestPath
This parameter should point to a zero terminated string containing the
destination directory to which to extract files to. If DestPath is equal
to NULL, it means extract to the current directory. This parameter has
meaning only if DestName is NULL.

DestName
This parameter should point to a string containing the full path and name
of the file to be extracted or NULL as default. If DestName is defined
(not NULL) it overrides the original file name saved in the archive and
DestPath setting.

Both DestPath and DestName must be in OEM encoding. If necessary,
use CharToOem to convert text to OEM before passing to this function.

Return values
~~~~~~~~~~~~~
0 Success
ERAR_BAD_DATA File CRC error
ERAR_BAD_ARCHIVE Volume is not valid RAR archive
ERAR_UNKNOWN_FORMAT Unknown archive format
ERAR_EOPEN Volume open error
ERAR_ECREATE File create error
ERAR_ECLOSE File close error
ERAR_EREAD Read error
ERAR_EWRITE Write error


Note: if you wish to cancel extraction, return -1 when processing
UCM_PROCESSDATA callback message.


====================================================================
int PASCAL RARProcessFileW(HANDLE hArcData,
int Operation,
wchar_t *DestPath,
wchar_t *DestName)
====================================================================

Description
~~~~~~~~~~~
Unicode version of RARProcessFile. It uses Unicode DestPath
and DestName parameters, other parameters and return values
are the same as in RARProcessFile.


====================================================================
void PASCAL RARSetCallback(HANDLE hArcData,
int PASCAL (*CallbackProc)(UINT msg,LONG UserData,LONG P1,LONG P2),
LONG UserData);
====================================================================

Description
~~~~~~~~~~~
Set a user-defined callback function to process Unrar events.

Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the
RAROpenArchive function call.

CallbackProc
It should point to a user-defined callback function.

The function will be passed four parameters:


msg Type of event. Described below.

UserData User defined value passed to RARSetCallback.

P1 and P2 Event dependent parameters. Described below.


Possible events

UCM_CHANGEVOLUME Process volume change.

P1 Points to the zero terminated name
of the next volume.

P2 The function call mode:

RAR_VOL_ASK Required volume is absent. The function should
prompt user and return a positive value
to retry or return -1 value to terminate
operation. The function may also specify a new
volume name, placing it to the address specified
by P1 parameter.

RAR_VOL_NOTIFY Required volume is successfully opened.
This is a notification call and volume name
modification is not allowed. The function should
return a positive value to continue or -1
to terminate operation.

UCM_PROCESSDATA Process unpacked data. It may be used to read
a file while it is being extracted or tested
without actual extracting file to disk.
Return a positive value to continue process
or -1 to cancel the archive operation

P1 Address pointing to the unpacked data.
Function may refer to the data but must not
change it.

P2 Size of the unpacked data. It is guaranteed
only that the size will not exceed the maximum
dictionary size (4 Mb in RAR 3.0).

UCM_NEEDPASSWORD DLL needs a password to process archive.
This message must be processed if you wish
to be able to handle archives with encrypted
file names. It can be also used as replacement
of RARSetPassword function even for usual
encrypted files with non-encrypted names.

P1 Address pointing to the buffer for a password.
You need to copy a password here.

P2 Size of the password buffer.


UserData
User data passed to callback function.

Other functions of UnRAR.dll should not be called from the callback
function.

Return values
~~~~~~~~~~~~~
None



====================================================================
void PASCAL RARSetChangeVolProc(HANDLE hArcData,
int PASCAL (*ChangeVolProc)(char *ArcName,int Mode));
====================================================================

Obsoleted, use RARSetCallback instead.



====================================================================
void PASCAL RARSetProcessDataProc(HANDLE hArcData,
int PASCAL (*ProcessDataProc)(unsigned char *Addr,int Size))
====================================================================

Obsoleted, use RARSetCallback instead.


====================================================================
void PASCAL RARSetPassword(HANDLE hArcData,
char *Password);
====================================================================

Description
~~~~~~~~~~~
Set a password to decrypt files.

Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the
RAROpenArchive function call.

Password
It should point to a string containing a zero terminated password.

Return values
~~~~~~~~~~~~~
None


====================================================================
void PASCAL RARGetDllVersion();
====================================================================

Description
~~~~~~~~~~~
Returns API version.

Parameters
~~~~~~~~~~
None.

Return values
~~~~~~~~~~~~~
Returns an integer value denoting UnRAR.dll API version, which is also
defined in unrar.h as RAR_DLL_VERSION. API version number is incremented
only in case of noticeable changes in UnRAR.dll API. Do not confuse it
with version of UnRAR.dll stored in DLL resources, which is incremented
with every DLL rebuild.

If RARGetDllVersion() returns a value lower than UnRAR.dll which your
application was designed for, it may indicate that DLL version is too old
and it will fail to provide all necessary functions to your application.

This function is absent in old versions of UnRAR.dll, so it is safer
to use LoadLibrary and GetProcAddress to access this function.
Автор: ViSiToR
Дата сообщения: 23.07.2007 17:09
Maza Faka

Цитата:
так сойдёт?

Конечно, лучше не может и быть


Koppew

Цитата:
хотел через AutoIt распаковывать rar-архивы, используя unrar.dll

Так критично используя unrar.dll? есть и другие, более надёжные средства распаковки и упаковки архивов, например, консольная утилита 7z.exe не требующая никаких установленных приложении в системе

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.