热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Delphi怎么Hook指定句柄窗体的消息

目前做个小程序,需要监控PPT的播放翻页情况,也就是ppt翻页后通知主程序,我用spy++看了下,ppt翻页的时候有消息,请问下,如何拦截这个消息?(我目前用的方法是用线程读
 目前做个小程序, 需要监控 PPT的播放翻页情况, 也就是 ppt翻页后 通知主程序, 我用spy++ 看了下,ppt 翻页的时候 有消息, 请问下,如何拦截这个消息? (我目前用的方法 是用线程读取内存数据, 但是 powerpoint是32位的还好,地址都找到了, 如果是64位的 地址还没抓到, 并且不稳定, 所有想从拦截 消息方面入手,)  学习了几个 hook的例子, 都不成功

12 个解决方案

#1


取得窗口句柄所在线程的ID,因为SetWindowsHOOK要的参数是线程ID

#2


对hook不太懂, 我对着万一的博客中的例子 做全局鼠标钩子 或者键盘钩子 都能拦截, 但是 拦截指定窗体 , 只能拦截本程序, 不能拦截到 ppt的窗体  hook:=setWindowsHookEx(WH_cat,proc,HInstance,0);   或者   hook:=setWindowsHookEx(WH_cat,proc,HInstance,PPPTPid); 都这样,  

#3


dll 代码 ,, 求大神指点下, 不进入回调函数

function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
 {
  case wParam of
    WM_MOUSEMOVE   : info := '鼠标位置';
    WM_LBUTTONDOWN : info := '按下';
    WM_LBUTTONUp   : info := '放开';
  end;
  info := Format('%s: %d,%d', [info, PMouseHookStruct(lParam)^.pt.X, PMouseHookStruct(lParam)^.pt.Y]);
  }
  {通过消息把数据传递给指定窗口}
  info:=IntToStr(wParam);
  PostMessage(h, WM_MyMessage, 0, Integer(PChar(info)));

  Result := CallNextHookEx(hook, nCode, wParam, lParam);
end;

function SetHook: Boolean; stdcall;
const
  WH_MOUSE_LL =14;
  var h:HWND; id:Cardinal;
begin
//查找到powrpointView窗体句柄
   h:=FindWindow('PPTFrameClass',nil);
   h:=FindWindowEx(h,0,'MDIClient',nil);
   h:=FindWindowEx(h,0,'mdiClass',nil);
   h:=FindWindowEx(h,0,'paneClassDC',nil);
  id:=GetWindowThreadProcessId(h,nil);
  hook := SetWindowsHookEx(WH_CALLWNDPROC, @HookProc, HInstance,id );
  Result := hook <> 0;
end;

#4


用 spy++ 抓取的 消息是   

#5


做全局鼠标钩子 或者键盘钩子才行。应为进程在不同内存空间不能互相访问。
必须注入动态链接库时自己的程序和别的程序共享一个内存块才能从别个程序中获取信息。

#6


不懂....     如果您方便的化, 能不能写个简单的demo , 万分感谢

#7


Hook窗口过程,WH_CALLWNDPROC这个钩子会勾掉所有消息的处理过程
你也可以直接替换掉窗口过程,拿到处理权限,然后SetWindowLong替换掉窗口过程

#8


如果只是监控翻页情况的话,我觉得你可以换个思路,使用OLE编程,直接调用PowerPoint的相应API不就可以了吗,只搞过EXCEL的,对于Powerpoint的操作没搞过

#9


或者你在Powerpoint里编写一段VB代码,直接把消息传出来也可以的吧

#10


PPT翻页,窗口不变更,仅更换内容(页面)。

#11


引用 9 楼 nebula845026 的回复:
或者你在Powerpoint里编写一段VB代码,直接把消息传出来也可以的吧


因为是用户环境不同, ppt版本和文件不用, 无法再ppt中插入vba脚本, 

#12


http://download.csdn.net/download/sololie/6271981

推荐阅读
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • WPF开发心率检测大数据曲线图的高性能实现方法
    本文介绍了在WPF开发中实现心率检测大数据曲线图的高性能方法。作者尝试过使用Canvas和第三方开源库,但性能和功能都不理想。最终作者选择使用DrawingVisual对象,并结合局部显示的方式实现了自己想要的效果。文章详细介绍了实现思路和具体代码,对于不熟悉DrawingVisual的读者可以去微软官网了解更多细节。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文介绍了在Windows系统下,下载并解压lua5.3后得到的四个文件:lua53.dll, lua53.exe, luac53.exe和wlua53.exe的功能。其中,前三个文件的作用已知,但对于wlua53.exe的具体用法,作者通过查阅资料得出该文件与图形界面的窗口相关,但未找到相关说明。因此,作者希望能够请教关于wlua53.exe的具体用法。 ... [详细]
author-avatar
梦幻死灵_791
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有