Re: AHK: Как определить параметры для PostMessage
А при чем тут нечестные владения спора?
Если у вас такой пейнт и у вас есть сообщения WM_COMMAND для каждого параметра, то скажите мне какие параметры wm_command для активации лупы?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
А при чем тут нечестные владения спора?
Если у вас такой пейнт и у вас есть сообщения WM_COMMAND для каждого параметра, то скажите мне какие параметры wm_command для активации лупы?
SendMessage, 0x111, 66141,,,A
А как вы это значение получили?
У меня ни spy++ ни winspector его не показывает.
Вспомнил этот хак.
$F10::
Loop % 0xFFFFFFFF {
SendMessage, 0x111, A_Index,,, ahk_class MSPaintApp
if ErrorLevel {
ToolTip % A_Index
Pause
}
}
$F11::Pause
При появлении ToolTip'а смотрим на реакцию, что выделено, что появилось. Иногда нужно сначала поводить по пайнту мышью, чтобы выделение сменилось. Определили — жмём F11.
Так можно и другие приложения исследовать.
А почему тогда spy++ не отлавливает?
Ну это скорее всего один из предусмотренных механизмов управления, в самом приложении наверно он не используется.
Наверное так оно и есть.
На всякий случай проверил с API Monitor - результат такой же.
Ещё возможно, что такой механизм использовался в ранних версиях, а нынешним достался по наследству.
Paint из XP.
teadrinker, при бруте вашим кодом в MS Word 2007 ErrorLevel ловит одну команду из пяти, остальные оставляют ErrorLevel равным 0. Проще сделать паузу безусловной.
У меня ловит подряд начиная с 601 — Выделить, 602, 603, 604 и т. д., пробовал на семёрке и на десятке. Может имеет смысл Sleep, 10 добавить.
Проще сделать паузу безусловной.
Ну это если есть желание убить пару вечеров, то можно.
Вру, в пейнте ловит как у вас, в Word 2007 половина команд выполняются с ErrorLevel = 0.
Если использовать PostMessage, тогда пауза обязательна, т. к. PostMessage не предусматривает ожидания ответа.
Неправильно выразился. SendMessage может вызывать команду, даже если ее возврат (ErrorLevel) равен 0.
Так в принципе так и должно быть, что если приложение wm_command обрабатывает, то возвращает 0.
А тут видно в этом и заключается хак - приложение это сообщение не обрабатывает, но действие выполняет.
Непонятно только почему.
svoboden, как вы обнаружили значения wm_command?
Так же, как и teadrinker.
Попробовал ловить с помощью Вашего скрипта, в результате - при выделении любого пункта верхнего меню Paint A_Index определяется как 601 (F10), при нажатии F11 - 602
Подставляю значение в SendMessage:
SendMessage,0x111,601,,,ahk_class MSPaintApp
Никакого результата, может я не так что-то делаю. Помогите пожалуйста.
Так проверьте это сами кодом из 29 поста.
Чтобы отправить ответ, вы должны войти или зарегистрироваться