Кому под силу найти решение ситуацию?

Обсуждение программ nnCron и nnCron LITE

Кому под силу найти решение ситуацию?

Postby nncroner » Mon, 03 Feb 2014, 23:57

В хелпе описана работа с SendMessageA

---------------------------------------------------------------------------
\ включаем воспроизведение в WinAmp
0 40045 273 WIN-HWND SendMessageA DROP
\ переходим к следующей песне
0 40048 273 WIN-HWND SendMessageA DROP
\ выясняем текущий статус WinAmp'а (play, stop, pause)
104 0 1024 WIN-HWND SendMessageA IF ... ELSE ... THEN
\ управляем статусом Miranda (online)
0 171144 273 WIN-HWND SendMessageA DROP
\ управляем статусом Miranda (do not disturb)
0 171146 273 WIN-HWND SendMessageA DROP
-------------------------------------------------------------------------------

Кто нибудь может подробно рассказать, где и как получали числа: 171144 и 273
Перемучал весь InqSoft Window Scanner, но так и не смог найти опцию.
Спасибо.
nncroner
 
Posts: 3
Joined: Mon, 03 Feb 2014, 23:42

Re: Кому под силу найти решение ситуацию?

Postby VoidVolker » Tue, 04 Feb 2014, 13:19

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx
Code: Select all
LRESULT WINAPI SendMessage(
  _In_  HWND hWnd,
  _In_  UINT Msg,
  _In_  WPARAM wParam,
  _In_  LPARAM lParam
);

171144 - wParam, 273 - Msg
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Кому под силу найти решение ситуацию?

Postby nncroner » Tue, 04 Feb 2014, 19:18

Видимо неправильно спросил.
Допустим, имеется QIP . Вот как мне для него конкретно узнать число этого самого WParam и UINT Msg ?
Где они в InqSoft Window Scanner показываются?
nncroner
 
Posts: 3
Joined: Mon, 03 Feb 2014, 23:42

WINAPI SendMessageA (hWnd, Msg, wParam, lParam)

Postby AlikasS » Wed, 05 Feb 2014, 03:47

nncroner wrote:В хелпе описана работа с SendMessageA

Кто нибудь может подробно рассказать, где и как получали числа: 171144 и 273
Перемучал весь InqSoft Window Scanner, но так и не смог найти опцию.
Спасибо.

LRESULT WINAPI SendMessage(
_In_ HWND hWnd,
_In_ UINT Msg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);

273 - это значение Msg = WM_COMMAND, т.е можно для понимания записать
Code: Select all
0 171144 WM_COMMAND WIN-HWND SendMessageA DROP

171144 - это значение wParam, в этом случае, это идентификатор пункта или органа управления в окне,
как искать :
Spoiler: show
Скачай Microsoft Spy++.
как узнать свои цифры:

- запускаем Miranda и Microsoft Spy++ (далее MS++)
- в MS++ нажимаем меню Spy->Messages (или Ctrl+M)
- на вкладке Windows хватаем мышой Finder Tool (прицел который), ловим им
ГЛАВНОЕ окно программы Miranda
- на вкладке Messages нажимаем кнопку Clear All, ищем в списке Messages to View: и выделяем
пункт WM_COMMAND
- нажимаем ОК
- началось слежение, в Миранде меняем статус... (я включал on-line)
- в MS++ появляется строка типа
00A0222 P WM COMMAND wNotifyCode:0 (send from a menu) wID:16434
- в MS++ останавливаем логирование (кнопка светофора)

пойманный параметр 16434 (в моем случае).

для проверки:
меняем статус Миранды на какой-то другой!!!
открываем консоль крона
в ней набираем
Code: Select all
S" Miranda" WIN-EXIST? DROP 0 16434 273 WIN-HWND SendMessageA DROP


где 16434 (в моем случае) пойманный параметр.
нажимаем ENTER....
вуаля, миранда меняет статус.

запоминаем пойманный параметр и какой статус для программы он выставляет
и потом пользуем в своих задачах
что-то типа
Code: Select all
Action:
S" Miranda" WIN-EXIST?
IF
0 16434 273 WIN-HWND SendMessageA DROP
THEN


P.S. по факту wParam lParam зависит от выбранного Msg - сообщения посылаемого окну,
а Msg может принимать кучу значений,
например
Spoiler: show
1. Msg = 274 (0x112) - сообщение WM_SYSCOMMAND,
в это случае
wParam может иметь например значение 0xF170 (SC_MONITORPOWER )
а lParam значение: 2 выключение или -1 включение
и действующий код получиться
Code: Select all
S" Program Manager" WIN-EXIST?
IF
2 0xF170 274 WIN-HWND SendMessageA DROP \ вырубаем монитор :)
2000 PAUSE
-1 0xF170 274 WIN-HWND SendMessageA DROP \ врубаем монитор :)
THEN

2. Msg = 12 (0x0C) - сообщение WM_SETTEXT
и код
Code: Select all
    WIN-EXIST: "Shell_TrayWnd"
    IF
         FOR-CHILD-WINDOWS: "Button"
 
Z" :)" 0 0x0C WIN-CHILD-HWND  SendMessageA DROP
        ;FOR-CHILD-WINDOWS
    THEN
поменяет надпись на кнопке пуск
3. Msg = 132 (0x84) - сообщение WM_NCHITTEST
пример из хелпа ...как узнать над каким элементом активного окна сейчас находится указатель мыши?
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Кому под силу найти решение ситуацию?

Postby nncroner » Wed, 05 Feb 2014, 18:36

Полезная инфоромация, помогло, спасибо.
nncroner
 
Posts: 3
Joined: Mon, 03 Feb 2014, 23:42


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 5 guests