VC学习:全局共享变量的困惑(2)
//进行付值
haveinit=100;
noinit=100;
sprintf(Text,"haveinit=%d
noinit=%d",haveinit,noinit);
MessageBox((HWND)msg->wParam,Text,"付值情况",MB_OK);
}
}
return CallNextHookEx(NULL, code, wParam, lParam);
}
__declspec(dllexport) void Test(HWND hWnd)
{
char Text[50];
//寻找任意对话框
HWND hTest=FindWindow("#32770","");
//取得对话框的线程句柄
HWND handle=GetWindowThreadProcessId(hTest,NULL);
HANDLE hLib= GetModuleHandle("dll.dll");
//添加钩子
HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC,TestProc,hLib ,handle);
if(hook)
{
//发送消息激活钩子
SendMessage(hTest,WM_NULL,(WPARAM)hWnd,0);
//卸载钩子
UnhookWindowsHookEx(hook);
//输出结果
sprintf(Text,"haveinit=%d
noinit=%d",haveinit,noinit);
MessageBox(hWnd,Text,"输出结果",MB_OK);
}
}
/////////////////////////////////////////////////////
//res.rc
/////////////////////////////////////////////////////
//
// Dialog
//
ID_DLG DIALOGEX 0, 0, 186, 90
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP |
WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "测试",IDOK,26,25,50,14
PUSHBUTTON "关闭",IDCANCEL,99,26,50,14
END
///////////////////////////////////////
//resource.h
#define ID_DLG 101
将上面的dll.c编译成dll文件,main.c编译成exe文件,程序运行结果便可以说明一切。
以上代码可以通过网址http://ggg82.go.nease.net/document/g_shared.rar下载。
- 上一篇:VC学习:虚拟按键的总结及示例
- 下一篇:VC实现的MSN Messager钩子程序