替换消息处理函数.
api
LONG SetWindowLong( HWND hWnd,
int nIndex,
LONG dwNewLong
);
api
LONG SetWindowLong( HWND hWnd,
int nIndex,
LONG dwNewLong
);
解决方案 »
- 问一个有难度的问题,这个IF语句如何写呢?
- 请教下 ADO.net 如何同时获得输出参数,和查询的记录集
- ORACLE 条件查询语句总是出现你输入的字符串格式不正确?
- c# listview 序列化为xml文件
- 想找一个开源类似ListView表格控件,请前辈指点一下!
- Dll和窗体的消息传递
- winform中想调用一个EXECL模版进行填充数据,再打印,怎么做?
- 怎么在后台代码CS中写JavaScript???
- datagrid列颜色
- 循环向窗体添加控件,随机数是一样的,怎么回事.
- 我想用GUI写一个小程序,可以用打开对话框打开一个C#原文件,然后程序能自能调用framework 2.0 csc 进行编译生成exe文件
- c#---请教
因为你还要钩到汉字,那么要钩到WM_UNICHAR消息。
C++\C代码和思路:
1、设定共享数据段的变量:
#pragma data_seg("mysec")
HHOOK myhook=NULL; //全局钩子定义
HWND tHwnd=NULL; //目标窗口的句柄
HINSTANCE hMod=NULL; //dll模块句柄
#pragma data_seg()
//在def文件中设定此段为 read write shared
2、在dllmain中把模块句柄传到hMod
3、设定一个C#调用的函数setgHook(dword) //参数为目标线程的id
4、WM_CHAR事件一般钩子为WH_GETMESSAGE
钩子函数一般为:
LRESULT CALLBACK myprocAG(int code, WPARAM wParam, LPARAM lParam)
{
if(code==HC_ACTION)
{
PMSG pmsg= (PMSG)lParam;
if((pmsg->message==WM_CHAR||pmsg->message==WM_UNICHAR))
{
somefun(); //添加你自己的功能,wParam即为字符的值,至于UNICODE使用的编码,因该是UTF32
return 1;
}
return(CallNextHookEx(myhook,code,wParam,lParam));
}
else
return(CallNextHookEx(myhook,code,wParam,lParam));
}
5、在C#里边调用即可!
以上为简要思路,具体还要多看MSDN
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞力争成为中国最大的架构师群联盟,架构师技术交流群:28995710正式开放!!!已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞