我做了一个鼠标HOOK,想编译成DLL,然后供VB程序调用,即当系统按下鼠标右键时,我的VB程序做出相应的响应。我的VB程序的窗口名为Form1,请问我在VC中SendMessage函数该怎么写?请帮我完善以下的代码。谢谢!extern "C" LRESULT CALLBACK MouseProc(int code,WPARAM wParam,LPARAM lParam) //钩子处理函数
{   
    if (code < 0) //若code<0,直接调用CallNextHookEx返回
        return CallNextHookEx(hhook, code, wParam, lParam);
    if(wParam==WM_RBUTTONDOWN)

   SendMessage(Form1,WM_RBUTTONDOWN,wParam,lParam);
}    return CallNextHookEx(hhook, code, wParam,lParam);
}

解决方案 »

  1.   

    把form1的句柄传递给dll,供dll使用
      

  2.   

    agree , send the handle to dll
      

  3.   

    我以前好象是用:
    HWND FindWindow(    LPCTSTR lpClassName, // pointer to class name
        LPCTSTR lpWindowName  // pointer to window name
       );
      

  4.   

    lParam指向一个MOUSEHOOKSTRUCT结构,其中hwnd是收到鼠标按下事件的窗口句柄
      

  5.   

    再请问各位,我如何在这段代码里得到Form1的句柄呢?能否给一下代码?
      

  6.   

    你试试:
    SendMessage(Form1.hWnd,WM_RBUTTONDOWN,wParam,lParam);
      

  7.   

    to fbmsf(FBM):
    我觉得你的思路是对的,怎么初始化FindWindow呢?
      

  8.   

    好了,想出来了/extern "C" LRESULT CALLBACK MouseProc(int code,WPARAM wParam,LPARAM lParam) //钩子处理函数
    {   
        if (code < 0) //若code<0,直接调用CallNextHookEx返回
            return CallNextHookEx(hhook, code, wParam, lParam);
        if(wParam==WM_RBUTTONDOWN)

     SendMessage(::FindWindow(NULL,"Form1"),WM_RBUTTONDOWN,wParam,lParam);
    }    return CallNextHookEx(hhook, code, wParam,lParam);
    }
      

  9.   

    这个还有一个问题,你可能需要自己来写在VB中的,窗口处理函数(类化),但很有可能导致VB程序不稳定,所以你应该在Form1中建立一个TEXT1,进一步找Text1的hwnd,然后发消息给他,这而的消息最好是自定义的,那么你在子类化Text的时候,不会有不稳定的现象。我做个这个东东。