前几天看见我朋友在用3721上网助手的老板键,ALT+空格一按,所有IE窗口都没了,再一按又都出来了
好玩的不的了
回去想了半天也不得解,就前来问各路高手如何实现
小弟在此先谢谢了!

解决方案 »

  1.   

    哈哈 楼上的就是一个HOOK 键盘 然后动态隐藏/显示 某些东西就是
      

  2.   

    用API RegisterHotKey 注册一个快捷键即可。BOOL RegisterHotKey(
      HWND hWnd,         // handle to window
      int id,            // hot key identifier
      UINT fsModifiers,  // key-modifier options
      UINT vk            // virtual-key code
    );可参考 msdn。
      

  3.   

    beyondtkl(大龙驹<逝追.弗瑞德>) 别这么不厚道了。这个办法可行,但比较麻烦。还是注册热键吧,价格便宜,量又足。
      

  4.   

    注册热键,然后在响应事件里面枚举IE的窗口(如果想隐藏IE的话),找到后
    发消息,SW_Hide给对放就行了。
      

  5.   

    enumwindow而已 这种东西 没什么意义 无聊! 偶照样 玩 CS 老板能把偶怎样 他敢杀偶不成
      

  6.   

    有一个很好用的方法,先运行一个透明的窗体,然后通过OnKeyDown实现,代码如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Image1: TImage;
        procedure FormActivate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;const
      WS_EX_LAYERED = $80000;
      AC_SRC_OVER = $0;
      AC_SRC_ALPHA = $1;
      AC_SRC_NO_PREMULT_ALPHA = $1;
      AC_SRC_NO_ALPHA = $2;
      AC_DST_NO_PREMULT_ALPHA = $10;
      AC_DST_NO_ALPHA = $20;
      LWA_COLORKEY = $1;
      LWA_ALPHA = $2;
      ULW_COLORKEY = $1;
      ULW_ALPHA = $2  ;
      ULW_OPAQUE = $4 ;implementation{$R *.dfm}procedure TForm1.FormActivate(Sender: TObject);
    var l:longint;
    begin
      l:=getWindowLong(Handle, GWL_EXSTYLE);
      l := l Or WS_EX_LAYERED;
      SetWindowLong (handle, GWL_EXSTYLE, l);
      SetLayeredWindowAttributes (handle, 600, 100, LWA_ALPHA);
      //使窗体透明的API,第三的参数100是控制透明度的,范围是0..255 ;
      ShowWindow(application.Handle,SW_HIDE);
      //在任务栏中隐藏该窗体的API ;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      form1.Hide;
      form1.Show;  //保持Form1一直有焦点
    end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var l:longint;
    begin
      if key=vk_Insert then
      begin
        l:=getWindowLong(Handle, GWL_EXSTYLE);
        l := l Or WS_EX_LAYERED;
        SetWindowLong (handle, GWL_EXSTYLE, l);
        SetLayeredWindowAttributes (handle, 600, 255, LWA_ALPHA);
        timer1.Enabled:=false;
        form1.WindowState:=wsMaximized;
        image1.Visible:=true;
        //按下Insert键后,使窗体最大化,并且调出已截好的图片 ;
      end;
    end;end.
      

  7.   

    把键盘钩子做在DLL里面
    搞个全局的键盘钩子
    就不用让Form获得焦点了
      

  8.   

    Hook
    or
    RegisterHotKeyEnumWindowShowWindow(hWnd,SW_HIDE)