在form的onkeypress事件中有var Key: Char,代表按下了那个键! 

解决方案 »

  1.   

      我是想在任何情况下,用户按下个键时,干一些事情.(比如:当前我在用WORD时我按下了(A键),然后,一段音乐被放映.用(hook)我对它不熟悉.我目前使用的是windows的api函数 RegisterHotKey
    但它好象必须带一个ctrl,alt,shift之类的键.(具体可以看我的另一个帖子 关于registerhotkey函数的问题 )
    我的E_MAIL是ghj1976@188.net
    垃圾的不要发到我的信箱.
      

  2.   

          用windows的api函数 RegisterHotKey 它可以不带ctrl,alt,shift之类的键.(如   registerhotkey(handle,hotkeyid3,0,VK_SPACE);它的热键就是空格键.
          谢谢在我的另一个贴子上帮我用windows的api函数 RegisterHotKey解决问题的shania和hubdog
          另外我想问用(hook)如何解决这个问题?
      

  3.   

    刚看到CSDN里Delphi中的一个例子,不用Hook(用汇编),好象叫KeySpy,你可以找找看。
      

  4.   

    你能不能描述清楚点,我一页一页的找眼睛都发呆了.那里有KeySpy的介绍.
    谢谢.
      

  5.   

    用键盘HOOK可以实现.interface
    ...function KeyboardHookHandler(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;implementationhKeyboardHookProc: HHOOK;function KeyboardHookHandler(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
    const
      _KeyPressMask = $80000000;
    begin
      Result := 0;
      if iCode < 0 Then
      begin
        Result := CallNextHookEx(hKeyboardHookProc, iCode, wParam, lParam);
        Exit;
      end;
      if ((lParam and _KeyPressMask) = 0) and (GetKeyState(VK_MENU) < 0) and  (wParam = 115) then
      begin
        //判断输入的键值,调用相应的处理函数.
        Result := 1; //返回1,系统将不再处理.
      end;
    end;//在程序中加入以下代码,设置HOOK   hKeyboardHookProc := SetWindowsHookEx(WH_KEYBOARD, KeyboardHookHandler, HInstance, 0);//在程序中加入以下代码释放HOOK.    if hKeyboardHookProc <> 0 then
        begin
          UnhookWindowshookEx(hKeyboardHookProc);
          hKeyboardHookProc := 0;
        end;
      

  6.   

       非常感谢各位的关怀!
       前面jll提到的KeySpy又是如何?
      

  7.   

        没有人再看这个问题?我的问题已用windows的api函数RegisterHotKey解决了,但我想看一看其它的方法,特别是jll提到的用keyspy,我对keyspy不了解,有没有大虾帮忙解释一下关于keyspy的问题.我好结束这个问题,大家都可以分些分,我也可以安心的去干其它事情.
        
      

  8.   

       我的e_mail改为[email protected]
      

  9.   

      jll我把delphi的帖子都卡看了,没有发现关于keyspy的,您能指点一下?