Показать полную графическую версию : [решено] Web Money
desperate
27-06-2006, 19:09
Всем привет...решил на днях сделать тихую установку Web Money Keeper Classic 3.0.0.0 но ничего у меня не получилось. Пытался написать AutoIT скрипт, но тоже облом, т.к. почему - то в окнах с лицензионнными соглашениями напрочь блокируеться клавиатура, и в сязи с этим не получаеться перейти и поставить галочку о согласии... а с перемещением мыши я пока не научился работать, чтобы подвести ее и нажать в нужном месте...
буду очень рад выслушать ваши предложения и соображения по этому поводу
[hr]
13-Jul-06
Решение:
AutoIt скрипт (http://sanjaalone.h15.ru/files/autoit-wm.zip) (тестировался на версии WebMoney Keeper Classic 3.0.0.2 Standard)
Такого рода приложения заморочены сильно очень...
Пытался написать AutoIT скрипт, но тоже облом, т.к. почему - то в окнах с лицензионнными соглашениями напрочь блокируеться клавиатура, и в сязи с этим не получаеться перейти и поставить галочку о согласии
используй не SendKey(), а ControlClick()
desperate
28-06-2006, 15:45
XXXler
так я и использую ControlClick()...
дело в том, что даже при обычной установке клавиша TAB не работает для переходом и приходиться тыкать мышкой... поэтому кто умеет ей обращаться с помощью AutoIT, поделитесь пожалуйста опытом(а конкретно интересует перемещение в нужную точку)
desperate, скачай SciTE, в состав входит AU3Record, который как Multiset записывает действия пользователя в скрипт AutoIt
кстати MultiSet сам предлагаешь, и не пользуешься? ;)
desperate
28-06-2006, 17:24
XXXler
скачал я SCiTE и ненашел там AU3Record
desperate
28-06-2006, 20:11
XXXler
ноль реакции...
Sanja Alone
29-06-2006, 01:54
desperate
конкретно интересует перемещение в нужную точкуПросто переместить указатель в точку (х,у) с заданной скоростью (0 - мгновенно; по ум. 10)MouseMove ( x, y [, speed] )
Переместить указатель и кликнуть в точке (х,у)MouseClick ( "button" [, x, y [, clicks [, speed ]]] )Для примера: нажать 1 раз левый батон в точке (100,200) мгновенно переместив указатель в заданную позицию: MouseClick ( "left", 100, 200, 1, 0 )
Собс-но, как кликнуть мышкой я писал в FAQ (http://oszone.net/display.php?id=3663) еще в феврале :read:
(обрати внимание на привязку координат Opt("MouseCoordMode",режим_привязки) ).
desperate
29-06-2006, 02:23
Sanja Alone
спасибо тебе большое, но как пользовать в общем виде я знаю, т.к. скачал русский хелп... ты бы не мог объяснить конкретно откуда идет начало координат(у меня в этом вся трабла - не могу навести мышь в нужное место(мне надо навести в левый нижний угол примерно на 10 пикселей от нижней границы окна))
Sanja Alone
30-06-2006, 01:46
desperate
ты бы не мог объяснить конкретно откуда идет начало координатЕще раз посмотри FAQ (http://oszone.net/display.php?id=3663). Я ведь не русский мануал переписывал, а пытался рассмотреть неоднозначные моменты. Ответ на твой вопрос - это пункт 6 раздела "Вввод данных / работа с элементами управления".
desperate
30-06-2006, 16:46
мне все - таки удалось побороть проблему отказа клавы, за что спасибо Sanja Alone. Только все равно столкнулся с одной проблемой.
В самом последнем окне, надо убрать галку на запуск программы и нажать кнопку готово. этого у меня не вышло. Привожу пример скрипта
#cs
----------------------
объявление переменных
----------------------
$Title - заголовок окна установщика
$Title2 - заголовок системного окна
$file - имя инсталляционного файла
----------------------
#ce
Global $Title='Установка WebMoney Keeper Classic 3.0.0.0', $Title2='Предупреждение системы безопасности', $file='wm2.exe'
Run ( @ScriptDir & '\' & $file )
WinWaitActive ( $Title, 'Добро пожаловать!' )
Send ( '{ENTER}' )
ControlCommand($Title,"1. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand("2. Установка WebMoney Keeper Classic 3.0.0.0","2. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"3. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"4. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"5. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"6. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
;Установка по в директорию по умолчанию
Send ( '{ENTER}' )
;Установка в программную группу по-умолчанию
Send ( '{ENTER}' )
WinWaitActive ( $Title, 'Внимание!' )
Send ( '{ENTER}' )
WinWaitActive ( $Title2, 'WebMoney Transfer Root Authority' )
Send ( '{TAB}' )
Send ( '{ENTER}' )
WinWaitActive ( $Title2, 'WebMoney Transfer Root Authority' )
Send ( '{TAB}' )
Send ( '{ENTER}' )
WinWaitActive ( $Title2, 'Готовится установка сертификата от центра сертификации (ЦС) в этом домене:' )
Send ( '{ENTER}' )
;Отменяем запуск программы, по окнчании установки
ControlCommand($Title,"Установка завершена","Запустить WebMoney Keeper Classic 3.0.0.0","UnCheck",'')
;Давим на кнопку ГОТОВО
WinWaitActive ( $Title, 'Установка завершена' )
Send ( '{ENTER}' )
Sanja Alone
01-07-2006, 03:38
desperate
надо убрать галку на запуск программы и нажать кнопку готовоСкорее всего, в данной ситуации поможет ф-ция Send('{SPACE}'). Просто нужно при необходимости предварительно подвести указатель (по ум. он уже может быть на данном эл-те) к этому проблемному чекбоксу. Тут поможет все та же ф-ция Send: Send('{UP}'), Send('{DOWN}'), Send('{TAB}'), Send('^{TAB}') и т.п. - посмотри что именно нужно "послать" окну для перехода к требуемому эл-ту управления.
Т.е., решение проблемы выглядит примерно так:
;1. подвести указатель к галке постустановочного запуска приложения
Send('{что-то}')
;2. снять галку на запуск приложения
Send('{SPACE}')
;3. нажать "Готово"
Send('{ENTER}')P.S. Ес-но, все эти сенды будут отправлены активному окну, след-но, для гарантии активности нужного окна еще не помешало бы предварительно убедиться в этом:
WinActivate('Окно','Текст')
WinWaitActive('Окно','Текст')
desperate
01-07-2006, 08:32
Sanja Alone
изменил я концовку по твоему совету, но все равно ничего не выхоит:
WinActive ( $Title, 'Установка завершена' )
WinWaitActive ( $Title, 'Установка завершена' )
Send ('{TAB}')
Send ('{SPACE}')
Send ( '{ENTER}' )
Sanja Alone
01-07-2006, 11:13
desperate
;Отменяем запуск программы, по окнчании установки
ControlCommand($Title,"Установка завершена","Запустить WebMoney Keeper Classic 3.0.0.0","UnCheck",'')
;Давим на кнопку ГОТОВО
WinWaitActive ( $Title, 'Установка завершена' )
Send ( '{ENTER}' )Не посмотрел я на твой скрипт, а напрасно...
Там две ошибки:
Ф-ция WinWaitActive должна быть перед ControlCommand
Ошибочный третий аргумент ф-ции ControlCommand - это ControlID (идентификатор эл-та управления). Что может выступать в кач-ве такого идентификатора - см. пункт 7 раздела "Вввод данных / работа с элементами управления" уже упоминавшегося мной FAQ (http://oszone.net/display.php?id=3663). При этом, обратиться к эл-ту по текстовому значению можно только если в этом тексте присутствует знак "амперсанд" (&), иначе - фигушки (твой случай). Извиняюсь за дезу, по тексту, ес-но, обратиться можно, но лучше это делать только при наличии амперсанда, т.к. это гарантирует уникальность данной строки (ибо след. за амперсандом символ - это горячая клавиша данного эл-та управления, "послать" к-рую окну можно с пом. ф-ции Send('!символ_после_амперсанда') ). В противном же случае, возможны траблы, т.к. подобный текст может быть еще и в каком-то другом эл-те данного окна.
P.S. Да и сейчас ты ошибся - в первой строке должно быть не WinActive( $Title, 'Установка завершена' ), а WinActivate( $Title, 'Установка завершена' ).
desperate
01-07-2006, 12:40
Sanja Alone
исправил все твои замечания и пожелания и получил два способоа
ПЕРВЫЙ:
WinActivate( $Title, '' )
WinWaitActive ( $Title, '' )
ControlCommand($Title,'','Button3','UnCheck','')
;Давим на кнопку ГОТОВО
Send ( '{ENTER}' )
ВТОРОЙ:
WinActivate( $Title, 'Установка завершена' )
WinWaitActive ( $Title, 'Установка завершена' )
Send ('{TAB}')
Send ('{TAB}')
Send ('{SPACE}')
Send ( '{ENTER}' )
и как обычно у меня получилась дуля... и вся проблема в этом чертовом последнем окне =(
Sanja Alone
02-07-2006, 02:14
desperate
ControlCommand($Title,'','Button3','UnCheck','')Кнопку (Button) нельзя UnCheck-нуть, ее можно только ControlClick-нуть, хотя, думаю что в данном сл. и это не прокатит...
Send ('{TAB}')Ты определись с к-вом табов, а то у тебя он то один, то два...
и вся проблема в этом чертовом последнем окнеНу, ежели гора не идет к некоему г-ну мусульманского вероисповедания :) , то можно поступить жестче... Вот тебе еще два варианта:
Закрыть процесс webmoney:
ProcessWait('webmoney.exe')
ProcessClose('webmoney.exe')
ProcessWaitClose('webmoney.exe')
Убить процесс webmoney:
ProcessWait('webmoney.exe')
RunWait(@Comspec & ' /C taskkill.exe /F /IM webmoney.exe','',@SW_HIDE)
;если происходит запуск еще каких-то дочерних процессов, то нужно добавить ключик:
;RunWait(@Comspec & ' /C taskkill.exe /F /IM webmoney.exe /T','',@SW_HIDE)
desperate
02-07-2006, 23:22
спасибо тебе огромное за то, что ты мне птыаешься помочь, но к сожелению и эти способы не прокатили.... процесс не убиваеться...
Sanja Alone
03-07-2006, 02:00
desperate
процесс не убиваетсяЧестно говоря, я не могу придумать причину по к-рой несистемный процесс может не убиваться с пом. taskkill. Ты посмотри в "Диспетчере задач" после установки, какой процесс там реально запускается; webmoney.exe я написал от фонаря :) (я не знаю точного имени процесса, т.к. не пользуюсь WebMoney).
desperate
03-07-2006, 10:38
Sanja Alone
я понял, что ты его написал от фонаря, и заменил на процесс WM2.EXE, именно он запускаеться.... но результата не увидел
Sanja Alone
с количеством нажатий кнопки TAB тоже определился уже давно, нажимать ее дважды...первое нажатие выделяет кнопку ГОТОВО, второе переходит на CheсkBox
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC