Тема: Перехват событий формы или отмена заявки

Добрый день! Вопрос следующий: нужно перед тем как отправить заявку контролировать прохождение определенных условий (пусть для примера будет: цена <= 400).
Я думаю что необходимо перехватить событие нажатия кнопки "Да" на форме заявки и далее, при не соблюдении условия не давать создать эту заявку и вывести сообщение. Подскажите как это можно реализовать?

2

Re: Перехват событий формы или отмена заявки

Штатных средств для этого для стандартной формы заявки нет.
Только если свою форму нарисовать.

Включим фантазию.
Можно сделать скрипт, который будет постоянно искать появление формы заявки, и "при не соблюдении условия" дизаблить кнопку Ok.
Но останется еще клавиша Enter же.

3

Re: Перехват событий формы или отмена заявки

swerg пишет:

Штатных средств для этого для стандартной формы заявки нет.
Только если свою форму нарисовать.

Включим фантазию.
Можно сделать скрипт, который будет постоянно искать появление формы заявки, и ... дизаблить кнопку Ok.
Но останется еще клавиша Enter же.

А можете, пожалуйста, дать пример как подобное реализовать?

4

Re: Перехват событий формы или отмена заявки

Как определять по какой бумаге форма подачи заявки открыта - вот вопрос.
Условия-то наверняка разные в зависимости от выбранного инструмента.

5

Re: Перехват событий формы или отмена заявки

swerg пишет:

Как определять по какой бумаге форма подачи заявки открыта - вот вопрос.

Да, условия сейчас не важны. Меня именно и интересует:
1) как отловить открытие формы
2) как получить информацию с формы

6

Re: Перехват событий формы или отмена заявки

1) [url=https://quik2dde.ru/viewtopic.php?id=78]w32[/url].[url=https://quik2dde.ru/viewtopic.php?id=80]FindWindow[/url]
2) [url=https://quik2dde.ru/viewtopic.php?id=78]w32[/url].SendMessage

7

Re: Перехват событий формы или отмена заявки

swerg пишет:

1) w32.FindWindow
2) w32.SendMessage

Спасибо! Буду пытаться сделать задуманное

8

Re: Перехват событий формы или отмена заявки

swerg пишет:

1) FindWindow

А не подскажете еще один момент? Как найти окно содержащее в своем заголовке "Ввод заявки"? В WinAPI есть функция "EnumWindows", которая позволяет получить все окна верхнего уровня (по задумке я хотел перебрать все окна и найти с нужным содержанием), но, как я понял, ее нету в реализации w32

9 (2021-03-19 14:47:00 отредактировано swerg)

Re: Перехват событий формы или отмена заявки

Я в FindWindow специально дал ссылку на тему с автологином.
[url]https://quik2dde.ru/viewtopic.php?id=80&p=4[/url]
Там эти разные окошки ищутся как угодно, примеров там можно можно посмотреть. И про FindWindow, и про FindWindowEx

10 (2021-03-19 17:29:26 отредактировано adm.minefun)

Re: Перехват событий формы или отмена заявки

swerg пишет:

Там эти разные окошки ищутся как угодно, примеров там можно можно посмотреть.

Да, получилось. Окно находит, но что передать в метод SendMessage что-бы дизактивировать кнопу? Я не вижу метода EnableWindow(), который обычно используется для этого

11

Re: Перехват событий формы или отмена заявки

adm.minefun пишет:
swerg пишет:

Там эти разные окошки ищутся как угодно, примеров там можно можно посмотреть.

Да, получилось. Окно находит, но что передать в метод SendMessage что-бы дизактивировать кнопу? Я не вижу метода EnableWindow(), который обычно используется для этого

Да вы просто принципиально не с того конца подходите к проблеме.
Суть в том, что вручную пользователь должен иметь возможность сделать что угодно, даже если это идет не по стратегии.
Ну представьте, купили акции, цена полетела вниз, ниже условных 400 за штуку, и можно бы закрыть вручную минимизировав потери, но скрипт будет этому мешать.

А если уж такое недоверие к пользователю, то проще не давать вводить заявки в принципе.
Как вариант просто принудительно закрывайте окно ввод заявки, через PostMessage посылайте IDCANCEL на окно ввода заявки.