Страница 7 из 10

Добавлено: Пт авг 31, 2007 13:18
Bishop
GeNtlE,
в Vista x86 сразу после перехвата, показав всплывающее окошко, падает
Сигнатура проблемы:
Имя события проблемы: BEX
Имя приложения: SM2BT.exe
Версия приложения: 0.0.0.0
Штамп времени приложения: 2a425e19
Имя модуля с ошибкой: user32.dll
Версия модуля с ошибкой: 6.0.6000.16438
Штамп времени модуля с ошибкой: 45d3dc0e
Смещение исключения: 00067715
Код исключения: c0000409
Данные исключения: 00000000
Версия ОС: 6.0.6000.2.0.0.256.1
Код языка: 1049

Добавлено: Вт сен 04, 2007 13:36
Sam Dark
Замечена бага:
Запускается куча sm2bt. При этом она говорит, что программа уже запущена, но не закрывается.

Добавлено: Вт сен 04, 2007 19:38
GeNtlE
Bishop
Буду смотреть. Примечательно, что ранние, неопубликованные версии под вистой работали без проблем. Ошибка в плагине Popup.dll.
Sam Dark
Пустые окна исправлю. Кучу экземпляров тоже исправлю. Про конфиги буду думать. Но почему это будет удобнее, понять не могу. Да и как потом конфигурировать гуишным конфигуратором?

Добавлено: Ср сен 05, 2007 13:37
Sam Dark
GeNtlE
Если будет конфигуратор - будет всё равно, как организован конфиг. А так - см. конфиг Total Commander.

Добавлено: Ср сен 05, 2007 17:06
GeNtlE
Sam Dark писал(а):GeNtlE
Если будет конфигуратор - будет всё равно, как организован конфиг. А так - см. конфиг Total Commander.
Ага. Это наталкивает меня на мысли о том, как организована админка в phpBB. Думаю, будет что-то похожее.

Добавлено: Ср сен 05, 2007 20:24
Sam Dark
Модульный конфигуратор хочешь построить как в миранде?

Добавлено: Ср сен 05, 2007 22:06
GeNtlE
Этого изначально и добивался (модульности). Модульность программы, вроде, удалась. Немного до ума довести осталось. О модульном конфигураторе я даже не думал. Теперь как-то всё начинает приобретать законченный вид. :)

Добавлено: Сб ноя 03, 2007 19:31
DrShark
Программка сложновата в освоении.
Собственно, сейчас разбираюсь с ини-файлом и выполнением макросов.
Мне кажется, было бы неплохо добавить возможность запуска внешней проги/ассоциированного файла(скрипта) при обнаружении sm2bt окна с критериями из ini-файла.
То есть для меня идеал:
sm2bt обнаруживает окно и запускает мой скрипт обработки для этого окна.

Добавлено: Вс ноя 04, 2007 18:15
GeNtlE
DrShark
Надо для этого написать плагин, который будет запускать ассоциированную программу (файл, скрипт).
Кстати, а возможностей SendKeys(); не хватает для обработки?

Всё руки не доходят открыть спецификацию плагинов.

Есть желающие заняться их написанием? Если есть - стучитесь в личку, аську. Попробуем что-нибудь решить. SDK в природе не существует пока.

Добавлено: Вс ноя 04, 2007 18:50
DrShark
Можно пример использования SendKeys?
Вот я Шутером получил строку вида:

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

||#somenumber|Title_of_Window|N||3|0D
Куда мне теперь это записать, чтобы послать ему комбинацию Alt+F4?
И что надо поставить, чтобы sm2bt посылал эту команду окну, даже если окно неактивно?
Кстати, а возможностей SendKeys(); не хватает для обработки?
а) мне удобнее будет сделать, например, один скрипт для закрытия окна по Alt+F4, и потом прописывать это в ini sm2bt как-то так:

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

||#somenumber|Title_of_Window|N||3|0D|MyScript.au3
К тому же я могу вызвать этот скрипт из других скриптов/программ.
б) обработка сложных действий. Чем искать шутером или чем-то другим классы контролов и окон, мне легче выполнить действия мышкой и клавиатурой и макро-рекордером записать это в скрипт.

Я не против плагинов. Одно другому не мешает.
Просто sm2bt хорошо подходит для отлавливания окон, а для действий над ними мне легче использовать другие инструменты.

Добавлено: Вс ноя 04, 2007 20:02
GeNtlE
Это будет строка вида:

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

||#somenumber|Title_of_Window|N||Popup+Log|SendKeys(%({F4}));
где класс/заголовок окна попущены (зачем?)
класс дочернего окна "#somenumber"
текст дочернего окна "Title_of_Window"
иконка - нет
вывод будет производиться во всплывающее окно и писаться в лог (которого нет)
этому окну будет производиться отправка клавиатурного сочетания Alt+F4.

Записать эту строку в ShowWindow.ini, если текст дочернего окна отловился Shooter'ом. Иначе, в DrawText.ini
что надо поставить, чтобы sm2bt посылал эту команду окну, даже если окно неактивно?
Этот функционал есть только в версии 0.2.2. Она, кстати, ни чем не хуже версии 0.5 (есть лог, работает выключение), но там нет обработки "рисованных" окон сообщений. Чтобы это заработало в 0.5, нужен плаг. А для его написания нужно время. Или доброволец. :)
мне удобнее будет сделать, например, один скрипт для закрытия окна по Alt+F4
Я думал об этом, но мне это показалось сомнительным удобством. Посмотрим, что можно сделать.
для действий над ними мне легче использовать другие инструменты.
Здесь два пути - написать кучу плагинов (или один?), которые будут выполнять нужные действия или написать плагин-переходник к какому-нибудь монстру, который всё умеет делать.

Добавлено: Вс ноя 04, 2007 20:16
DrShark
где класс/заголовок окна попущены (зачем?)
Не зачем, а я шутеру сразу указал искать дочернее окно.
Потому, что это дочернее окно проги.
Я ещё не совсем понял, как пользоватся sm2bt, обязательно ли прописывать в этом случае класс/заголовок основного окна.
Здесь два пути - написать кучу плагинов (или один?), которые будут выполнять нужные действия или написать плагин-переходник к какому-нибудь монстру, который всё умеет делать.
Как ты себе это представляешь?
Дело в том, что ты уже разделил sm2bt на модули.
Мне кажется, что лучше к секуции Main добавить секцию, в которой указывались бы сторонние проги. Формат такой:

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

[Section]
ShowWindow.ini=1,2,3,4|script.au3,script.au3,script.au3,script2.au3
Здесь для правил 1, 2 и 3 из ShowWindow.ini запускается скрипт script.au3, а для правила №4 - script2.au3.
Под правилами я имею ввиду характеристики окон.
Я пока не знаю, как сделать компактнее.

Почему я так упорно защищаю эту идею?
1) как минимум для меня это проще;
2) я не буду зависить от разработчиков плагинов.

Edit:
Этот функционал есть только в версии 0.2.2.
У меня есть 0.2.2. Можешь привести пример для неё?

Добавлено: Вс ноя 04, 2007 20:53
GeNtlE
DrShark писал(а):Не зачем, а я шутеру сразу указал искать дочернее окно.
Потому, что это дочернее окно проги.
Подозреваю, что вовсе там нет дочернего окна.
И так, по порядку, как написано в ридми:
1. Ищем характеристики окна нулевого уровня (то, которое на рабочем столе лежит, имеет заголовок, кнопки закрытия и все рюшечки). В группе "Окно" нажимаем на кнопку "..." и щёлкаем по заголовку желаемого окна.
2. Ищем характеристики дочернего окна. Аналогично, только щёлкаем уже по его тексту.
И здесь есть нюанс. Если это VCL-окно (прога написана на BCB, Delphi), то надписи на нём выводятся не в дочерних окнах Static (в основном), а при помощи функции DrawText(). Если после щелчка по дочернему окну мы получили строку ";В указанном окне не найдено дочернего окна с подходящими атрибутами.", то это наш клиент. Значит настройки вписывать надо не в ShowWindow.ini, а в DrawText.ini. Соответственно, там нет характеристики "класс дочернего окна", а есть только фрагмент текста в окне, на который необходимо реагировать. См. примеры в дистрибутиве.
3. Далее в получившейся строке оставляем место под макрос замены, ставим, куда её выводить (Popup) и что с окном делать.
Как ты себе это представляешь?
Дело в том, что ты уже разделил sm2bt на модули.
Мне кажется, что лучше в секуцию Main добавить секцию, в которой указывались бы сторонние проги. Формат такой:

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

[Section]
ShowWindow.ini=1,2,3,4|script.au3,script.au3,script.au3,script2.au3
Здесь для правил 1, 2 и 3 из ShowWindow.ini запускается скрипт script.au3, а для правила №4 - script2.au3.
Под правилами я имею ввиду характеристики окон.
Я пока не знаю, как сделать компактнее.
Была раньше нумерация правил. Сильно всем не нравилась и была неудобной. И с компактностью проблема. У меня была идея использовать какие-то операторные скобки, условия. Но я не хочу превращать SM2BT в PowerPro. И так уже всё сложно и непонятно. И с PowerPro разобраться находят в себе силы не многие.
Почему я так упорно защищаю эту идею?
1) как минимум для меня это проще;
2) я не буду зависить от разработчиков плагинов.
Надо долго думать и упорно писать. Мне писать. А у меня сейчас диплом. Я, конечно, могу подумать, но в скором времени ничего не обещаю. Поэтому, сейчас больше надежды на разработчиков плагинов. :)
У меня есть 0.2.2. Можешь привести пример для неё?
Что там приводить? В версии 0.2.2 именно такая строка должна быть записана в SMB-файл, которую сгенерит Shooter. А подробности работы с ним описаны здесь, в ридми и где-то выше в этой теме. Если ничего не получится, скажи, какое окно ты пытаешься отловить (и что за программа).

Добавлено: Вс ноя 04, 2007 21:04
DrShark
Пробовал поправленные строки и в 0.5, и в 0.2.
В 0.5 выдаёт тултип с Error level 6, 0.2 просто молчит. Не ловит окно.
Строки щас в тебе в ЛС отправлю.
Надо долго думать и упорно писать. Мне писать. А у меня сейчас диплом. Я, конечно, могу подумать, но в скором времени ничего не обещаю. Поэтому, сейчас больше надежды на разработчиков плагинов.
Я же наоборот хочу как проще...
Не надо превращать sm2bt в PowerPro. Надо дать возможность использовать то, что уже есть, другим программам. Это как бы альтернатива плагинам.

Добавлено: Вс ноя 04, 2007 21:38
GeNtlE
Надо дать возможность использовать то, что уже есть, другим программам. Это как бы альтернатива плагинам.
Я не против. И даже считаю, что это хорошо. Просто это можно реализовать, используя текущий плагиновый интерфейс.