首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于delphi全局热键有关问题

2012-02-14 
关于delphi全局热键问题自定义一个全局热键f1,响应事件如下,奇怪的是,第一次按下F1时可以隐藏,再按F2时,却

关于delphi全局热键问题

自定义一个全局热键f1,响应事件如下,奇怪的是,第一次按下F1时可以隐藏,再按F2时,却不能达到想要的结果,不能显示窗体,什么反应也没有了,



procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom('Hotkey');//'Hotkey'名字可以随便取
RegisterHotKey(form1.Handle,id,0,VK_F1);
end;

procedure TForm1.WMHotKey(var Msg : TWMHotKey);
begin
if msg.HotKey = id then
begin
if (self.Visible=true) then
ShowWindow(self.handle,SW_HIDE)
else if(self.Visible=false) then
ShowWindow(self.Handle,SW_SHOW)
end;

end;


[解决办法]
self.Showing;

呵呵,记错了
[解决办法]
因为你把WIN23 API和Delphi的属性混用了:
if (self.Visible=true) then
ShowWindow(self.handle,SW_HIDE)
else if(self.Visible=false) then
ShowWindow(self.Handle,SW_SHOW) 

你要么只使用Delphi的方式:
if (self.Visible=true) then
Self.Hide
else
Self.Show;

要么只使用WIN32 API:
if (IsWindowVisible(self.handle)) then
ShowWindow(self.handle,SW_HIDE)
else
ShowWindow(self.Handle,SW_SHOW) 

[解决办法]
procedure TForm1.WMHotKey(var Msg: TWMHotKey); 
begin 
if msg.HotKey = id then 
begin 
self.Visible:= not self.Visible; 
end; 
end;
这个方法就可以的,我刚试了

热点排行