CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

用钩子实现快捷键的问题,高手千万要帮忙!

楼主snakeli(李佳)2003-11-01 06:30:53 在 Delphi / Windows SDK/API 提问

RegisterHotKey注册的全局快捷键在某些游戏下不起作用,用钩子有不知道怎么把消息传回应用程序,我用SendMessge传自定义消息或者WM_HOTKEY消息,但是当程序不是Active是,不管用什么方法都无法接受到消息,甚至把GetMessage换成PeekMessage都不行。  
   
  我DELPHI没系统地学过,只看了皮毛。希望能得到高手的帮助。 问题点数:0、回复次数:5Top

1 楼DongXF(孔雀东南飞)回复于 2003-11-01 09:14:56 得分 0

這個可以用全局鍵盤钩子实现,但一言兩語說不清,建議看書,   比如Delphi6   開發大全Top

2 楼RockEx(石头)回复于 2003-11-01 09:20:58 得分 0

自定义热键        
  ...  
  public  
  procedure   WMhotkeyhandle(var   msg:Tmessage);message   wm_hotkey;  
  ...  
  var  
  hotkeyid:integer;  
  ifhide:boolean;  
  implementation  
  ...  
  procedure   TForm1.FormCreate(Sender:   TObject);  
  ...    
  ifhide   :=   false;  
  hotkeyid   :=   GlobalAddAtom('My   HotKey')-$C000;  
  registerhotkey(handle,hotkeyid,mod_control   or   mod_alt,$4D);  
  //设定快捷键为Alt+Ctrl+M  
  ...  
  procedure   TForm1.FormHide(Sender:   TObject);  
  ...  
  ifhide   :=   true;  
  ...  
  procedure   TForm1.Wmhotkeyhandle(var   msg:Tmessage);  
  begin  
  if   (msg.LParamHi=$4D)   and   (msg.lparamLo=mod_control   or   mod_alt)   then  
  begin  
  msg.Result:=1;  
  if   ifhide   then   begin  
  application.Restore;  
  ifhide   :=   false;  
  end;  
  end;  
  end;  
  ...      
  Top

3 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2003-11-01 09:49:08 得分 0

我不知道你是怎么回传消息的,是否传送到了正确的窗口,你可以通过在SendMessage的时候将hwnd参数设置为HWND_BROADCAST来向所有的窗口广播消息。Top

4 楼snakeli(李佳)回复于 2003-11-01 15:52:35 得分 0

以前有人问过这个问题,说是用HWND_BROADCAST可以实现,但是接受的窗口必须是Overlapped。这个我不太明白。我用的就是全局钩子。我只是奇怪为什么PostMessage到不活动的窗口,那个窗口就收不到消息。  
  昨天又发现用WM_COPYDATA可以实现,还有没有别的方法?Top

5 楼snakeli(李佳)回复于 2003-11-01 15:54:11 得分 0

在安装钩子的时候把Handle传过去,钩子函数里用PostMessage把消息传回应用程序Top

相关问题

  • 关于快捷键和键盘钩子
  • 如何实现快捷键(ctrl+X)的使用?
  • 关于VC程序中快捷键调用方法的实现?
  • 如何实现快捷键
  • 请问在键盘钩子钩到快捷键后如果改变系统栏的图标?(请教最优实现)
  • 如何实现用快捷键调出程序?(像金山游侠那样)
  • 请问如何用快捷键实现listView按某列排序?谢谢!
  • 如何使用快捷键?
  • 快捷键的用法
  • 怎样实现快捷键的设置

关键词

  • 消息
  • 钩子
  • ifhide
  • 快捷键
  • 实现
  • 全局
  • hotkey
  • mod
  • proceduretform1
  • msg

得分解答快速导航

  • 帖主:snakeli

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo