[решено] Web Money

Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

desperate


Цитата:



ты бы не мог объяснить конкретно откуда идет начало координат



Еще раз посмотри
FAQ
. Я ведь не русский мануал переписывал, а пытался рассмотреть неоднозначные моменты. Ответ на твой вопрос - это пункт 6 раздела "Вввод данных / работа с элементами управления".
Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

мне все - таки удалось побороть проблему отказа клавы, за что спасибо 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}' )
Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

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

Re: [решено] Web Money

Сообщение desperate »

Sanja Alone

изменил я концовку по твоему совету, но все равно ничего не выхоит:



Код:

Код: Выделить всё

WinActive ( $Title, 'Установка завершена' )
WinWaitActive ( $Title, 'Установка завершена' )
Send ('{TAB}')
Send ('{SPACE}')
Send ( '{ENTER}' )
Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

desperate


Цитата:



;Отменяем запуск программы, по окнчании установки

ControlCommand($Title,"Установка завершена","Запустить WebMoney Keeper Classic 3.0.0.0","UnCheck",'')

;Давим на кнопку ГОТОВО

WinWaitActive ( $Title, 'Установка завершена' )

Send ( '{ENTER}' )



Не посмотрел я на твой скрипт, а напрасно...

Там две ошибки:Ф-ция WinWaitActive должна быть перед ControlCommandОшибочный третий аргумент ф-ции ControlCommand - это ControlID (идентификатор эл-та управления). Что может выступать в кач-ве такого идентификатора - см. пункт 7 раздела "Вввод данных / работа с элементами управления" уже упоминавшегося мной
FAQ
. При этом, обратиться к эл-ту по текстовому значению можно только если в этом тексте присутствует знак "амперсанд" (&), иначе - фигушки (твой случай). Извиняюсь за дезу, по тексту, ес-но, обратиться можно, но лучше это делать только при наличии амперсанда, т.к. это гарантирует уникальность данной строки (ибо след. за амперсандом символ - это горячая клавиша данного эл-та управления, "послать" к-рую окну можно с пом. ф-ции Send('!символ_после_амперсанда') ). В противном же случае, возможны траблы, т.к. подобный текст может быть еще и в каком-то другом эл-те данного окна.P.S. Да и сейчас ты ошибся - в первой строке должно быть не WinActive( $Title, 'Установка завершена' ), а WinActivate( $Title, 'Установка завершена' ).
Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

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

Re: [решено] Web Money

Сообщение Sanja Alone »

desperate


Цитата:



ControlCommand($Title,'','Button3','UnCheck','')



Кнопку (Button) нельзя UnCheck-нуть, ее можно только ControlClick-нуть, хотя, думаю что в данном сл. и это не прокатит...




Цитата:



Send ('{TAB}')



Ты определись с к-вом табов, а то у тебя он то один, то два...




Цитата:



и вся проблема в этом чертовом последнем окне



Ну, ежели гора не идет к некоему г-ну мусульманского вероисповедания , то можно поступить жестче... Вот тебе еще два варианта:Закрыть процесс webmoney:



Код:

Код: Выделить всё

ProcessWait('webmoney.exe')
ProcessClose('webmoney.exe')
ProcessWaitClose('webmoney.exe')

Убить процесс webmoney[/i]:



Код:

Код: Выделить всё

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

Re: [решено] Web Money

Сообщение desperate »

спасибо тебе огромное за то, что ты мне птыаешься помочь, но к сожелению и эти способы не прокатили.... процесс не убиваеться...
Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

desperate


Цитата:



процесс не убивается



Честно говоря, я не могу придумать причину по к-рой несистемный процесс может не убиваться с пом. taskkill. Ты посмотри в "Диспетчере задач" после установки, какой процесс там реально запускается; webmoney.exe я написал от фонаря (я не знаю точного имени процесса, т.к. не пользуюсь WebMoney).
Аватара пользователя
desperate

Re: [решено] Web Money

Сообщение desperate »

Sanja Alone

я понял, что ты его написал от фонаря, и заменил на процесс WM2.EXE, именно он запускаеться.... но результата не увидел



Sanja Alone

с количеством нажатий кнопки TAB тоже определился уже давно, нажимать ее дважды...первое нажатие выделяет кнопку ГОТОВО, второе переходит на CheсkBox
Ответить

Вернуться в «Автоматическая установка приложений»