DarkStar |
Отправлено: 03.10.2004, 16:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Искал на форуме такой вопрос
Ответы были что надо послать сообщение.
Плиз, если кому не трудно напишите как это делается, сообщение никогда не посылал. Например как программно послать сообщение системе нажатие левой кнопки мыши. Заранее спасибо. |
|
olegenty |
Отправлено: 04.10.2004, 08:01 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
QUOTE | The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and then returns without waiting for the thread to process the message. Messages in a message queue are retrieved by calls to the GetMessage or PeekMessage function.
BOOL PostMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to post
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
Parameters
hWnd
Identifies the window whose window procedure is to receive the message. Two values have special meanings:
Value Meaning
HWND_BROADCAST The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.
NULL The function behaves like a call to PostThreadMessage with the dwThreadId parameter set to the identifier of the current thread.
Msg
Specifies the message to be posted.
wParam
Specifies additional message-specific information.
lParam
Specifies additional message-specific information.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Applications that need to communicate using HWND_BROADCAST should use the RegisterWindowMessage function to obtain a unique message for inter-application communication.
If you send a message in the range below WM_USER to the asynchronous message functions (PostMessage, SendNotifyMessage, and SendMessageCallback), make sure that the message parameters do not include pointers. Otherwise, the functions will return before the receiving thread has had a chance to process the message and the sender will free the memory before it is used.
See Also
GetMessage, PeekMessage, SendMessageCallback, SendNotifyMessage |
|
|
olegenty |
Отправлено: 04.10.2004, 08:41 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
PostMessage
|
|
DarkStar |
Отправлено: 04.10.2004, 19:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Я понимаю что мы все гении, когда касается разговоров на темы которые знаем.
Теперь на русском языке. Пожалуйста, если не трудно примерчик как послать сообщение системе нажатие левой кнопки мыши.
Извиняюсь за мою навязчивость, но если бы я нашел то не спрашивал бы. |
|
Gedeon |
Отправлено: 05.10.2004, 12:15 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (DarkStar @ 04/10/2004, 20:59) | Пожалуйста, если не трудно примерчик как послать сообщение системе нажатие левой кнопки мыши.
|
CODE |
System->LeftMouseButtonPress(); |
Сообщение Вы можете послать какому-либо окну, а не системе.
CODE |
PostMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
); |
или
CODE |
LRESULT SendMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
|
Чем они отличаются читать в MSDN, а так же в зависимости от задачи читать все, что написано рядом.
hWnd — Handle окна, которому отправляется сообщение.
Msg — определяет какое именно сообщение отправляем в нашем случае может интересовать: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK.
Дальше привожу цитату из MSDN по нижним параметрам
QUOTE |
Parameters
wParam
Indicates whether various virtual keys are down. This parameter can be one or more of the following values.
MK_CONTROL
The CTRL key is down.
MK_LBUTTON
The left mouse button is down.
MK_MBUTTON
The middle mouse button is down.
MK_RBUTTON
The right mouse button is down.
MK_SHIFT
The SHIFT key is down.
MK_XBUTTON1
Windows 2000/XP: The first X button is down.
MK_XBUTTON2
Windows 2000/XP: The second X button is down.
lParam
The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area. |
А если и так не понятно пишите, что конкретно хотите сделать, нажмем.
|
|
DarkStar |
Отправлено: 05.10.2004, 18:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Пасибо. Все что я хотел. Нормальным доступным языком. |
|
DarkStar |
Отправлено: 05.10.2004, 19:47 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Как послать сообщение какому нибудь окну я понял и у меня все получилось. А как определить над каким объектом находиться мышь. и нажать именно на тот обект который под нею.
Я не очень назойлив |
|
olegenty |
Отправлено: 06.10.2004, 07:05 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
PostMessage(HWND_BROADCAST,WM_LBUTTONDOWN, ..., ...);
это будет широковещалка, и поймает её то окно, что будет находиться непосредственно под мышью...
|
|
DarkStar |
Отправлено: 08.10.2004, 00:39 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Ок, а какое значение должно передаваться в качестве lParam? |
|
olegenty |
Отправлено: 08.10.2004, 07:25 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Всё-таки лень тебе самому справку читать.
вот самое ценное оттуда:
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
более подробно -
QUOTE |
The WM_LBUTTONDOWN message is posted when the user presses the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
WM_LBUTTONDOWN
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
Parameters
fwKeys
Value of wParam. Indicates whether various virtual keys are down.
This parameter can be any combination of the following values:
Value Description
MK_CONTROL Set if the CTRL key is down.
MK_LBUTTON Set if the left mouse button is down.
MK_MBUTTON Set if the middle mouse button is down.
MK_RBUTTON Set if the right mouse button is down.
MK_SHIFT Set if the SHIFT key is down.
xPos
Value of the low-order word of lParam. Specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
yPos
Value of the high-order word of lParam. Specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
| [B][/B]
|
|