Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Инициация события [D5, WinXP]


Страницы:   1 2

Igor1984 ©   (2002-12-01 18:03:00) 

Обработка события это как раз понятно. Но передо мной встала дуругая задача - инициация события. Как дать понять виндам что нажалась левая клавиша мышки или клаиша на клавиатуре без собственно физического действия? Очень прошу, помогите.

Заранее спасибо.


Игорь1984   (2002-12-03 19:50:00) [1]

Неа ord(65) это всё та же еденица! так что это не круто :)


Игорь Шевченко   (2002-12-03 13:06:00) [2]

Igor1984 © (03.12.02 12:12)

Я вот тоже изврат нашел - ord(65) - это круто!


Igor1984   (2002-12-03 12:12:00) [3]

Угу, точно.Фенкс. А я ещё один изврат нашёл
keybd_event(MapVirtualKey(ord(65),2),0,0,0); Тоже а :)


Игорь Шевченко   (2002-12-03 11:17:00) [4]

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-02 22:37:00) [5]


> Виноват, keybd_event($61,0,0,0) жмет "a", $65 - "e" :-)


Неа $61 это "1" а $65 это "5". А что же с "a" всё-таки???


Игорь Шевченко   (2002-12-02 15:28:00) [6]

Виноват, keybd_event($61,0,0,0) жмет "a", $65 - "e" :-)


Игорь Шевченко   (2002-12-02 15:27:00) [7]

keybd_event ($65,0,0,0) жмет "a" :-)


igor_1984   (2002-12-02 14:56:00) [8]

Ну да. ord("a") жмёт еденицу. ord("b")-двойку и.т.д. А чтобы именно символ?

kebd_event(ord("a"),0,0,0); жмёт еденицу,проверил-точно.


Song   (2002-12-02 14:47:00) [9]

Ord("A")


Igor1984   (2002-12-02 14:33:00) [10]

Ich bin du hast! В смысле спасибо. Но опять вопрос:
keybd_event(vk_add,0,0,0);работает-жмёт "+"
А вот keybd_event(vk_A,0,0,0);нет. В смысле что букву А жало. Пишет undeclared identifier. Чё делать? Ведь в таблице этих virtual кодов пишется что код букву а это vk_a.


Игорь Шевченко   (2002-12-02 14:14:00) [11]

keybd_event


Igor1984   (2002-12-02 13:50:00) [12]

Угу, а нет чего вроде keyboard_event()? А то mouse event это как раз то что мне нужно.


Song   (2002-12-02 13:43:00) [13]

2igor_1984 (02.12.02 13:39)
Такой хэлп нахоится в меню хэлп - WinSDK


igor_1984   (2002-12-02 13:39:00) [14]

У меня и близко не такой help. Но спасибо, всё встало на свои места. Действительно, спасибо.


Song   (2002-12-02 13:31:00) [15]

Ты бы, если в хэлп бы глянул сразу бы всё понял:

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()


Igor1984   (2002-12-02 13:14:00) [16]

Ты имеешь в виду
PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,mouse.cursorpos.x,mouse.cursorpos.y);

Всё равно too many actual parameters.
Будь другом, дай пожалуйста
1)полный кусок процедуры которая бы клацала мышкой вне окна совей программы.
2) -"-"- клацала клавишей клавиатуры вне окна своей программы.


Song   (2002-12-02 13:07:00) [17]

Надо LParam и WParam составлять из координат.


Igor1984   (2002-12-02 13:01:00) [18]

Ладно, подключил uses messages. Теперь на PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,XPos,YPos) пишет too many actual parametrs. Удаляю ypos - компилится, но ни фига не происходит. В качестве handle указал form1.handle но ни фига нужного мне не происходит.


Song   (2002-12-02 11:37:00) [19]

>>Все стандартные модули подключены (D5).
Messages.dcu не подключён.


Igor1984   (2002-12-02 11:34:00) [20]


> PostMessage(Handle,WM_MOUSEMOVE,MK_LBUTTON,XPos,YPos)


Чё то не пашет :( Но всё равно спасибо.

Пишет Undeclared identifier WM_MOUSEMOVE. Все стандартные модули подключены (D5). Можно работающий код для мышки и клавы. Ау, отзовитесь!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо