我想编一个程序,程序运行后,当按下快捷键的时候程序的主窗体就隐藏起来,任务栏里也没有,再次按下快捷键的时候主窗体就又出来了!实现这样的功能都要编哪些模块?
解决方案 »
- 以前把所有东西都写在一起,现在想分开模块来做,我有个问题,帮帮忙
- 在WINDOWS中程序需要被另外的一个EXE调用,请问程序启动时怎样知道是另一个EXE调用的?
- 怎样取得快捷方式里的目标属性字符串
- 如何设置application.messagebox 设置默认按钮位置
- 如何使用Treeview控件
- 如何得到表中一个字段的最小值?
- ASP中用VBSCRIPT这样写SET RS=Server.CreateObject("ADODB.recordset")在DELPHI中怎样来写一个语句完成同样的功能?RS是创建的一个对象……
- 求助!搞不定要被老板KKKKK!
- 如何解决一则DELPHI程序运行错误?急急!!!
- 如何将窗体做成dll
- 如何操作Word
- 主菜单的同一行右边如何加入一个图标,就跟浏览器一样,靠右边有一个windows的图标,跟菜单在同一行.
Form1.Hide;
就可以了。
隐藏任务栏里的图标的方法:
ShowWindow(Application.Handle,SW_HIDE);
就可以了。但是你程序全部隐藏后,如果连任务栏都没有显示的话,那么你的快捷键就必须到系统中注册,否则程序隐藏后就不能接受到快捷键消息了。这就要使用下面两个API函数:
RegisterHotKey :程序运行时调用注册快捷键
UnregisterHotKey :程序结束时取消注册快捷键
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
protected
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
end; var
Form1: TForm1;
id,id2:Integer; implementation {$R *.DFM}
procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
begin
ShowMessage('Ctrl + Q ');
end; if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82) then
begin
ShowMessage('Ctrl + R ');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom('hotkey');
RegisterHotKey(handle,id,mod_control,81); id2:=GlobalAddAtom('hotkey2');
RegisterHotKey(handle,id2,mod_control,82);
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,id);
UnRegisterHotKey(handle,id2);
end;
当按下快捷键的时候程序的主窗体就隐藏起来:
showwindow(application.Handle,SW_HIDE);
form1.Hide;
form1.Show;
根据hottey(阿风㊣)的,改动如下
project.bpr里写 Application.Initialize;
Application.CreateForm(TForm1, Form1);
application.ShowMainForm:=false;//创建时主窗体不显示
Application.Run;unitvar boo:boolean=true;//窗体的状态:程序开始时隐藏;
procedure Tform1.hotkey(var msg:Tmessage);
begin
if(msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
begin
if(boo) then
begin
ShowWindow(handle,sw_normal);
boo:=false;
end
else
begin
ShowWindow(handle,sw_hide);
boo:=true;
end;
end;end;