Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
TERMINAL
08-05-2008, 12:50
amel27, проблема ещё в том что если пишешь образ болванкой то номер меняется на другой
amel27, Насколько я понял в автоит нет структур?! Что все данные организовывать массивами?
TERMINAL
если пишешь образ болванкой то номер меняется на другой »
не знаю что такое "болванкой", но после некоторых замеров и не без помощи Гугля сделал вывод, что серийник для компакт-дисков НЕ ХРАНИТСЯ в образе (как я думал сначала), а РАССЧИТЫВАЕТСЯ из данных самого образа по НЕИЗВЕСТНОМУ алгоритму (точнее - известному только Microsoft), поэтому изменения в образе будут изменять серийный номер тома... В этом всем сбивает с толку то, что для разных типов носителей используется разный алгоритм расчета, к примеру для жестких дисков серийник не меняется с момента создания раздела и генерится на базе времени форматирования.
NikLok
Насколько я понял в автоит нет структур?!»
А как же команды DllStruct* ?!
amel27, А как же команды DllStruct* ?! »
Спасибо, а то прозевал!
EgOrus, Проблемму с кодировками также не снимает
Странно, мой пример у меня всегда отрабатывает и пишет в нормальной кодировке.
А UTF заголовок не влияет на то, в какой кодировке записываются данные в этот файл.
Ну почему, без него как раз всё смешано и будет.
У меня кстати оказывается пишет нормально даже если сразу (при записи) использовать 1 + 128.
amel27, вот две UDF преобразования OEM в ANSI и обратно
Отличные UDF, спасибо :)
Creat0R
у меня после отработки твоего также как и моего скрипта на рабочем и домашнем буке кодировки мешаются на виртуалке тоже, но не всегда, бывает что все нормально, из 10 запусков после 2-3 мешаются.
Причем происходит это не случайным образом а в пределах диска, т.е. например все файлы на диске С идут в 1251 а на диске Д уже в 866, может быть и наоборот. Т.е. в одном из циклов случайным образом почему-то не воспринимается команда chcp 1251
По поводу UTF, при использовании 1 + 128 не происходит перекодировки текста, это можно посмотреть в консоли если ее не скрывать, в файл записывается например
c:\Documents and Settings\Default User\*Ў«®*л\winword.doc
c:\Documents and Settings\Default User\*Ў«®*л\winword2.doc
c:\Documents and Settings\Default User\*Ў«®*л\excel.xls
c:\Documents and Settings\Default User\*Ў«®*л\excel4.xls
c:\Documents and Settings\Default User\*Ў«®*л\powerpnt.ppt
Проблемму решил следующим образом:
Run('%Comspec% /U /C dir "$d$" /s /b','',0,6)
Если у кого-то есть дистрибутив SkypeSetup.exe, помогите. Хочу сделать скрипт, который бы нажимал на элементы:
- флажок
- кнопку установки
- отключил флажок про Google
- а в конце нажал Запустить
TERMINAL
10-05-2008, 09:19
Котяра, Делаешь так
RunWait ( @ScriptDir & "\" & "Setup.exe /lang=ru /verysilent /NoWpFinished /NoStart" )
WinWait("Skype™ - Создать пользователя","", 20)
If ProcessExists("Skype.exe") Then
ProcessClose("Skype.exe")
ProcessWaitClose("Skype.exe", 15)
EndIf
потом, если установлун гугл твой, делаешь тихое его удаление.
Скачать его можно сдесь (http://www.skypeclub.ru/skype_windows.htm)
EgOrus
видимо не всегда отрабатывается chcp, или есть какой-то ньюанс с этой командой, которого я не знаю »Гм... может проблема и не в этом, но последовательное выполнение CMD-команд осуществляется оператором "&" - с его помощью можно объединять несколько строк батника в одну CMD-строку (Conditional execution (http://www.robvanderwoude.com/condexec.html)). Но мне таким образом не удалось ни в батнике, ни вручную заставить DIR выводить текст на экран (равно как в AutoIT) в Win-кодировке, хотя при выводе в файл все пишется нормально. Тем не менее, такое нестандартное применение оператора "|" вместо "&" позволяет выводить текст в WIN-кодировке прямо на экран... честно говоря для меня это было неожиданностью.
Котяра
читайте шапку - либо пишите в отдельную тему либо задавайте вопрос без привязки к установке конкретного софта - поставьте AutoIT, запустите "AutoIT Window Info" и дайте всю инфу по интересующему Вас окну и контролам.
EgOrus
при использовании 1 + 128 не происходит перекодировки текста, это можно посмотреть в консоли если ее не скрывать
Текст не трогается, я знаю, но в файл пишется корректно (у меня).
Проблемму решил следующим образом:
Хм, не знал о ключе /U.
Котяра
Если у кого-то есть дистрибутив SkypeSetup.exe, помогите. Хочу сделать скрипт, который бы нажимал на элементы:
У меня он есть, но в нём (http://topdownloads.ru/programs/file/110.htm) нет гугля ;)
Вот простой скрипт, нажимает кнопки для установки:
Run(@ScriptDir & "\SkypeSetup.exe")
If @error Then Exit
$SkypeTitleClass = "[CLASS:TssMainForm.UnicodeClass;REGEXPTITLE:Skype.*]"
ProcessWait("SkypeSetup.exe", 20)
WinWait($SkypeTitleClass, "", 20)
ControlClick($SkypeTitleClass, "", "TTntCheckBox.UnicodeClass1")
ControlClick($SkypeTitleClass, "", "TTntButton.UnicodeClass2")
Creat0R, ваш скрипт работает. Но в мое инсталляторе (с диска одного компьютерного журнала) есть такая страница:
Creat0R, доработал Ваш скрипт и получилось так:
Run(@ScriptDir & "\SkypeSetup.exe")
If @error Then Exit
$SkypeTitleClass = "[CLASS:TssMainForm.UnicodeClass;REGEXPTITLE:Skype.*]"
ProcessWait("SkypeSetup.exe", 20)
WinWait($SkypeTitleClass, "", 20)
ControlClick($SkypeTitleClass, "", "TTntCheckBox.UnicodeClass1")
ControlClick($SkypeTitleClass, "", "TTntButton.UnicodeClass2")
ControlClick($SkypeTitleClass, "", "TTntCheckBox.UnicodeClass2")
Sleep(2000)
ControlClick($SkypeTitleClass, "", "TTntButton.UnicodeClass2")
Правда, есть еще проблема - финишное окно...
RunWait ( @ScriptDir & "\" & "Setup.exe /lang=ru /verysilent /NoWpFinished /NoStart" )
WinWait("Skype™ - Создать пользователя","", 20)
If ProcessExists("Skype.exe") Then
ProcessClose("Skype.exe")
ProcessWaitClose("Skype.exe", 15)
EndIf »
Это устарело.
Всем привет .. такой вопрос в браузере открыта страница сайта, как получить значение "SetHP(50,50);" из HTML кода?
// может кому будет нужно "Авто добавление баз для 1с (тестилось на 7.7)
// Sleep'oв так много потому для АНти лагов
//Код :ancoder
TrayTip("Статус", "Установка баз БП", 5, 1)
WinWaitActive ("Запуск 1С:Предприятия")
ControlClick("Запуск 1С:Предприятия", "", "[ID:4352]")
WinWaitActive ("Регистрация Информационной Базы")
Send ("{BS}")
Sleep (300)
Send ("Имя Базы Может быть любое например БП") ; <<<<<-----------------Имя Базы ------
sleep (100)
ControlClick("Регистрация Информационной Базы", "", "[ID:4361]")
send ( "{TAB}")
Sleep (300)
Send ("{BS}")
Sleep (300)
Send ("Путь К базе например С:\1\БП") ;<<<<<<------------ Адресс Базы -------
sleep (50)
Send ("{Enter}")
sleep (500)
Подскажите пожалуйста, конвертировал скрипт в exe, и по неосмотрительности удалил скрипт, а сейчас понадобилось исправить exe, но обратно в скрипт, exe не конвертируется (я пытался этим- Decompile .exe to Script) появляется ошибка "Error: The executable file is not recognised as a compiled AutoIt script."
Как мне exe обратно в AutoIt скрипт преобразовать?????
ancoder, как получить значение "SetHP(50,50);" из HTML кода?
Примерно так:
#include <Inet.au3>
$sHtml = _INetGetSource("http://somepage.com")
$sRet = StringRegExpReplace($sHtml, "(?i).*(SetHP.*;).*", "\1")
ConsoleWrite($sRet)
MaxxQ, "Error: The executable file is not recognised as a compiled AutoIt script."
Как мне exe обратно в AutoIt скрипт преобразовать?
Afaik, никак :( В новых версиях AutoIt декомпилляцию скриптов убрали.
Вопрос: Как применить 'Uncheck' или 'Check' к выбранной строке в TNewCheckListBox1 (так определяет AiWI) ?
Выбрать строку удалось таким способом:
ControlCommand ('Setup - K-Lite Codec Pack','Select Additional Tasks','TNewCheckListBox1','SelectString','Check for codec news and updates')
Send ('{SPACE}')
ControlClick ('Setup - K-Lite Codec Pack','Select Additional Tasks','&Next >')
Хочется реализовать по примеру ControlCommand (','','Button1','UnCheck') потому как Send ('{SPACE}') не устраивает.
Так не вышло: ControlCommand ('Setup - K-Lite Codec Pack','Select Additional Tasks','TNewCheckListBox1','Uncheck','Check for codec news and updates') (как я понимаю и не должно было это же список а не 1 чекбокс)
Вопрос 2: Как обратится к строкам элемента 'TNewCheckListBox1' напрямую не через выбор строки ?
*OM*,
Как применить 'Uncheck' или 'Check' к выбранной строке в TNewCheckListBox1
Если это чекбокс то не должно быть проблем, но судя по имени класса это список, зачем для списка устанавливать «'Uncheck' или 'Check'»?
Как обратится к строкам элемента 'TNewCheckListBox1' напрямую не через выбор строки ?
Что конкретно требуется сделать? что понимается под словом «обратится»?
Гхм... Creat0R у меня же написано к выбранной строке в TNewCheckListBox1
А обратится это значит(имел ввиду) "использовать одну из строк TNewCheckListBox1 в общем взаимодействовать". К примеру могло быть TNewCheckListBoxString9 (это 9й чекбокс в списке).
Я обратился так ControlCommand ('Setup - K-Lite Codec Pack','Select Additional Tasks','TNewCheckListBox1','SelectString','Check for codec news and updates')
Но это только выбор строки..
Вроде в моем предыдущем посте подробно описано. Странно что приходится уточнять :ninja2:
*OM*, у меня же написано к выбранной строке в TNewCheckListBox1 »
Всё ровно понять трудно, то что очевидно вам, другим может быть непонятно и удивительно ;)
это 9й чекбокс в списке
Чувствую что это не стандартный чекбокс, а чексбокс в ListView Item'е, возможно помогут функции _GUICtrlListView_*?
Примерно так:
$hWnd = ControlGetHandle('Setup - K-Lite Codec Pack', 'Select Additional Tasks', 'TNewCheckListBox')
_GUICtrlListView_SetItemChecked($hWnd, 9, True) ;False to Uncheck
Чтобы сказать более точно нужно знать (видеть) какие элементы используются в окне.
Насчет обращения к 9 чекбоксу это ПРИМЕР такого элемента как TNewCheckListBoxString9 в окне нет. Это пример возможного взаимодействия со списком TNewCheckListBox1 как я представляю обращение к строке листа чекбоксов.
Есть только объект как я понял список чекбоксов TNewCheckListBox1 и по виду он таковым является. В нем масса строк выбор можно осуществить через SelectString. После этого можно Send ('{SPACE}') но нужно именно Uncheck
А функцию попробую.
Кстати это тип объекта TNewCheckListBox1 очень во многих инсталляторах встречается.. Почему сдесь и задал вопрос , думается однозначно с ним сталкивались.
*OM*
очень во многих инсталляторах встречается »AFAIK только в InnoSetup (http://www.forum.oszone.ru/thread-60604-11.html).
контрол нестандартный, поэтому проще задействовать штатные функции (через INI-файл):
линк: http://www.codecguide.com/silentinstall.htm
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.