![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как послать в сообщении соченание клавиш? [D6, Win2k]
Alexandr__ © (2002-05-03 07:02:00)Как послать в сообщении соченание клавиш? Например, CTRL + V
posin (2002-05-07 04:46:00) [1]Приведу пример распознавания сочетания двух или ... кнопок, а из него уж делай выводы :)
if (GetAsyncKeyState(91)>0) and (GetAsyncKeyState(27)>0) then dosomething{Esc+Win keys pressed};
где вместо 2 данных функций могут выступать любые операции определения нажатой клавиши
например :
keyarray:array [0..255] of boolean;
procedure OnKeyDown(NumOfkey:byte);
begin
keyarray[NumOfKey]:=True;
end;
procedure OnKeyUp(NumOfkey:byte);
begin
keyarray[NumOfKey]:=false;
end;
if NumOfKey[91] and NumOfKey[27] then
dosomething{Esc + Win keys pressed}
JaMin (2002-05-06 17:28:00) [2]http://www.sources.ru/delphi/delphi_send_keystrokes.shtml
JaMin (2002-05-06 17:22:00) [3]Посмотри keybd_event c флагом KEYEVENTF_KEYUP. А вообще где-то на этом сайте есть целый модуль.
Alexandr__ (2002-05-06 06:50:00) [4]Edit1.Perform мне не подходить т.к. я посылаю сообщение в чужое приложение.
Song (2002-05-03 16:31:00) [5]Попробуйте Edit1.Perform()
Набережных С. (2002-05-03 15:55:00) [6]Попробуй как-то так:
var
KS:TKeyboardState;
GetKeyboardState(KS);
KS[VK_CONTROL]:=KS[VK_CONTROL] or $80;
SetKeyboardState(KS);
SendMessage(Edit1.Handle,WM_KEYDOWN,86,0);
KS[VK_CONTROL]:=KS[VK_CONTROL] and $7F;
SetKeyboardState(KS);
Alexandr__ (2002-05-03 14:58:00) [7]PostMessage(Edit1.Handle,WM_KEYDOWN,VK_CONTROL,0);
PostMessage(Edit1.Handle,WM_KEYDOWN,86,0);
Song (2002-05-03 14:13:00) [8]Напишите как посылаете
Alexandr__ (2002-05-03 12:49:00) [9]А не получается так! он их понимает как отдельные клавиши!
Song (2002-05-03 10:31:00) [10]Сначала посылаете Crtl, потом V, через WM_KEYDOWN