我做的是鼠标钩子:#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
}这是怎么回事?该怎么解决?
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
}这是怎么回事?该怎么解决?
SetWindowsHookEx()时,最后一个参数(...DWORD dwThreadId )没有设为0,而是设定为本线程的ID。
所以你设定的是线程钩子,只能对本线程起作用。按你的设想,应设为系统钩子,将这个参数改为0,即可对所有窗口生效,试试!
char str1[100];
int n;
#pragma data_seg()
#pragma comment(linker, "/section:mydata,rws")
glhHook=::SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);papaya_stone(^_^)shentong(^_^) 我在*.def中加入:SECTIONS mydata READ WRITE SHARED
效果应该是一样的吧?
char str1[100];
int n;
#pragma data_seg()全局的数据段?
全部初始化先~
你真是太可爱了,,谢谢!!!!!!!!!!