是否可以通过拦截消息来获知某窗口程序启动?如何判断呢?

解决方案 »

  1.   

    是特定窗口啊,但怎么拦截?
    static LRESULT WINAPI CallWndRetProc (int nCode, WPARAM wParam, LPARAM lParam
    { if(nCode < 0)

    CallNextHookEx(g_hhookQQ, nCode, wParam, lParam);
    return 0;

    LPMSG pMsg = (LPMSG)lParam;
    //下面怎么判断啊
    .......................
            
      

  2.   

    yes ,you can hook WM_CREATE message
      

  3.   

    WH_SHELL hook typenCode:HSHELL_WINDOWCREATED
    wParam:Handle to the created window
    lParam:无用有了窗口句柄,你就......不过我没试过。
      

  4.   

    g_hHook = SetWindowsHookEx(WH_SHELL, ShellProc, g_hDllIns, 0);
    LRESULT CALLBACK ShellProc(int code, WPARAM wParam, LPARAM lParam)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    try 
    {
    if (code >= 0 && code == HSHELL_WINDOWCREATED )
    {
    HWND hwnd=(HWND) wParam;
    if(hwnd != NULL)
    {
    char strclass[256],strcaption[256];
    memset(strclass,0,256);
    memset(strcaption,0,256);
    GetClassName(hwnd,strclass,256);
    GetWindowText(hwnd,strcaption,256);
    CString str(strcaption);
    char szPath[256];
    GetModuleFileName(GetModuleHandle(SPYOE_DLL),szPath,256);
    if(str.Find("Outlook Express") != -1 && !strcmp(strclass,"Outlook Express Browser Class"))
    {
                                            ...
                                         }
    }
      

  5.   

    LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    switch(nCode)
    {
    case HSHELL_WINDOWCREATED:
         //wParam就是主窗体的窗体句柄,你可以对它进行处理,当然首先的判断是不是目标窗体了
                  break;
    }
    return CallNextHookEx(g_hProc, nCode, wParam, lParam);
    }
      

  6.   

    (此处省去对kingzai()的敬仰之词12000字......)