如上!!!

解决方案 »

  1.   

    这是一个将QQ的代理改变的问题,通过捕获消息来实现,程序令QQ可以过代理或不通过代理上网,在处理中碰到一个意想不到的问题,这个问题看起来极为简单但就是令人无法理解,请高手帮忙调试!!
      

  2.   

    int  count=1;
    HINSTANCE g_hinstDll          = NULL;         // instance handle
    #pragma data_seg(".HOOKDATA")HHOOK  g_hhook = NULL;             // Hook handle for thread-specific hook
    #pragma data_seg()#pragma comment(linker, "/SECTION:.HOOKDATA,RWS")BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call,LPVOID lpReserved)
    {
        switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
        }
    g_hinstDll=(HINSTANCE)hModule; //得到DLL实例    return TRUE;
    }LRESULT WINAPI CallWndRetProc (int nCode, WPARAM wParam, LPARAM lParam
    { if(nCode < 0)

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

    LPMSG pMsg = (LPMSG)lParam; if(pMsg->message==0x0000001)&&(pMsg->wParam==WM_COMMAND) )//点了"确定"
    {
    LONG lStyle = ::GetWindowLong((HWND)pMsg->lParam, GWL_STYLE);
    if(lStyle==0x86000044)//判断是否是我要找的窗口
    { char msg[200]; sprintf(msg,"count=%d",count);//这里,不管你的change怎么赋值,就是等于1

    ::MessageBox(NULL,msg,"count",MB_OK);
                      }
    return(CallNextHookEx( g_hhook, nCode, wParam, lParam ));
            }
    return(CallNextHookEx( g_hhook, nCode, wParam, lParam ));
     
    }BOOL InstallHook(HWND ToRecverHwnd) //导出函数
    { MainDialog=ToRecverHwnd; if(g_hhook!=NULL) return TRUE;
    g_hhook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndRetProc, g_hinstDll, 0); return TRUE;
    }int change(WPARAM aaa)//导出函数
    {
    count=a;
    return 0;
    }
    上面简单的代码,出现了count的值不能改变的问题,不管change多少,count=a后,验证确实已赋值给了他,但在函数CallWndRetProc里,它的值始终是1,不会改变,大家说这是为什么
      

  3.   

    int  count=1;
    HINSTANCE g_hinstDll          = NULL;         // instance handle大哥,这个也要放进共享短里面去
      

  4.   


    #pragma data_seg(".HOOKDATA")
    int  count=1;
    HINSTANCE g_hinstDll          = NULL;         // instance handle
    HHOOK  g_hhook = NULL;             // Hook handle for thread-specific hook
    #pragma data_seg()#pragma comment(linker, "/SECTION:.HOOKDATA,RWS")