Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
morgan1991
19-11-2008, 23:04
EgOrus, попробуйте запустить скрипт с админскими правами, на висте есть такое может поможет?
Люди добрые скажите есть ли в Autoit команда которая при компиляции скрипта поможет изменить параметры .exe в св-вах они отображаются и всякие другие параметры?
Вот св-ва:
http://s56.radikal.ru/i153/0811/2f/8391323a9cd5.png
morgan1991,
AutoIt3Wrapper (http://www.autoitscript.com/autoit3/scite/docs/AutoIt3Wrapper.htm), страница закачки (http://www.autoitscript.com/autoit3/scite/downloads.shtml), пример:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=MyProg.exe
#AutoIt3Wrapper_Res_Comment=My Test Program
#AutoIt3Wrapper_Res_Description=MyProg - My Test Program
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=GNU GPL
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
EgOrus, к сожалению, сейчас нет под рукой висты, обходной вариант:
$host = @ComputerName
If _PING($host) Then
MsgBox(64,"Сообщение","Хост доступен")
Else
MsgBox(16,"Ошибка","Хост недоступен")
EndIf
Func _PING($host)
Local Const $sExe = @SystemDir &"\PING.EXE"
Local $iRet, $sCMD = $sExe &" -n 1 "& $host
If Not FileExists($sExe) Then Return SetError(1,0,False)
$iRet = RunWait($sCMD, @SystemDir, @SW_HIDE)
Return $iRet==0
EndFunc
morgan1991
20-11-2008, 15:25
amel27, чтото я недопонял, что там качать всё пробовал кидал в папку автоита заменял файлы в сисайте не помогает всеравно эти команды не работают компилятор их как будто игнорирует. Обьясни плиз популярно как для ламера.
Maza Faka
20-11-2008, 16:05
чтото я недопонял »
SciTE4AutoIt3.exe (http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe) полный пакет (SciTE + утилиты)
Разобрался. Скачал новый SciTE. Не помогло. Скачал BETA-версию autoit и откомпилировал через "Beta Compile".
подскажите такое решение.
Надо сделать автоскрипт на смену резрешений в реестре для ветки SafeBoot на только чтение,
чтоб вирус не удалял её. Ну т.е. там на кнопочки нажать , галочки поставить... Скачал SciTE4AutoIt3. Пытался делать AutoIt3Wrapper`ом и AutoItMacroGenerator непомагает, так как они записывают фиксированные перемещение мышки,
и не учитывают что окно возможно будет перемещено. Дайте совет! Заранее спасибо!!
Grammaton Cleric
21-11-2008, 05:46
Ну для начала, я в таких случаях ставлю AutoIT3 полностью...
Потом в начале скрипта прописываешь
Opt("MouseCoordMode",2) ; Обработка координат положения курсора мыши от левого верхнего угла клиентской части текущего окна
Затем запускаешь AutoIt Window Info (не знаю как в остальных, но в полной установке этот компонент устанавливается), и там в меню "Options" выбираешь "CoordMode"->"Client"
Теперь Window Info будет показывать положение мыши исчисляя его от левого верхнего угла клиентской части текущего окна. То есть координаты клика теперь будут отсчитываться не от угла экрана, а от угла активного окна...
Чтобы лучше понять - сделай то, что написано и попробуй как это будет действовать... Можно банально при запущеном
Window Info попробовать найти нулевые координаты мыши в нужном окне. Еще раз повторяю, что после этих манипуляций координаты не будут зависеть от того, где находится окно - главное, чтобы оно было активно.
------------
А может проще ControlClick использовать?
Maza Faka
21-11-2008, 08:31
Надо сделать автоскрипт на смену резрешений в реестре »
IMHO реализовывать решение подобной задачи имитацией кликов - полный бред. Поищи в сети, может какие утилиты есть, наподобие cacls.exe? только для ключей реестра.
kaZilla
Нарыл кое-какую инфу:
How to Use Regini.exe to Set Permissions on Registry Keys (http://support.microsoft.com/kb/237607)
setacl (http://setacl.sourceforge.net/)
Подскажите пожалуйста как предусмотреть в скрипте разные варианты. Например, если устанавливать ICQ 6 автоматом на чистую систему, то все ставится нормально, а если на компе создано подключение к интернету, то прога спрашивает об подключении и ломится в интернет. Как предусмотреть ето и сделать так, чтоб скрипт "умел" устанавливать двумя вариантами. Аналогично, если инсталировать программу, которая уже установлена, то спрашивает "Восстановить" или "Удалить". Прошу помощи. Только подробно, если можно. И если не трудно, то с примером, а то я AutoIt знаю на уровне чуть выше SciTe Skript Writer-a :)
kaZilla
Надо сделать автоскрипт на смену резрешений в реестре для ветки »
согласен с Maza Faka, такие задачи лучше решать "в лоб"... теоретически, установку прав можно сделать без сторонних утилит (где-то тут мелькал линк на описалово), но сия задача весьма трудоемкая и даже оффсайт AutoIT рекомендует использовать сторонние модули (Set ACL properties in Windows (http://www.autoitscript.com/forum/index.php?showtopic=50880&st=0))... я проверил предложенный ptrex COM объект - работает, НО мне не удалось завести метод $SET_ACCESS в режиме правки текущего ACL (без добавления нового), кроме того не удалось добавить ACL при отсутствии прав на ветку, но при наличии владения (RegEdit в этом случае добавляет права нормально)... поэтому я пока не вижу смысла в полной чистке всех прав ($ACTN_CLEARDACL), т.к. добавить их потом нет никакой возможности, а заявленная способность нескольких операций "за раз" увы, не работает... и тем не менее для большинства простых случаев этот способ будет полезен, рабочий пример (значения констант нужно скопировать с топика ptrex):
$strFileName = "HKCU\TEST"
$strUsername = "S-1-5-32-544" ; Administrators
$strPermission = "read"
; Снятие наследуемых разрешений
$SetACL1 = ObjCreate("SetACL.SetACLCtrl.1")
If IsObj($SetACL1) Then
$nError = $SetACL1.SetObject($strFileName, $SE_REGISTRY_KEY)
$nError = $SetACL1.SetObjectFlags($INHPARNOCOPY, 0, True, False)
$nError = $SetACL1.SetAction($ACTN_SETINHFROMPAR)
$nError = $SetACL1.Run
EndIf
; Удаление заданной учетной записи из списков доступа
$SetACL1 = ObjCreate("SetACL.SetACLCtrl.1")
If IsObj($SetACL1) Then
$nError = $SetACL1.SetObject($strFileName, $SE_REGISTRY_KEY)
$nError = $SetACL1.AddTrustee($strUsername, "", True, False, $ACTN_REMOVETRUSTEE, True, False)
$nError = $SetACL1.SetAction($ACTN_TRUSTEE)
$nError = $SetACL1.Run
EndIf
; Установка прав для заданной учетной записи
$SetACL1 = ObjCreate("SetACL.SetACLCtrl.1")
If IsObj($SetACL1) Then
$nError = $SetACL1.SetObject($strFileName, $SE_REGISTRY_KEY)
$nError = $SetACL1.SetAction($ACTN_ADDACE)
$nError = $SetACL1.AddACE($strUsername, True, $strPermission, $INHPARNOCHANGE, False, $SET_ACCESS, $ACL_DACL)
$nError = $SetACL1.Run
EndIf
Прямой линк на оффсайт SetACL: http://sourceforge.net/projects/setacl/
там же лежит CMD-вариант утилиты, хотя для серьезных задач рекомендую SubInACL (http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en) :)
morgan1991
21-11-2008, 15:19
t_ara_s,
#include <Inet.au3>
$PublicIP = _GetIP()
If $PublicIP = -1 Then main()
Есть инет ломиться туда
Func main()
Инэта нет установка
EndFunc
Мне надо сделать автоустановку. Если ставить на чистую систему, то все норм, а если программа уже установлена и спрашивает "восстановить" или "удалить" то как? Что-то типа если окно 1, то комманда 1, если окно 2, то команда 2?
Maza Faka
21-11-2008, 16:11
если программа уже установлена и спрашивает "восстановить" или "удалить" то как? »
Что как? Тебе нужно проверить установлена ли программа или выполнить действия в зависимости от
спрашивает "восстановить" или "удалить"
Что если появляется окно
http://s46.radikal.ru/i114/0811/4f/554362f9e0e8t.jpg (http://radikal.ru/F/s46.radikal.ru/i114/0811/4f/554362f9e0e8.jpg.html)
выполнить одно действие
А если
http://i051.radikal.ru/0811/e4/215ca6321aa6t.jpg (http://radikal.ru/F/i051.radikal.ru/0811/e4/215ca6321aa6.jpg.html)
то другое. Хотя, действительно, можно просто проверить установлена ли программа » вместо разбора окна
Спасибо, но я ето и сам знаю. А вот как ето прописать в скрипте? Напишите пожалуйста кому не лень, а то я скрипты пишу только благодаря SkriptWriter :-)
Maza Faka
22-11-2008, 06:53
t_ara_s
WinGetText()
ControlGetText()
If...Then...Else
Grammaton Cleric
22-11-2008, 07:50
Если ставить на чистую систему, то все норм, а если программа уже установлена и спрашивает »
t_ara_s, каждая программа в процессе установки создает себе папочку (директорию), в которой она, собственно, и обитает... Так вот можно проверить наличие данной папочки, или проверить наличие в папочке программы файла, который там ОБЯЗАТЕЛЬНО присутствует...
If FileExists (@ProgramfilesDir&'\Proga\File.exe') = 1 then Exit
Или
If FileExists (@ProgramfilesDir&'\Proga\File.exe') then
MsgBox (0, 'test', 'Программа уже установлена')
Else
MsgBox (0, 'test', 'Программа еще не установлена')
EndIf
Также можно воспользоваться ключами реестра, которые программа создает в процессе установки, если создает конечно.
Тут поможет
RegRead ( "keyname", "valuename" ) Который возвращает значение ключа реестра... Если вернул пустую строку ('') значит, скорее всего, нету его и, соответственно, программа не установлена.
Здравствуйте посетители форума на досуге собрал несколько скриптов "тихих установок" с за премер были взяты скрипты от
Sanja Alone меня заинтересовали следующие строчки:
;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки.
AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("SendKeyDelay", 10)
If ProcessExists ( "ps.exe" )<>0 Then
ProcessClose ( "ps.exe" )
ProcessWaitClose ( "ps.exe" )
EndIf
Какую операцию выполняет даное выражение и объязательно ли включать эти строки в свои скрипты?
Если вопрос оказался глупым обьясните как это говориться "КАК ДЛЯ ЛАМЕРА" учитывая то что я невижу точто на монеторе у меня проблемы с зрением я работаю с синтезатором речи без помощи глаз и зрячего програмиста под рукой нет для того чтобы прокоментировать произходящее.
Также изучая файл справки "AutoIt3_2_5_4_ru.chm" обнаружил одно недоразумение непереведены несколько разделов на русский язык а имено:
указатель библиотечных функций / Автоматизация MS Internet Explorer
Подскажите делал ли Валерий Викторович Иванов полный перевод этих разделов если да то где можно скачать этот дестребутив.
Maza Faka
24-11-2008, 15:27
Какую операцию выполняет даное выражение »
AutoItSetOption("TrayIconDebug", 1)
Если установить эту опцию, то при наведении курсора мыши на иконку выполняющегося скрипта в трее, будет отображаться информация о том, какая именно строка кода выполняется в данный момент (не работает в скомпилированном коде). Полезно при отладке кода.
AutoItSetOption("SendKeyDelay", 10)
Изменяет длительность задержки между нажатиями клавиш. (По умолчанию 5 мс.).
If ProcessExists ( "ps.exe" )<>0 Then
Если процесс ps.exe существует то...
ProcessClose
Закрываем процесс.
ProcessWaitClose
Ждём закрытия процесса.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.