我想编一个程序,程序运行后,当按下快捷键的时候程序的主窗体就隐藏起来,任务栏里也没有,再次按下快捷键的时候主窗体就又出来了!实现这样的功能都要编哪些模块?

解决方案 »

  1.   

    隐藏主窗体的代码:
     Form1.Hide;
    就可以了。
    隐藏任务栏里的图标的方法:
     ShowWindow(Application.Handle,SW_HIDE);
    就可以了。但是你程序全部隐藏后,如果连任务栏都没有显示的话,那么你的快捷键就必须到系统中注册,否则程序隐藏后就不能接受到快捷键消息了。这就要使用下面两个API函数:
    RegisterHotKey      :程序运行时调用注册快捷键
    UnregisterHotKey    :程序结束时取消注册快捷键
      

  2.   

    设置全局快捷键    ////////////////////////////////////
    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;
      

  3.   

    showwindow(application.Handle,SW_NORMAL);
    form1.Show;
      

  4.   

    hottey(阿风㊣)你给的程序根本不行!DELPHI是如何实现注册快捷键时,把快捷键按下时触发的事件也注册的?
      

  5.   

    hottey(阿风㊣)的程序很正确呀,不明白你说的:)
      

  6.   


    根据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;