在VC中可以用钩子,在Delphi中就不太清楚了。

解决方案 »

  1.   

    可以组和其他的键,例如win+fN,但是Win+N我没有成功。没时间了,今天要手工了。
    //下面组合键为win+f2
    procedure TForm1.formcreate(Sender: TObject);
    begin
    registerhotkey(handle,0,mod_win,Vk_F2);
    end;procedure tform1.hotkey(var msg:tmessage);
    begin
      if (msg.LParamHi=VK_f2) and (msg.LParamLo=MOD_win) then
      begin
       SetForegroundWindow(handle);
       showmessage('fkdsjdf;');
      end;
    end;
      

  2.   

    啊,搞定了,原来没有吃饭,现在终于可以安心吃饭了:
    例如:Win+N.  N的VK_CODE为78,所以上面的程序修改成:
    procedure TForm1.formcreate(Sender: TObject);
    begin
    registerhotkey(handle,0,mod_win,78);
    end;procedure tform1.hotkey(var msg:tmessage);
    begin
      if (msg.LParamHi=78) and (msg.LParamLo=MOD_win) then
      begin
    //  SetForegroundWindow(handle);
      showmessage('fkdsjdf;');
      winexec('notepad.exe',sw_show);
      end;
    end;
     
      
      

  3.   

    WindowS键码是 91 .
    用Key钩子就是了,呵呵
      

  4.   

    to Kingron:我一会试试,好了给你加分,我好多问题你都帮忙了,真是感谢!
      

  5.   

    我在Form的KeyPress事件里:
    Caption := IntToStr(Key);
    就可在Form标题栏知道你刚才按下的键值。
      

  6.   

    我现在想应该是keyDown事件;其余同上。
    Caption := IntToStr(Key);
    就可在Form标题栏知道你刚才按下的键值。
      

  7.   

    不,VK_XXX跟那个不一样,应该在KeyUp事件中取值的在RegisterHotkey中才能够使用。
    a的VK_CODE=65,但是Char值为:97,使用热键的时候,应该使用65而不是97。
    这是大家应该注意的。
      

  8.   

    我试了,还是不能屏蔽掉windows键的。
      

  9.   

    不是,我是说定义热键,没有屏蔽Windows键!设置屏幕保护状态可以屏蔽!但是:(,自己的消息也不能够处理了。
      

  10.   

    但是那样其他的热键也一同屏蔽掉了,这样不符合要求。
    我希望象屏蔽开始菜单按钮一样屏蔽windows键。