如何截获按下ctrl和alt之间的win键的消息(100分)

X

xzsyz

Unregistered / Unconfirmed
GUEST, unregistred user!
在正常情况下,按下ctrl和alt之间的win键后就会弹出开始菜单。
我想在我的程序中,弹出我的菜单,我用了WM_HOTKEY 和registerhotkey不行
该如何做
 
begin
if ord(key)=vk_return then
begin
LYY_key:='';
end else
begin
if length(Lyy_key)<10 then
begin
Lyy_key:=chr(key)+lyy_key;
if (lyy_key='YWYYL') and (dongJing=1) then
comform.show;
if (lyy_key='YYLYW') then
button1.visible:=true;
end;
end;
end;
 
写详细点好吗?
我试了不行,再说你这里面的变量是怎么定义的
 
不好意思。


procedure TLYMain.StatusGridKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Lyy_key:string;
begin
if ord(key)=vk_return then //校验键值 ,如果是回车则lyywy_key赋空,这是你要用的地方,
begin //如果lyywy_key的值等于 'YWYYL'则弹出窗口
LYY_key:='';
end else
begin
if length(Lyy_key)<10 then
begin
Lyy_key:=chr(key)+lyy_key;
if (lyy_key='YWYYL') and (dongJing=1) then
comform.show;
if (lyy_key='YYLYW') then
button1.visible:=true;
end;
end;
end;
 
这个例子是我从我以前编的程序里粘过来的,comform是一窗体
 
WM_HOTKEY,MOD_WIN!
 
左侧Win键值 VK_LWIN 16进制值 5B
右侧Win键值 VK_RWIN 16进制值 5C
 
关注进展。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
function MyHook(var Message:TMessage):Boolean;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



{ TForm1 }

function TForm1.MyHook(var Message: TMessage): Boolean;
begin
if (Message.Msg = $B016) and (Message.WParam = $5B) then
showmessage('OK');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(MyHook);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Application.UnhookMainWindow(MyHook);
end;

end.
 
顶部