Форум: "Система";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
ВнизИнициация события Найти похожие ветки
← →
Igor1984 (2002-12-01 18:03) [0]Обработка события это как раз понятно. Но передо мной встала дуругая задача - инициация события. Как дать понять виндам что нажалась левая клавиша мышки или клаиша на клавиатуре без собственно физического действия? Очень прошу, помогите.
Заранее спасибо.
← →
LongIsland (2002-12-01 18:17) [1]А PostMessage?
← →
Igor1984 (2002-12-01 20:03) [2]А поподробнее :)?
Вот что я прочитал в справке:
BOOL PostMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to post
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
Это же всего лишь проверка посланно ли сообщение,верно? Ведь результат функции boolean.
Люди, HELP. Просто кусок кода для нажатия клавиши на клаве и на мышке.
← →
Сергей Бушин (2002-12-01 20:29) [3]Функция PsotMessage возрващает результат и указывает удалось ли поместить сообщение в очередь.
Есть SendMessage аналогичная предыдущей по смыслу, но ожидает окончания обработки сообщения, и возвращает результат обработки.
PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,XPos,YPos)
← →
LongIsland (2002-12-01 20:31) [4]
> Igor1984 (01.12.02 20:03)
> Это же всего лишь проверка посланно ли сообщение,верно?
> Ведь результат функции boolean.
Сам-то понял, что написал?
Тип BOOL - это Виндосовский тип. Возвращаемой значение - имеет ненулевое значение, если сообщение послано. В чем проблема-то?
← →
Diamond Cat (2002-12-01 23:58) [5]МДА богат кладезь знаний, postmessage ставит сообщение в очередь на обработку того приложения к которому оно было отправлено (hwnd), sendmessage ставит сообщение непосредственно на обработку, result у этих функций разный в случае с postmessage это булево значение, при sendmessage это Lresult или попросту некая цифра которая для разных сообщений может означать разный результат.
-> Тип BOOL - это Виндосовский тип , интересно с каких это пор
← →
Igor1984 (2002-12-02 11:34) [6]
> PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,XPos,YPos)
Чё то не пашет :( Но всё равно спасибо.
Пишет Undeclared identifier WM_MOUSEMOVE. Все стандартные модули подключены (D5). Можно работающий код для мышки и клавы. Ау, отзовитесь!
← →
Song (2002-12-02 11:37) [7]>>Все стандартные модули подключены (D5).
Messages.dcu не подключён.
← →
Igor1984 (2002-12-02 13:01) [8]Ладно, подключил uses messages. Теперь на PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,XPos,YPos) пишет too many actual parametrs. Удаляю ypos - компилится, но ни фига не происходит. В качестве handle указал form1.handle но ни фига нужного мне не происходит.
← →
Song (2002-12-02 13:07) [9]Надо LParam и WParam составлять из координат.
← →
Igor1984 (2002-12-02 13:14) [10]Ты имеешь в виду
PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,mouse.cursorpos.x,mouse.cursorpos.y);
Всё равно too many actual parameters.
Будь другом, дай пожалуйста
1)полный кусок процедуры которая бы клацала мышкой вне окна совей программы.
2) -"-"- клацала клавишей клавиатуры вне окна своей программы.
← →
Song (2002-12-02 13:31) [11]Ты бы, если в хэлп бы глянул сразу бы всё понял:
The WM_MOUSEMOVE message is posted to a window when the cursor moves. If the mouse is not captured, the message is posted to the window that contains the cursor. Otherwise, the message is posted to the window that has captured the mouse.
WM_MOUSEMOVE
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.
Remarks
The MAKEPOINTS macro can be used to convert the lParam parameter to a POINTS structure.
Если лень гемороится можешь использовать mouse_event()
← →
igor_1984 (2002-12-02 13:39) [12]У меня и близко не такой help. Но спасибо, всё встало на свои места. Действительно, спасибо.
← →
Song (2002-12-02 13:43) [13]2igor_1984 (02.12.02 13:39)
Такой хэлп нахоится в меню хэлп - WinSDK
← →
Igor1984 (2002-12-02 13:50) [14]Угу, а нет чего вроде keyboard_event()? А то mouse event это как раз то что мне нужно.
← →
Игорь Шевченко (2002-12-02 14:14) [15]keybd_event
← →
Igor1984 (2002-12-02 14:33) [16]Ich bin du hast! В смысле спасибо. Но опять вопрос:
keybd_event(vk_add,0,0,0);
работает-жмёт "+"
А вотkeybd_event(vk_A,0,0,0);
нет. В смысле что букву А жало. Пишет undeclared identifier. Чё делать? Ведь в таблице этих virtual кодов пишется что код букву а это vk_a.
← →
Song (2002-12-02 14:47) [17]Ord("A")
← →
igor_1984 (2002-12-02 14:56) [18]Ну да. ord("a") жмёт еденицу. ord("b")-двойку и.т.д. А чтобы именно символ?
kebd_event(ord("a"),0,0,0); жмёт еденицу,проверил-точно.
← →
Игорь Шевченко (2002-12-02 15:27) [19]keybd_event ($65,0,0,0) жмет "a" :-)
← →
Игорь Шевченко (2002-12-02 15:28) [20]Виноват, keybd_event($61,0,0,0) жмет "a", $65 - "e" :-)
← →
Igor1984 (2002-12-02 22:37) [21]
> Виноват, keybd_event($61,0,0,0) жмет "a", $65 - "e" :-)
Неа $61 это "1" а $65 это "5". А что же с "a" всё-таки???
← →
Игорь Шевченко (2002-12-03 11:17) [22]Igor1984 © (02.12.02 22:37)
Угу. Воистину "5"
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.SetFocus();
keybd_event($41,0,0,0);
keybd_event($41,0,KEYEVENTF_KEYUP,0);
end;
а вот так вот "a" выводится. See Virtual Key codes in win32.hlp
← →
Igor1984 (2002-12-03 12:12) [23]Угу, точно.Фенкс. А я ещё один изврат нашёл
keybd_event(MapVirtualKey(ord(65),2),0,0,0); Тоже а :)
← →
Игорь Шевченко (2002-12-03 13:06) [24]Igor1984 © (03.12.02 12:12)
Я вот тоже изврат нашел - ord(65) - это круто!
← →
Игорь1984 (2002-12-03 19:50) [25]Неа ord(65) это всё та же еденица! так что это не круто :)
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.008 c