Форум: "Основная";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
ВнизКак сделать форму всегда Найти похожие ветки
← →
greenrul (2002-02-24 14:55) [0]Есть компонент, который ПРЕКРАСНО "ловит" нажатия нужных клавиш - стоит форму в трей отправить, он уже ниче не ловит 8( P*L*E*A*S*E H*E*L*P
← →
copyr25 (2002-02-24 16:32) [1]А зачем компонент?
Сами зарегистрируйте свои нужные клавиши.
const
XKey = 101; YKey=102;
type
TForm1 = class(TForm)
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
procedure FormActivate(Sender: TObject);
...
procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = XKey then чего-то делаем;
if Msg.HotKey = YKey then чего-то делаем;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
RegisterHotKey(Handle, XKey, 0, VK_RETURN);
RegisterHotKey(Handle, YKey, 0, VK_SPACE);
// ну, например:)
end;
← →
greenrul (2002-02-24 17:05) [2]А почему 101, 102 и что вообще эти целые числа значят?
← →
greenrul (2002-02-24 17:09) [3]Усе, понял - типа идентификатор для каждого Хука (а не для клавиши)
← →
greenrul (2002-02-24 17:12) [4]у меня вопрос - а как строчку типа Ctrl+Alt+C в VK_* и пр. преобразовать?
← →
greenrul (2002-02-24 17:23) [5]А Комбинации всеравно не обрабатывает -
RegisterHotKey(Handle, 101, 0, VK_CONTROL+Ord("A"));
нет реакции, а вот если отдельно -
RegisterHotKey(Handle, 101, 0, Ord("A"));
RegisterHotKey(Handle, 101, 0, VK_CONTROL);
← →
copyr25 (2002-02-24 18:30) [6]Ну, например так: на последовательное нажатие F1+F2+F3.
Можно смеяться сколько угодно, но ведь работает:)))
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
ExtCtrls, StdCtrls;
const
XKey = 101; YKey=102; ZKey = 103;
type
TForm1 = class(TForm)
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; i: byte;
implementation
{$R *.DFM}
procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = XKey then i:=1;
if (Msg.HotKey = YKey) and (i=1) then i:=2;
if (Msg.HotKey = ZKey) and (i=2) then Close;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
i:=0;
RegisterHotKey(Handle, XKey, 0, VK_F1);
RegisterHotKey(Handle, YKey, 0, VK_F2);
RegisterHotKey(Handle, ZKey, 0, VK_F3);
end;
end.
← →
Deus (2002-02-24 19:04) [7]Думаю, Вам тоже нужны хуки:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1014485066&n=0
← →
greenrul (2002-02-25 11:39) [8]Жалко что сторонние компоненты приходится юзать.
соpyr25 - вы правы, смеятьля можно долго 8)
а не проще вместо
if Msg.HotKey = XKey then i:=1;
if (Msg.HotKey = YKey) and (i=1) then i:=2;
if (Msg.HotKey = ZKey) and (i=2) then Close;
написать
if (Msg.HotKey = XKey) and (Msg.HotKey = YKey) and (Msg.HotKey = ZKey) then Close;
← →
greenrul (2002-02-25 12:17) [9]2Deus - на самом деле компонента фиговая - проще через WinAPI.
там надо мучаться с переводом из VirtualKeyCode в норм. стринг, м нельзя проверить, ккакие клавишы еще зажаты
← →
copyr25 (2002-02-25 12:49) [10]greengul: Не проще. Попробуйте Ваш тройной if. Close не получится, когда нажимаются
клавиши...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c