最后还是子类化搞定了

HHOOK g_hhook = NULL;

HINSTANCE m_hInst;

WNDPROC OldProc= NULL; //原窗口过程

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);

LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);

BOOL APIENTRY DllMain( HANDLE hModule, //DLL入口

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

m_hInst=(HINSTANCE)hModule;

return TRUE;

};

extern "C" __declspec(dllexport) HHOOK _stdcall InstallHook(HWND hHwnd)

{

g_hhook = ::SetWindowsHookEx(WH_CALLWNDPROCRET, (HOOKPROC)KeyboardProc, m_hInst, ::GetWindowThreadProcessId(hHwnd,NULL));

if (g_hhook != NULL)

return g_hhook;

return 0;

}

extern "C" __declspec(dllexport) BOOL _stdcall UninstallHook(HHOOK hHook)

{

return ::UnhookWindowsHookEx(hHook);

}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)

{

if(nCode == HC_ACTION)

{

//PCWPSTRUCT p=(PCWPSTRUCT)lParam;

CWPRETSTRUCT *p=(CWPRETSTRUCT*)lParam;

if(p->message == WM_USER+1)

{

HWND retNum;

char tt[10];

retNum=(HWND)p->wParam;

ltoa((DWORD)retNum,tt,10);

::MessageBox(0,tt,"提示",0);

OldProc=(WNDPROC)GetWindowLong(retNum,GWL_WNDPROC);

if (SetWindowLong(retNum,GWL_WNDPROC,(long)WindowProc)==0) //子类化

{

::MessageBox(0,"安装失败","提示",0);

}

//return 77586;

}

//::MessageBox(0,"hgggg","提示",0);

}

return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);

}

LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)

{

switch(uMsg)

{

case WM_DESTROY://接收到销毁窗口消息时取消子类化

if (OldProc != NULL)

{

SetWindowLong(hwnd,GWL_WNDPROC,(long)OldProc);

OldProc=NULL;

}

case WM_USER + 2:

::MessageBox(0,"收到WM_USER+2消息","提示",0);

return 7758;

}

return CallWindowProc(OldProc,hwnd,uMsg,wParam,lParam);

}

sendmsg返回值_[求助]怎么处理sendmessage的返回值相关推荐

  1. 文本过滤后返回空值_利用Fiddler来Mock接口返回值

    前篇文章介绍了Mock测试的相关理论知识,今天就通过实战操作来演示一下如何通过Fiddler抓包工具来Mock接口返回值. 准备工作 准备一个服务端接口,可以自己用SpringBoot写一个简单的Re ...

  2. java中的左值右值_快速了解C/C++的左值和右值

    最近在segmentfault上看到一个提问<c++隐式的类类型转换问题>:一时不知怎么回答,查阅相关资料后整理了本文,以供参考学习. 定义 早期的C给出的定义:左值是一个表达式,可能出现 ...

  3. 微信小程序如何从数组里取值_微信小程序获取各种数据值跟设置数据值

    微信小程序获取各种数据值跟设置数据值. 修改设置data数组中的某个值://小程序接收后台数据若为数组时,下标最好为默认索引数组,从0开始排序 var articleId ='1'//对应数组中的索引 ...

  4. sendmsg返回值_[求助]Sendmessage函数返回值

    各位老师好,请教一个问题,我有时候在编程的时候需要处理一些通过消息传遍过来的数据,这些数据每次里面有字符串,要是数字还好处理字符串就比较难处理, 我收集了5种消息传递字符串的方法,结果用着都不是让我很 ...

  5. java+jtextfield+取值_[求助]JTextfield 取值问题!

    [求助]JTextfield 取值问题! 我用K取JTextfield中的值 可怎么就是得不到在JTextfield输入的值 K始终=0 (原来JTextfield的初值)请教各位 代码下面 大部分是 ...

  6. async js 返回值_获取JavaScript异步函数的返回值

    今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: function getSomething() { var r = 0; setTim ...

  7. java获取JTextfield值_[求助]JTextfield 取值问题!

    [求助]JTextfield 取值问题! 我用K取JTextfield中的值 可怎么就是得不到在JTextfield输入的值 K始终=0 (原来JTextfield的初值)请教各位 代码下面 大部分是 ...

  8. java中jdbc查询有返回值_使用JdbcTemplate查询方法的返回值 | 学步园

    使用JdbcTemplate进行查询时,可以使用queryForXXX()等方法 1   jdbcTemplate.queryForInt() 和 jdbcTemplate.queryForLong( ...

  9. lisp pause 坐标值_求助,提取坐标的x值、y值不对,请问怎么修改

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (defun c:hq() (setq pa (getpoint "输入左下点:")) ;输入左下桩坐标 (setq r1 (getr ...

最新文章

  1. 【转载】mysql常用函数汇总
  2. Elasticsearch和Hive整合,将hive数据同步到ES中
  3. 常用递归结构数据表,返会指点节点,跟其子节点的操作
  4. tar压缩/解压用法
  5. kafka streams_Kafka REST Proxy for MapR Streams入门
  6. mysql client 未开启_Django+mysqlclient未关闭数据库连接
  7. 谷歌何时停止Android更新,谷歌宣布Android Studio将停止为32位系统提供更新
  8. java 方法调用表达式_java lambda怎么表达式判断被调用接口名称和接口中方法
  9. 使用Jenkins搭建持续集成环境的方法(三)
  10. Atitit 信息化数据采集与分析解析 技术 处理技术 爬虫与http rest json xml h5解析 db数据库 mail协议与处理 数据压缩与解压 数据处理 文本处理
  11. 教学网站毕业设计源码【演示视频】
  12. VS2015正确卸载方法,亲测
  13. ps-黑白老照片快速上色
  14. 用大数据和机器学习揭示十二星座的真实面目(下) ‖ 处女座Get√
  15. 【故事】跟零计算机基础的房东女儿讲了一下午的中间人劫持京东事件后,她感激涕零,决定给我免除房租(上)...
  16. 软件测试需要学什么?测试小白入门必看!
  17. 一度智信电商是真的假的?
  18. 几个去黑头的土方法,试试看! - 生活至上,美容至尚!
  19. 【笔试】三七互娱笔试 web后端工程师
  20. Python入门总结-默单词程序

热门文章

  1. 猫影视接口相关及短网址
  2. Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
  3. Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
  4. Linux学习总结(48)——Linux防火墙iptables与firewalld学习总结
  5. 微服务主见传递ID还是json_Feign实现微服务间文件传递
  6. 【区块链之菜鸟入门】区块链发展史:从拜占庭将军问题到智慧契约
  7. 将ubuntu的apache2修改成https链接
  8. 局域网内两台9303 的管理vlan mac地址冲突解决方法
  9. Android长时间后台运行Service
  10. System Center 2012 R2实例3—SCOM之SharePoint全方位监视11—服务监视