哪位大侠知道怎么利用全局钩子监视系统的”粘贴“动作

哪位大侠知道如何利用全局钩子监视系统的”粘贴“动作?
本帖最后由 plutolxl 于 2014-10-12 14:33:24 编辑
最近一个工程需要对系统的”粘贴“动作进行监视,网上参考了一些资料后自己改了下。

hClipboardhook = SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)ClipboardProc, hInst, (DWORD)NULL);

//钩子函数
LRESULT CALLBACK ClipboardProc(int code, WPARAM wParam, LPARAM lParam)
{     
//让其他全局钩子获得消息
LRESULT Result=CallNextHookEx(hhook, code, wParam, lParam);

MSG *msg=(MSG*)wParam;
if(msg->message==WM_PASTE)
MessageBox(NULL,"ss","粘贴",MB_OK);


return Result;
}

上面是DLL中关于此功能的主要代码,但是现在无法实现需求,哪位大侠知道原因,望赐教!
------解决思路----------------------
WH_GETMESSAGE
你的代码是通过监视WM_PASTE消息, 如果目标程序没有使用这个消息, 或者消息没有进入消息队列就无法监视
你看下是那个情况, 如果是因为消息队列的问题可以尝试 WH_CALLWNDPROC

------解决思路----------------------
粘贴动作并不一定需要WM_PASTE消息--按照msdn的说法这个只是发给edit control 或 combo box的, 如果想截取大部分的粘贴操作最保险的做法是hook API GetClipboardData(),因为真正的粘贴必然调用这个API获取数据。说“大部分”粘贴操作是因为除了标准clipboard外还有一个ole clipboard(drag-drop就是通过ole clipboard实现的)。