Вниз
Скачать: CL | DM;

как отловить комбинацию   Найти похожие ветки 

← →
Novichek ©   (2002-10-22 12:52) [0]

Помогите пожалуйста отловить комбинацию [Contrl]+[Shift]и при ее нажатии вывести сообщение? пробовал так, но не помогает:

procedure hotykey(var msg:TMessage); message WM_HOTKEY;
...
var
Form1: TForm1;
id:Integer;
...
procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=mod_shift) and (msg.LParamHi=MOD_CONTROL) then
begin
showmessage("uuuuuuuuuu");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom("hotkey");
RegisterHotKey(handle,id,mod_shift,MOD_CONTROL);
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
UnRegisterHotKey(handle,id);
end;


← →
Крот ©   (2002-10-23 08:51) [1]

Используете событие OnKeyDown таким образом:


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Shift = [ssShift, ssCtrl] then
ShowMessage("Ура, получилось!");
end;

Удачи!


← →
Novichek ©   (2002-10-23 18:16) [2]

а как эту комбинацию засунуть в горячие клавиши?


← →
Novichek ©   (2002-10-26 00:15) [3]

а как эту комбинацию засунуть в горячие клавиши?


← →
serd_hhc ©   (2002-10-26 03:29) [4]

while true do
begin
if (GetAsyncKeyState(VK_SHIFT)<>0) and
(GetAsyncKeyState(VK_[Кажется CONTROL])<>0) then
ShowMessage("Urrraaaa....");
Sleep(150);
end;


Думаю разберёшься...


← →
Novichek ©   (2002-10-28 14:18) [5]

да, но это работает только если на это условие програмно перейти, а как эту комбинацию засунуть в горячие клавиши?


← →
Novichek ©   (2002-11-08 20:04) [6]

>>Крот © (23.10.02 08:51)
так не получилось

>> serd_hhc © (26.10.02 03:29)
это работает только если специально на это условие выйти.

может у кого еще есть какие идеи как это сделать?


← →
Song ©   (2002-11-08 21:11) [7]

Ну дак и забабахай это условие в обработчик WM_HOTKEY


← →
Novichek ©   (2002-11-11 02:25) [8]

в смысле? а как? обьясни мне, тупому, пожалуйста!!!!!


← →
Song ©   (2002-11-11 09:09) [9]

procedure TForm1.hotykey(var msg:TMessage);
begin
inherited;
if (GetAsyncKeyState(VK_SHIFT)<>0) and
(GetAsyncKeyState(VK_[Кажется CONTROL])<>0) then
ShowMessage("Urrraaaa....");
end;


← →
Novichek ©   (2002-11-11 18:45) [10]

Song © (11.11.02 09:09)
не получается что-то... :(((


← →
Novichek ©   (2002-11-11 18:55) [11]

Song © (11.11.02 09:09)
а ты сам хоть пробовал это?
на это условие программа выходит только после того как были нажаты какие либо другие зарегестрированные клавиши.


← →
Novichek ©   (2002-11-11 20:25) [12]

Song ©
в предложенном варианте: Song © (11.11.02 09:09), есть один большой недостаток, а именно если нажать сначала или контрл или шифт, потом его отпустить, после этого нажать любые клавиши, а потом нажать шифт или контрл(в зависимости от того что было нажато первым) , то срабатывает условие и выпадает сообщение об этом, хотя контрл и шифт были нажаты не одновременно и между ними были нажаты еще и другие клавиши.


← →
Song ©   (2002-11-11 20:57) [13]

Не пробовал. Это нужно Вам, а не мне.
Попробуйте использовать GetKeyState()


← →
Novichek ©   (2002-11-11 21:11) [14]

глюка уже нет, но все же, как мне это все запихнуть в горячие клавиши?


← →
Eugen Honeker   (2002-11-11 21:19) [15]

попробуй вот такой вариант

RegisterHotKey(handle, id, MOD_CONTROL or MOD_SHIFT, 0)


← →
Novichek ©   (2002-11-12 18:33) [16]

не получается.
а вот если вместо 0 поставить код клавиши, то получается комбинация contrl+shift+клавиша


← →
Novichek ©   (2002-11-12 19:06) [17]

спасибо всем, уже нашел.

RegisterHotKey(handle,id,(mod_CONTROL or mod_shift),vk_control);
RegisterHotKey(handle,id2,(mod_CONTROL or mod_shift),vk_shift);



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.012 c
3-85861
KA_
2002-12-05 11:15
2002.12.26
Ошибка Interbase-сервера


14-86165
IronHawk
2002-11-24 23:47
2002.12.26
ТРЕТЬЯ ВСТРЕЧА МАСТАКОВ В КИЕВЕ НАМЕЧАЕТСЯ ....


3-85870
Silenser
2002-12-04 07:40
2002.12.26
Виснет SQL


4-86210
Monya
2002-11-12 10:24
2002.12.26
Системные переменные


1-85937
AVR
2002-12-16 22:30
2002.12.26
XPath, IDOMNode, IDOMElement




   Наверх