1

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

Здравствуйте,
подскажите пожалуйста как получить параметры PostMessage для управления приложением через его меню, например

PostMessage, 0x111, 57603,

откуда взят параметр 57603?

2

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

http://forum.script-coding.com/viewtopi … 09#p116909

3

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

Еще бы сам spy++ выложили, а то по ссылочке открывается aliexpress.

4

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

А какую вы ссылку нажимаете?
По моей открываются ссылки  на программу:
http://mdb-blog.blogspot.com/2010/11/mi … nload.html

5

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

Запустил Paint, запустил spy++, выделил окно Paint, открыл окно Message.
Как мне определить тип сообщения (по идее должен быть WM_COMMAND, но в логе такого не нахожу) и код (мне необходимо активировать меню Вставить).
Paint имеет ленточное меню - Windows 7.

6

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

С пейнтом не получится - у него нестандартное меню.

7 (изменено: svoboden, 2017-10-16 21:10:51)

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

Что значит "активировать меню вставить", там сообщения "WM_COMMAND" проходят.

8

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

Там - это где?
В пейнте при нажатии мышкой на кнопку Paste в меню?

9 (изменено: svoboden, 2017-10-16 22:09:29)

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

Ну и что тут такого страшного?:

SetControlDelay -1
ControlClick, NetUIHWND1, Безымянный,,,, NA x32 y118

10

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

А разве автор вопроса спрашивал про ControlClick?

11 (изменено: svoboden, 2017-12-16 05:27:21)

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

Как не просил?
Тс: "Как мне определить тип сообщения".
Вы: "С пейнтом не получится - у него нестандартное меню".
Ответ:

SendMessage, 0x201, 1, ((118<<16)^32), NetUIHWND1, Безымянный
SendMessage, 0x202 , 0, ((118<<16)^32), NetUIHWND1, Безымянный

12

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

С пейнтом не получится - у него нестандартное меню.

Был ответ на то, почему не видно WM_COMMAND.
На что вы написали, что WM_COMMAND сообщения проходят.

13 (изменено: svoboden, 2017-10-16 23:05:28)

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

Ну и... сообщения WM_COMMAND проходят.

14

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

Тогда приведите пример WM_COMMAND сообщения при нажатии Paste в меню.

15 (изменено: svoboden, 2017-10-16 23:16:21)

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

Malcev пишет:

Тогда приведите пример WM_COMMAND сообщения при нажатии Paste в меню.

А не нужно WM_COMMAND на нажатие Paste, тс просил определить тип сообщения по нажатию на Paste.

16

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

Хорошо, но зачем же вы тогда утверждаете, что WM_COMMAND сообщения проходят?

17

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

А что, разве это не так?

18

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

По кругу пошли.

Malcev пишет:

Тогда приведите пример WM_COMMAND сообщения при нажатии Paste в меню.

19

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

Просто мне не понятно, зачем вызывать это меню, если их подпункты можно вызывать с помощью WM_COMMAND.

20

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

А мне непонятно, почему вы утверждаете, что WM_COMMAND сообщения проходят, но код показать не хотите.
Зато предлагаете послать ControlClick, WM_LBUTTONDOWN, WM_LBUTTONUP.
Вангую, следующее ваше предложение будет послать Paste через WM_COMMAND от шортката Ctrl+v.

21

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

Да причем здесь мои ответы. Просто как не посмотри, но ваш ответ: "С пейнтом не получится - у него нестандартное меню". Не просто не верный, а ошибочный. Вот на это я хотел обратить внимание.

22

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

svoboden пишет:

Да причем здесь мои ответы

Ну как это при чем?
Если вы что-то утверждаете, а кто-то с этим не согласен, то могут возникнуть вопросы, на которые лучше всего ответить кодом.
Если бы вы со мной не согласились и привели бы код из 11 поста у меня к вам бы вопросов не было, так как мой ответ был исключительно по поводу команды WM_COMMAND.
Но вы начали утверждать, что у вас WM_COMMAND проходят.
Или все-таки не проходят?

23 (изменено: svoboden, 2017-10-24 06:45:44)

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

Я имел в виду, что для чего "активировать меню", если там есть сообщения WM_COMMAND для каждого параметра.

24

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

Я вас не понимаю.
Про какие параметры речь?
У вас такой Paint?
http://pic.downloadastro.com/gallery/microsoft_paint/install-microsoft-paint-02.png

25 (изменено: svoboden, 2017-10-30 07:49:23)

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

По-моему, вам сюда. http://s2.rimg.info/5602a4cac8909fc6c1ce0e23fa5bdb6d.gif

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
Telegram jollycoder

30

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

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

31

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

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

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

32

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

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

33

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

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

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

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
Telegram jollycoder

36

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

stealzy пишет:

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

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

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

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
Telegram jollycoder

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 поста.