我建了一个全局的鼠标钩子,用来取其他程序的标题,这个标题已经取到了,我用的是WM_COPYDATA,而且,在我的程序中同时存在着一个Automation sink程序,用来从某个Automation程序中提取信息,他是在我的鼠标左键单击这个Automation程序的工作区时激发一个SelectChange事件,而我的鼠标钩子就是想在这个时侯来钩取此程序的标题信息,我的钩子也是在SelectChange之前运行的,因此,我也取到了这个标题,但是,SelectChange却不运行了,不知是不是钩子消息处理完毕之后就直接返回了?
这两个东西分别运行是都是工作正常的
解决方案 »
- SOCKET连接问题?
- DLL内创建的线程与主程序创建的线程优先级问题..
- 右键点击一个文件,选择属性,会显示属性信息,这些属性信息如何获得?
- 开启了一个新线程,不断查询某端口,如何停止这个线程啊?
- CDatabase db;db.OpenEx(_T("DSN=***;UID=××;PWD=;"));中的UID是否必须加?
- 请各位大侠帮忙看看是怎么回事!
- 高手前来救命,请问:Windows程序,有多大的堆栈可用?
- 大家可以评论一下bcb和vc这两个工具的优劣吗
- 如何实现一个类似MSN的邮件提示并自动通过IE接收功能?
- 安装程序时所添加注册的OCX怎样在卸载时不删除和反注册?
- 指针的小问题?
- 怎样得到其它窗口中所有的文本框内的文字?或者怎样枚举一个窗口中的所有EDIT框的ID?
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *) lparam;
if (nCode>=0)
{
if(WM_LBUTTONDOWN == wparam)
{
HWND glhTargetWnd=pMouseHook->hwnd;
//取目标窗口句柄
HWND ParentWnd=glhTargetWnd; while (ParentWnd !=NULL)
{
glhTargetWnd=ParentWnd;
//取应用程序主窗口句柄
ParentWnd=GetParent(glhTargetWnd);
} if(glhTargetWnd!=glhPrevTarWnd)
{
//取目标窗口标题
GetWindowText(glhTargetWnd,szCaption,MAX_PATH);
if(glhDisplayWnd)
{
cpd.dwData = 0;
cpd.cbData = sizeof(szCaption);
cpd.lpData = (void*)szCaption;
PostMessage(glhDisplayWnd,WM_COPYDATA,NULL,(LPARAM)&cpd);//发送!
}
//保存目标窗口
glhPrevTarWnd=glhTargetWnd;
}
}
} //继续传递消息
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}