PDA

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

TERMINAL
08-05-2008, 12:50
amel27, проблема ещё в том что если пишешь образ болванкой то номер меняется на другой

NikLok
08-05-2008, 13:05
amel27, Насколько я понял в автоит нет структур?! Что все данные организовывать массивами?

amel27
08-05-2008, 13:22
TERMINAL
если пишешь образ болванкой то номер меняется на другой »
не знаю что такое "болванкой", но после некоторых замеров и не без помощи Гугля сделал вывод, что серийник для компакт-дисков НЕ ХРАНИТСЯ в образе (как я думал сначала), а РАССЧИТЫВАЕТСЯ из данных самого образа по НЕИЗВЕСТНОМУ алгоритму (точнее - известному только Microsoft), поэтому изменения в образе будут изменять серийный номер тома... В этом всем сбивает с толку то, что для разных типов носителей используется разный алгоритм расчета, к примеру для жестких дисков серийник не меняется с момента создания раздела и генерится на базе времени форматирования.

NikLok
Насколько я понял в автоит нет структур?!»
А как же команды DllStruct* ?!

NikLok
08-05-2008, 17:23
amel27, А как же команды DllStruct* ?! »
Спасибо, а то прозевал!

Creat0R
08-05-2008, 17:25
EgOrus, Проблемму с кодировками также не снимает
Странно, мой пример у меня всегда отрабатывает и пишет в нормальной кодировке.

А UTF заголовок не влияет на то, в какой кодировке записываются данные в этот файл.
Ну почему, без него как раз всё смешано и будет.
У меня кстати оказывается пишет нормально даже если сразу (при записи) использовать 1 + 128.

amel27, вот две UDF преобразования OEM в ANSI и обратно
Отличные UDF, спасибо :)

EgOrus
09-05-2008, 16:35
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)

Котяра
09-05-2008, 22:10
Если у кого-то есть дистрибутив 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)

amel27
10-05-2008, 10:01
EgOrus
видимо не всегда отрабатывается chcp, или есть какой-то ньюанс с этой командой, которого я не знаю »Гм... может проблема и не в этом, но последовательное выполнение CMD-команд осуществляется оператором "&" - с его помощью можно объединять несколько строк батника в одну CMD-строку (Conditional execution (http://www.robvanderwoude.com/condexec.html)). Но мне таким образом не удалось ни в батнике, ни вручную заставить DIR выводить текст на экран (равно как в AutoIT) в Win-кодировке, хотя при выводе в файл все пишется нормально. Тем не менее, такое нестандартное применение оператора "|" вместо "&" позволяет выводить текст в WIN-кодировке прямо на экран... честно говоря для меня это было неожиданностью.

Котяра
читайте шапку - либо пишите в отдельную тему либо задавайте вопрос без привязки к установке конкретного софта - поставьте AutoIT, запустите "AutoIT Window Info" и дайте всю инфу по интересующему Вас окну и контролам.

Creat0R
10-05-2008, 16:07
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")

Котяра
10-05-2008, 16:48
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 »
Это устарело.

ancoder
11-05-2008, 01:28
Всем привет .. такой вопрос в браузере открыта страница сайта, как получить значение "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)

MaxxQ
11-05-2008, 02:12
Подскажите пожалуйста, конвертировал скрипт в exe, и по неосмотрительности удалил скрипт, а сейчас понадобилось исправить exe, но обратно в скрипт, exe не конвертируется (я пытался этим- Decompile .exe to Script) появляется ошибка "Error: The executable file is not recognised as a compiled AutoIt script."
Как мне exe обратно в AutoIt скрипт преобразовать?????

Creat0R
11-05-2008, 06:54
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 декомпилляцию скриптов убрали.

*OM*
12-05-2008, 06:02
Вопрос: Как применить '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' напрямую не через выбор строки ?

Creat0R
12-05-2008, 06:15
*OM*,
Как применить 'Uncheck' или 'Check' к выбранной строке в TNewCheckListBox1
Если это чекбокс то не должно быть проблем, но судя по имени класса это список, зачем для списка устанавливать «'Uncheck' или 'Check'»?

Как обратится к строкам элемента 'TNewCheckListBox1' напрямую не через выбор строки ?
Что конкретно требуется сделать? что понимается под словом «обратится»?

*OM*
12-05-2008, 11:30
Гхм... Creat0R у меня же написано к выбранной строке в TNewCheckListBox1

А обратится это значит(имел ввиду) "использовать одну из строк TNewCheckListBox1 в общем взаимодействовать". К примеру могло быть TNewCheckListBoxString9 (это 9й чекбокс в списке).

Я обратился так ControlCommand ('Setup - K-Lite Codec Pack','Select Additional Tasks','TNewCheckListBox1','SelectString','Check for codec news and updates')

Но это только выбор строки..

Вроде в моем предыдущем посте подробно описано. Странно что приходится уточнять :ninja2:

Creat0R
12-05-2008, 11:41
*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

Чтобы сказать более точно нужно знать (видеть) какие элементы используются в окне.

*OM*
12-05-2008, 11:52
Насчет обращения к 9 чекбоксу это ПРИМЕР такого элемента как TNewCheckListBoxString9 в окне нет. Это пример возможного взаимодействия со списком TNewCheckListBox1 как я представляю обращение к строке листа чекбоксов.

Есть только объект как я понял список чекбоксов TNewCheckListBox1 и по виду он таковым является. В нем масса строк выбор можно осуществить через SelectString. После этого можно Send ('{SPACE}') но нужно именно Uncheck

А функцию попробую.


Кстати это тип объекта TNewCheckListBox1 очень во многих инсталляторах встречается.. Почему сдесь и задал вопрос , думается однозначно с ним сталкивались.

amel27
12-05-2008, 12:30
*OM*
очень во многих инсталляторах встречается »AFAIK только в InnoSetup (http://www.forum.oszone.ru/thread-60604-11.html).

контрол нестандартный, поэтому проще задействовать штатные функции (через INI-файл):
линк: http://www.codecguide.com/silentinstall.htm




© OSzone.net 2001-2012