26

Re: AHK: Как определить параметры для PostMessage

А при чем тут нечестные владения спора?
Если у вас такой пейнт и у вас есть сообщения WM_COMMAND для каждого параметра, то скажите мне какие параметры wm_command для активации лупы?

27

Re: AHK: Как определить параметры для PostMessage

SendMessage, 0x111, 66141,,,A

28

Re: AHK: Как определить параметры для PostMessage

А как вы это значение получили?
У меня ни spy++ ни winspector его не показывает.

29 (изменено: teadrinker, 2017-10-17 08:36:45)

Re: AHK: Как определить параметры для PostMessage

Вспомнил этот хак.

$F10::
Loop % 0xFFFFFFFF {
   SendMessage, 0x111, A_Index,,, ahk_class MSPaintApp
   if ErrorLevel {
      ToolTip % A_Index
      Pause
   }
}

$F11::Pause

При появлении ToolTip'а смотрим на реакцию, что выделено, что появилось. Иногда нужно сначала поводить по пайнту мышью, чтобы выделение сменилось. Определили — жмём F11.
Так можно и другие приложения исследовать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

30

Re: AHK: Как определить параметры для PostMessage

А почему тогда spy++ не отлавливает?

31

Re: AHK: Как определить параметры для PostMessage

Ну это скорее всего один из предусмотренных механизмов управления, в самом приложении наверно он не используется.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

32

Re: AHK: Как определить параметры для PostMessage

Наверное так оно и есть.
На всякий случай проверил с API Monitor - результат такой же.

33

Re: AHK: Как определить параметры для PostMessage

Ещё возможно, что такой механизм использовался в ранних версиях, а нынешним достался по наследству.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

34 (изменено: stealzy, 2017-10-18 01:58:09)

Re: AHK: Как определить параметры для PostMessage

Paint из XP.
teadrinker, при бруте вашим кодом в MS Word 2007 ErrorLevel ловит одну команду из пяти, остальные оставляют ErrorLevel равным 0. Проще сделать паузу безусловной.

35

Re: AHK: Как определить параметры для PostMessage

У меня ловит подряд начиная с 601 — Выделить, 602, 603, 604 и т. д., пробовал на семёрке и на десятке. Может имеет смысл Sleep, 10 добавить.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

36

Re: AHK: Как определить параметры для PostMessage

stealzy пишет:

Проще сделать паузу безусловной.

Ну это если есть желание убить пару вечеров, то можно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

37 (изменено: stealzy, 2017-10-18 01:57:23)

Re: AHK: Как определить параметры для PostMessage

Вру, в пейнте ловит как у вас, в Word 2007 половина команд выполняются с ErrorLevel = 0.

38 (изменено: teadrinker, 2017-10-18 01:46:27)

Re: AHK: Как определить параметры для PostMessage

Если использовать PostMessage, тогда пауза обязательна, т. к. PostMessage не предусматривает ожидания ответа.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

39

Re: AHK: Как определить параметры для PostMessage

Неправильно выразился. SendMessage может вызывать команду, даже если ее возврат (ErrorLevel) равен 0.

40

Re: AHK: Как определить параметры для PostMessage

Так в принципе так и должно быть, что если приложение wm_command обрабатывает, то возвращает 0.
А тут видно в этом и заключается хак - приложение это сообщение не обрабатывает, но действие выполняет.
Непонятно только почему.
svoboden, как вы обнаружили значения wm_command?

41

Re: AHK: Как определить параметры для PostMessage

Так же, как и teadrinker.

42 (изменено: AndAsh, 2017-10-19 06:36:32)

Re: AHK: Как определить параметры для PostMessage

Попробовал ловить с помощью Вашего скрипта, в результате - при выделении любого пункта верхнего меню Paint  A_Index определяется как 601 (F10), при нажатии F11 - 602
Подставляю значение в SendMessage:

SendMessage,0x111,601,,,ahk_class MSPaintApp

Никакого результата, может я не так что-то делаю. Помогите пожалуйста.

43

Re: AHK: Как определить параметры для PostMessage

Так проверьте это сами кодом из 29 поста.