我做的是鼠标钩子:#pragma data_seg("mydata")
char str1[100];
int n;
#pragma data_seg()启动钩子时:
strcpy(str1,"....");
n=10;BOOL CxxHook::EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
在这里,问题出现了:
如果是鼠标点在调用窗口,str1有值,n==10
如果点在其他窗口,str1怎么没值了?而n还是等于10
}这是怎么回事?该怎么解决?

解决方案 »

  1.   

    可能你在设计钩子函数
    SetWindowsHookEx()时,最后一个参数(...DWORD dwThreadId )没有设为0,而是设定为本线程的ID。
    所以你设定的是线程钩子,只能对本线程起作用。按你的设想,应设为系统钩子,将这个参数改为0,即可对所有窗口生效,试试!
      

  2.   

    #pragma data_seg("mydata")
    char str1[100];
    int n;
    #pragma data_seg()
    #pragma comment(linker, "/section:mydata,rws")
      

  3.   

    wangweintk(枫杨) :启动的代码是:
    glhHook=::SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);papaya_stone(^_^)shentong(^_^) 我在*.def中加入:SECTIONS mydata READ WRITE SHARED
    效果应该是一样的吧?
      

  4.   

    #pragma data_seg("mydata")
    char str1[100];
    int n;
    #pragma data_seg()全局的数据段?
    全部初始化先~
      

  5.   

    rivershan(笨猫)(MS MVP)(爱情是什么?) 
    你真是太可爱了,,谢谢!!!!!!!!!!
      

  6.   

    同意rivershan(笨猫),先初始化全局数据。