我建了一个全局的鼠标钩子,用来取其他程序的标题,这个标题已经取到了,我用的是WM_COPYDATA,而且,在我的程序中同时存在着一个Automation sink程序,用来从某个Automation程序中提取信息,他是在我的鼠标左键单击这个Automation程序的工作区时激发一个SelectChange事件,而我的鼠标钩子就是想在这个时侯来钩取此程序的标题信息,我的钩子也是在SelectChange之前运行的,因此,我也取到了这个标题,但是,SelectChange却不运行了,不知是不是钩子消息处理完毕之后就直接返回了?
这两个东西分别运行是都是工作正常的

解决方案 »

  1.   

    调用过了
    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);
    }
      

  2.   

    请问会不会是由于程序首先处理了鼠标钩子消息,完毕后就中止的对其他消息的处理,因此,AutoMation程序发出的SelectChange消息就得不到处理?