我有一个问题,我在做一个能用鼠标在屏幕上绘图的工具。原理就是希望截获鼠标消息,在desktop上绘制,并不往相应的应用程序转发。
用hook函数,hook WH_MOUSE,但是我发现,如果鼠标从屏幕上的某个应用程序的client area开始点击绘制,
那么只能相应在这个应用程序的client区域进行绘制。无法超出绘制。
而从desktop的上面就可以在程序的任何地方绘制。而且如果点击某个应用程序的title bar,无法hook住此时down的鼠标消息。
我不知道有什么地方用错了hook函数,还是系统有什么特殊处理。没有什么思路。谢谢你们能帮助我!
用hook函数,hook WH_MOUSE,但是我发现,如果鼠标从屏幕上的某个应用程序的client area开始点击绘制,
那么只能相应在这个应用程序的client区域进行绘制。无法超出绘制。
而从desktop的上面就可以在程序的任何地方绘制。而且如果点击某个应用程序的title bar,无法hook住此时down的鼠标消息。
我不知道有什么地方用错了hook函数,还是系统有什么特殊处理。没有什么思路。谢谢你们能帮助我!
解决方案 »
- vs2010 SDI程序,在自动生成的文件MainFrm.cpp中的 int CMainFrame::OnCreate()函数内创建按钮不显示
- 求一个在VS2008中用MFC自动化EXCEL2007实例
- 如何搜索内存中的字符
- 请教Dialog中添加工具条问题?
- 问个TRACE的问题,在线等。。。
- 请问谁知道《MFC Windows 程序设计(第2版)》哪下载?
- 马上给分!
- 急,请问该如何设置才让在win95下让自己的dll位于进程得2gb以上的内存空间???
- 我也想问一下:如何去掉CWebBrowser的滚动条?,用它显示GIF广告的时候,多讨厌啊!
- 好消息!(买不起书的请进!)
- 馅饼!
- 请问给EXE文件减肥,用什么压缩软件好一点,有比较经典的吗?而且哪里有免费下载的?多谢!
http://www.ithome-cn.net/technology/vc/vc148.htm
希望有人可以帮助我!
但是我的问题是,我只能得到一个应用程序中的鼠标消息。我hook住的鼠标消息是WM_LBUTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE,
WM_NCLBUTTONDOWN,WM_NCLBUTTONUP,WM_NCMOUSEMOVE。而这些已经是系统处理好的发给某个应用程序的鼠标消息。
那么怎么hook住的鼠标事件呢?而不是处理好的消息。
也是出現你所說的.我用的是我刷給你的網頁的方式.
動態的呼叫hook mouse的對象可能只是針對建立hook的程序
我想如果你想要捕獲所有的話.應該用系統勾子.做成dll
你说不能超一出个窗口
估计是只HOOK住这一个窗口的消息
或者你把DESKTOP的句柄得到
HOOK住DESKTOP这个窗口试一试
我想原因可能是:系统扫描系统的事件队列,后判断event的对应的进程,如果不是当前运行的进程的话,会暂时放在系统队列不发送的。是的话,才转成相应的鼠标消息发送给当前的进程,这是hook函数才有效。所以造成了hook住的消息只有已经当前进程处理好的鼠标消息(鼠标down后判断的程序的窗口)。而我只想截获mouse event.所以hook可能不对。因为win32的API没有提供对底层event的操作。
我试过用setcapture.但是它只有在前台窗口才可以capture mouse。
大家的看法呢?难道只能写driver直接截获mouse event?帮帮我吧。