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

难题:如何捕获系统中任何或保存的对话框上点击右上角那个问号“?”按钮的消息?

楼主jihejihe(几何)2003-09-04 11:45:27 在 Delphi / 非技术区 提问

我想在自己的程序运行后,可以在系统中任何一个打开或者保存的对话框上添加相应的功能,所以想通过点击右上角的“?”按钮来触发运行自己的代码,不知道怎样入手。  
  小弟是菜鸟,大虾给个思路吧!  
  问题解决再送100分!  
   
  问题点数:0、回复次数:7Top

1 楼Drate(小虫(好好学习,天天向上))回复于 2003-09-04 11:53:32 得分 0

在Main   Form的OnShow中,添加如下代码即可:  
   
  ShowWindow(Application.Handle,SW_HIDE)  
   
  此后,必须处理最小化消息:  
   
  private  
   
  procedure   WMSysCommand(var   msg:   TWMSysCommand);   message   WM_SysCommand;  
   
  {....}  
   
  implementation  
   
  procedure   TMainForm.WMSysCommand(var   msg:   TWMSysCommand);  
   
  begin  
   
  if   msg.CmdType   and   $FFF0   =   SC_CONTEXTHELP   then  
   
      ShowMessage('OK');  
   
  else  
   
  inherited;  
   
  end;  
  Top

2 楼jihejihe(几何)回复于 2003-09-04 12:10:43 得分 0

楼上的,我的意思是在自己程序运行后,就可以在其它程序如PotoShop、或者其它程序的打开或保存对话框上右上角的“?”按钮触发自己的代码的!反之,自己的程序退出后就没有这个功能了!  
  你上面的代码能不能实现这个要求呢?Top

3 楼jihejihe(几何)回复于 2003-09-04 14:55:14 得分 0

代码好像执行无效的?Top

4 楼Drate(小虫(好好学习,天天向上))回复于 2003-09-04 15:06:51 得分 0

 
  上面的代码   只是一个大概的说明    
   
  如果楼主真的要达到这样的要求的话  
  必须要把我上面的代码写到DLL中  
  而且要设置一个HOOK,拦截系统中所有的WM_SYSCOMMAND消息才行  
  否则单单在自己的FORM中实现,只可能对自己的窗体进行操作Top

5 楼jihejihe(几何)回复于 2003-09-04 15:41:55 得分 0

我就是需要这样的功能,能不能给我个例子看看?  
  麻烦你了Top

6 楼jihejihe(几何)回复于 2003-12-17 17:06:58 得分 0

我写的全局鼠标钩子是正常的,但是,我想全局拦截系统所有对话框右上角那个“?”按钮点击的事件,因此修改了代码,运行正常,但是发现老是钩不到,没有反映,全部代码在下面,大虾帮我看看吧,是哪个地方些错了!  
  *************************************************************  
  DLL文件:  
   
  library   MouseHook;  
   
  uses  
      MouseIdle   in   'MouseIdle.pas';  
   
  Exports  
      CreateHook,  
      RemoveHook;  
   
  begin  
      whHelp   :=   0;  
      procSaveExit   :=   ExitProc;  
      ExitProc   :=   @HelpHookExit;  
  end.  
  *******************************************************************  
  MouseIdle.pas   文件  
   
  unit   MouseIdle;  
   
  interface  
   
  uses  
      Windows,   Messages;  
   
  var  
      whHelp:   HHook;  
      procSaveExit:   Pointer;  
   
      function   CreateHook:   Boolean;   export;  
      function   RemoveHook:   Boolean;   export;  
      procedure   HelpHookExit;   far;  
      function   HelpProc(iCode:   Integer;   wParam:   WPARAM;   lParam:   LPARAM):   LRESULT;   stdcall;   export;  
   
   
  implementation  
   
  function   CreateHook:   Boolean;  
  begin  
      Result   :=   false;  
      if   whHelp   <>   0   then   Exit;  
      whHelp   :=   SetWindowsHookEx(WH_SYSMSGFILTER,   @HelpProc,   Hinstance,   0);  
      Result   :=   whHelp   <>   0;  
  end;  
   
  function   RemoveHook:   Boolean;  
  begin  
      if   whHelp   <>   0   then  
      begin  
          UnHookWindowsHookEx(whHelp);  
          whHelp   :=   0;  
      end;  
      Result   :=   whHelp   =   0;  
  end;  
   
  procedure   HelpHookExit;  
  begin  
      if   whHelp   <>   0   then  
          RemoveHook;  
      Exitproc   :=   procSaveExit;  
  end;  
   
  function   HelpProc(iCode:   Integer;   wParam:   WPARAM;   lParam:   LPARAM):   LRESULT;   stdcall;   export;  
  begin  
      Result   :=   0;  
      if   iCode   <   0   then   Result   :=   CallNextHookEx(whHelp,   iCode,   wParam,   lParam);  
   
      if   PCWPStruct(lParam)^.message   =   WM_SysCommand   then  
          if     pMsg(PCWPStruct(lParam)^.message).message   =   SC_CONTEXTHELP   then  
              MessageBox(0,   '点击窗体右上角的帮助按钮',   'Hook',   0+64);  
  end;  
   
  end.  
   
  *********************************************************************Top

7 楼jihejihe(几何)回复于 2003-12-17 18:36:29 得分 0

调了一天都调不出,郁闷...Top

相关问题

  • JDialog的哪个方法是设置对话框右上角的"×"按钮无效?
  • 请问对话框右上角的关闭按钮问什么无效了?
  • 如何让对话框右上角的关闭按钮失效,用户只能点击指定的按钮关闭对话框???
  • 求助:如何在对话框的右上角关闭按钮那里加上最小化的按钮啊?
  • 怎样Enable/Disable对话框的按钮?
  • 关于CFileDialog对话框上的按钮
  • 关于对话框的关闭按钮?
  • 对话框背景上的按钮??
  • 急!对话框按钮不能点!
  • 对话框中的按钮响应??

关键词

  • 代码
  • 系统
  • 消息
  • whhelp
  • 对话框
  • mouseidle
  • removehook
  • 按钮
  • createhook
  • helphookexit

得分解答快速导航

  • 帖主:jihejihe

相关链接

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

广告也精彩

反馈

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