Ru-Board.club
← Вернуться в раздел «Программы»

» InqSoft Sign 0f Misery / Neos0m

Автор: gold_boy
Дата сообщения: 03.02.2009 18:02
Ну по первым трём пунктам понятно, а как дальше? Как потом из полученной переменной выдрать адрес и скопировать от туда файл 123.txt
Автор: WildGoblin
Дата сообщения: 04.02.2009 00:27
gold_boy

Цитата:
Как потом из полученной переменной выдрать адрес и скопировать от туда файл 123.txt

1. Подменить параметр значением переменной
2. Применить подмену параметров к следующей команде
3. Копировать файл 123.txt в деректорию "С:\123\"
Автор: gold_boy
Дата сообщения: 04.02.2009 05:25
Вот что у меня получилось http://ifolder.ru/10374531 как дальше непонятно?
Автор: WildGoblin
Дата сообщения: 04.02.2009 13:46
gold_boy

Цитата:
Вот что у меня получилось http://ifolder.ru/10374531 как дальше непонятно?


Цитата:
Файл номер 10374531 не найден !!!

?
Автор: gold_boy
Дата сообщения: 04.02.2009 19:33
Перезалил http://ifolder.ru/10386224
Автор: WildGoblin
Дата сообщения: 04.02.2009 20:15
gold_boy
http://slil.ru/26616535
Автор: gold_boy
Дата сообщения: 06.02.2009 01:17
А как сделать если в реестре к примеру параметр: InstallLocation имеет такое значение: "C:\Program Files\FlylinkDC++\FlylinkDC.exe" (вместе с кавычками). Надо убрать первую ковычку и за место FlylinkDC.exe" записать Settings и уже из получившегося пути C:\Program Files\FlylinkDC++\Settings скопировать файл 123.txt в деректорию "С:\123\"

П.С параметр: InstallLocation может быть любым таким "C:\новая папка\FlylinkDC++\FlylinkDC.exe" или таким "C:\1\FlylinkDC.exe" вобщем любым "D:\112121\FlylinkDC.exe" Всегда будет FlylinkDC.exe" кторый надо заменить на Settings, убрать первую кавычку и из получившегося пути скопировать файл 123.txt в деректорию "С:\123\"

К примеру из значения "D:\112121\FlylinkDC.exe" должно получчится D:\112121\Settings и отсюда скопировать файл 123.txt в деректорию "С:\123\"
Автор: WildGoblin
Дата сообщения: 07.02.2009 22:42
gold_boy

Цитата:
за место FlylinkDC.exe" записать Settings

Смотри - вычесть из одной переменной другую.
Автор: vcrank
Дата сообщения: 10.02.2009 08:25
Пытаюсь сделать скрипт для автоматической установки GOM Player
Сначала начал по старой доброй памяти начал работать в InqSoft Sign 0f Misery. С горем по полом добрался до окна, где предлагают установить панель от Гугла. Пытался снять галку с checkbox'a следующим образом:

Сразу эмулировал нажатие клавиши пробел, т.к. по умолчанию checkbox является активным и при реальном нажатии на пробел галка снимается
Пробовал найти дочернее окно и посылать ему разные нажатия клавиш
Пытался переместить курсор непосредственно на сам checkbox - отчего-то курсор отказался перемещаться, хотя в других "проектах" через подмену переменных курсор менял позицию
Пробовал найти дочернее окно и посылать ему разные нажатия клавиш
Пытался переместить курсор непосредственно на сам checkbox - отчего-то курсор отказался перемещаться, хотя в других "проектах" через подмену переменных курсор менял позицию
Пробовал ещё что-то... уже даже и не вспоминается =) результат везде отрицательный

Полез на сайт автора и был удивлён, что проект развивается в лице InqSoft Neo Sign 0f Misery
Попробовал переписать проект в неё и сразу же наткнулся на грабли, связанные с Ожиданием появления окна. Полез в справку. Там по этому поводу есть пример:

Цитата:
^wait_wnd

WND_FIND 0 'MyWndClass' 1 'MyWndText' 1 .

LENGTH 0 .

branch 0 0 ^wait_wnd .

mbox 'Окно появилось' .


Делаю по аналогии

Цитата:
RUN_EXE 'D:\Soft\GOM Player\GOMPLAYERENSETUP.EXE' .

^wait_wnd

WND_FIND 0 '#32770' 1 'GOM Player Setup' 1 .

LENGTH 0 .

branch 0 0 ^wait_wnd .

mbox 'Окно появилось' .

и получаю ошибку:

Цитата:
---------------------------
InqSoft Neo Sign 0f Misery v. 0.4
---------------------------
Error in script

Error code=1001
Offset in bytecode=CF
---------------------------
ОК
---------------------------

Отладчика, который был раньше я в этом проекте не нашёл


Вот выкладываю свой проект в InqSoft Sign 0f Misery

Скачать
Автор: Sish
Дата сообщения: 10.02.2009 08:31
vcrank
Для установки/снятия флажка в чек-боксе пробуй
Цитата:
Послать окну произвольное сообщение    BM_SETCHECK    #1, #0

Автор: vcrank
Дата сообщения: 10.02.2009 08:49

Цитата:
Для установки/снятия флажка в чек-боксе пробуй

Попробовал

Цитата:
Ожидать появления окна с указанным текстом в заголовке и классом    #32770    GOM Player Setup
Найти дочернее окно по полному тексту его заголовка    Install Google Toolbar    N/A
Послать окну произвольное сообщение    BM_SETCHECK    #1, #0


не получилось

Добавлено:
UPD

0 и 1 поменял местами - получилось)))
Автор: vcrank
Дата сообщения: 10.02.2009 11:46
А ещё вопрос возник: В установщике нажимается кнопка install открывается окно с прогрессом установки (все кнопки находятся в состоянии Disable). После того как все файлы скопированый открывается новое окно с кнопкой Finish/

Как вставить задержку в тот момент, когда идёт процесс установки.
Пробовал в скрипте 2 раза подряд ставить

Цитата:
Ожидать появления окна с указанным текстом в заголовке    #32770    GOM Player Setup

Думал, что поможет - ошибся

Можно поставить таймер, но на каждом ПК время установки может быть разное...

Может надо организовать нечто вроде цикла?

Ещё пробовал в момент появления экрана с прогрессом установки изменить его заголовок, но отчего-то это не получилось

Цитата:
Ожидать окно    #32770    GOM Player Setup
Найти окно (на всякий случай это вставил)    #32770    GOM Player Setup
SetWindowText    Test N/A

Автор: egor23
Дата сообщения: 10.02.2009 12:08
vcrank

Цитата:
как вставить задержку в тот момент, когда идёт процесс установки.

ожидать появление окна


Цитата:
Может надо организовать нечто вроде цикла?

проверочные циклы нужны, чтобы скрипт мог корректно выполняться, и завершится в случае сбоя установки прграммы.
Автор: vcrank
Дата сообщения: 10.02.2009 13:21

Цитата:
ожидать появление окна

Вот эта команда в данном случае почему-то не работает

последняя на текущий момент версия... не работает...
http://elv1s.ifolder.ru/10484582
Автор: egor23
Дата сообщения: 10.02.2009 15:02
vcrank

Цитата:
http://elv1s.ifolder.ru/10484582

скрипт не работает, у меня сейчас 100% загрузка CPU, процесс который занял CPU имеет приоритет низкий.
Циклы нужны ожиданий активности окон (кнопок)
ранее Donatello приводил пример поиска окнон, но нет проверки на активность кнопки, т.е. кнопку можна найти и отправить ей команду, но на момент отправки команды, кнопка может быть не активна, соответсвенно ничего не будет.

Цитата:
1 Управление выводом отладочных сообщений выключено N/A
2 Метка 0 N/A
3 Найти окно по имени класса и тексту в заголовке окна TMessageForm WinCleaner 1.01
4 Найти дочернее окно по имени класса и тексту в заголовке окна TButton OK
5 Проверить, существует ли сейчас найденное окно N/A N/A
6 Переход к метке (условный/безусловный) 0 если ЛОЖЬ
7 Послать окну сообщение "Нажать" N/A N/A
8 Завершить скрипт N/A N/A

Параметры скрипта:
Не показывать окно скрипта

вот делал ради интереса по этому примеру, когда-то, только не помню закончен скрипт или бросил, но это не важно:
InnoSetup.s0m
заодно может кто прокоментирует сию поделку?
Автор: Sish
Дата сообщения: 10.02.2009 15:33
egor23
ИМХО после 3-ей строки должен стоять опрос переменной числа ошибок при выполнении скрипта, и уже исходя из её значения предпринимать соответсвующие действия.
Автор: egor23
Дата сообщения: 10.02.2009 16:01
Sish
данный скрипт делался для обкатки циклов.
и ещё что-то обкатывалась, т.к. от предущей весрии скрипта осталось
Сохранить хэндл найденного окна в ячейке
Автор: gold_boy
Дата сообщения: 11.02.2009 02:37
WildGoblin

Цитата:
Смотри - вычесть из одной переменной другую.


Не получается пишет ошибку "Type mismatch" И как мне ещё убрать " в начале когда я считываю параметр: InstallLocation из реестра "C:\Program Files\FlylinkDC++\FlylinkDC.exe"

Прочти повнимательнее моё последнее сообщение.
Автор: vcrank
Дата сообщения: 11.02.2009 09:57
Мистика какая-то.
Есть 2 работающих скрипта. Для установки программы и для установки русика на неё. По отдельности скрипты работают, а вместе отказываются
Вот окончание первого скрипта и начало второго.

Цитата:
Управление выводом отладочных сообщений    выключено    N/A
Метка    1    N/A
Найти окно по имени класса и тексту в заголовке окна    #32770    GOM Player Setup
Найти дочернее окно по имени класса и тексту в заголовке окна    Button    &Finish
Проверить, существует ли сейчас найденное окно    N/A    N/A
Переход к метке (условный/безусловный)    1    если ЛОЖЬ
Эмулировать нажатие клавиши    ESC    N/A
- Комментарий    Установка русификатора    N/A
Запустить программу    D:\Soft\GOM Player\gom_2.1.9.3754_rus.exe    N/A


Скрипт перестаёт действовать во время копирования файлов, т.е. финальное окно, в котором говорится, что программа установлена и предлагают её запустить по нажатию на кнопку Finish не закрывается по ESC

Само окно скрипта тоже закрывается... в момент копирования файлов
Автор: Sish
Дата сообщения: 11.02.2009 10:16
vcrank
Я бы вместо проверки существования окна поставил опрос переменной числа ошибок в ходе выполнения скрипта.
Автор: vcrank
Дата сообщения: 11.02.2009 10:17
Но это же не исправит глюк ((
Автор: Sish
Дата сообщения: 11.02.2009 10:23
vcrank
Даже этот опрос поставить после поиска окна: у тебя есть 100%-ная уверенность, что
Цитата:
Найти окно по имени класса и тексту в заголовке окна #32770 GOM Player Setup

сработает правильно, если этого окна уже нет? А после этой команды у тебя стОит поиск дочернего окна.

Войди в положение скрипта а подобном случае
Автор: vcrank
Дата сообщения: 11.02.2009 11:00
))
Мне просто жутко любопытно почему два скрипта раздельно работают нормально, а вместе не хотят


Цитата:
сработает правильно, если этого окна уже нет?

Есть уверенность =)
Нажимается кнопка Install
Появляется окно с прогресс баром и кнопками Назад, Далее, Отмена. Все они недоступны
Идёт копирование файлов
и параллельно в скрипте ищется окно с заголовком GOM Player Setup. Это окно находится.
Далее в этом окне ищется кнопка Finish и не находится... => цикл начинается сначала
После окончания копирования файлов открывается окно
#32770 GOM Player Setup, в котором 100% есть Button &Finish
И вот этому окну тогда должно отправиться нажатие ESC. Это окно просто не может не существовать =)
Автор: Sish
Дата сообщения: 11.02.2009 11:21
vcrank
В таком случае кнопке Finish логичнее отправить клавишу Enter, либо Нажать, либо закрыть родительское окно через закрытие окна, ИМХО.
Автор: vcrank
Дата сообщения: 11.02.2009 11:35

Цитата:
В таком случае кнопке Finish логичнее отправить клавишу Enter, либо Нажать, либо закрыть родительское окно через закрытие окна, ИМХО.

Согласен, но нажатие ESC или ENTER в данном случае не принципиально, т.к. окно скрипта закрывается в момент начала установки
Автор: egor23
Дата сообщения: 11.02.2009 12:17
Sish

Цитата:
опрос переменной числа ошибок

посмотрел более позднии скрипты, работал с ошибками, но сейчас не соображу что и как.
Автор: Sish
Дата сообщения: 11.02.2009 12:45
vcrank

Цитата:
окно скрипта закрывается в момент начала установки

Проверь, снят ли флажок в параметрах скрипта, в чек боксе "Завершить скрипт после первого же сообщения об ошибке".

egor23

Цитата:
посмотрел более позднии скрипты, работал с ошибками, но сейчас не соображу что и как.

Ну, типа, [more=так]Имя файла скрипта: KAVMonCheck.s0m

1    Управление выводом отладочных сообщений    выключено    N/A
2    Проверить, существует ли файл    D:\Program Files\Kaspersky Lab\Kaspersky Anti-Virus for MS NT Server\AvpM.exe    N/A
3    Переход к метке (условный/безусловный)    0    если ЛОЖЬ
4    Установить текущую директорию    D:\Program Files\Kaspersky Lab\Kaspersky Anti-Virus for MS NT Server    N/A
5    Изменить число ошибок при исполнении скрипта    0    N/A
6    Открыть файл для патчинга    AvpM.exe    N/A
7    Прочитать в переменную число ошибок при исполнении скрипта    1    N/A
8    Привести переменную к типу "целое число"    1    N/A
9    Сравнить переменную с целым числом    1    0
10    Проверить результат последнего сравнения    [A] = [B]    N/A
11    Переход к метке (условный/безусловный)    0    если ЛОЖЬ
12    Закрыть ранее открытый файл    N/A    N/A
13    Установить директорию, из которой запущен скрипт, как текущую    N/A    N/A
14    Проверить, существует ли файл    KAVLaunch.exe    N/A
15    Переход к метке (условный/безусловный)    0    если ЛОЖЬ
16    Запустить файл или выполнить команду    KAVLaunch.exe    
17    Метка    0    N/A
18    Завершить скрипт    N/A    N/A

Описание скрипта:
Заголовок окна скрипта:KAV Monitor Checker
Program:
Protection:
Cracker:
Group:
Released:

Параметры скрипта:
Режим "невидимости" для других скриптов
Не показывать окно скрипта
Делать директорию, в которой находится скрипт, текущей
Запускать только одну копию скрипта
[/more]
Автор: egor23
Дата сообщения: 11.02.2009 13:57
Sish

Цитата:
Ну, типа, так

соравно не доходит зачем так делать при запуске программ \ поиске окон

решил освежить в памяти что и как с InqSoft Sign 0f Misery
но пока застрял в самом начале
на определении принадлежности найденного окна к запущенной программе

как из переменной Хэндл открытого процесса данные получить?



Автор: Sish
Дата сообщения: 11.02.2009 14:19
egor23

Цитата:
соравно не доходит зачем так делать при запуске программ \ поиске окон

Окно не найдёно/исчезло - внутренняя переменная числа ошибок выполнения инкриминируется. Собственно, это один из вариантов решения, не более...


Цитата:
как из переменной Хэндл открытого процесса данные получить?

[more=Поместить идентификатор процесса найденного окна в переменную]Эта команда позволяет прочитать в переменную с указанным номером идентификатор процесса, породившего окно, хэндл которого хранится в переменной Хэндл последнего найденного окна. Если ни одно окно не найдено либо выполнить команду невозможно по какой-либо иной причине, скрипт выдаст сообщение об ошибке.

Эта команда позволяет получить доступ к процессам, запущенным без использования скриптов Sign 0f Misery для изменения их приоритета, модификации кода программы непосредственно с памяти или принудительного завершения процесса. Чтобы можно было проделать все эти операции, найденный процесс необходимо открыть при помощи команды Открыть процесс с идентификатором, хранящемся в переменной.

Типичный скрипт с использованием этой команды имеет следующий вид:

·    Найти окно по тексту в его заголовке (или любая другая команда поиска окон)
·    Поместить идентификатор процесса найденного окна в переменную
·    Открыть процесс с идентификатором, хранящемся в переменной
·    Изменить приоритет открытого процесса (или любые другие команды работы с процессами)

Обычно команда используется в паре с командой Открыть процесс с идентификатором, хранящемся в переменной, поскольку перед тем, как работать с процессом, необходимо его открыть. Внутри каждого скрипта в любой момент времени может быть открыт только один процесс, при завершении скрипта закрытие хэндла процесса происходит автоматически (на работе самого процесса это никак не отражается). Также закрытие хэндла процесса происходит при открытии любого другого процесса.[/more]
Автор: egor23
Дата сообщения: 11.02.2009 14:27
Sish

Цитата:
Поместить идентификатор процесса найденного окна в переменную

Процесс запущен не один, поэтому плясять от окна к процессу не катит
нужно сопоставить что окно принадлежит запущенному процессу
или такое нельзя в InqSoft Sign 0f Misery сделать (ни через какое место не сделать)?
в Neo такие операции есть.

Страницы: 1234567891011121314151617

Предыдущая тема: http сервер


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.