给dll中的变量赋值的问题

nibani 2003-04-23 03:44:10
下面这段代码的主体来自NowCan的网站,我做了一些修改。
我本来想将自己程序主窗口的句柄通过SetWinHandle函数赋给系统级的共享变量WinHandle,可是这样做不成功。SendMessage函数没有将消息发送到我的程序的窗口过程。如果将CBTProc中注释掉的几句加上去,程序是OK的。
我这样赋值有问题吗?
应该怎么改动呢?
#pragma option -zRSHSEG // 改变缺省数据段名
#pragma option -zTSHCLASS // 改变缺省数据类名
#include <windows.h>
#pragma argsused
// 以下都将是共享区内存变量

HHOOK NewHook=NULL; // 存放新钩子句柄
int LoadCount=0; // DLL装入次数计数
HINSTANCE DllHinst=NULL;
HWND g_hWnd=NULL,WinHandle=NULL;


int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if(DllHinst==NULL)
DllHinst=hinst;
if(reason==DLL_PROCESS_ATTACH) // DLL入口
LoadCount+=1; // 装入计数
else if(reason==DLL_PROCESS_DETACH) // DLL出口处理
LoadCount-=1;
return 1;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0) // do not process message
return CallNextHookEx(NewHook, nCode, wParam,lParam);

switch (nCode)
{
case HCBT_ACTIVATE:
//HWND hwnd = FindWindow(NULL,"Shooter");
//if(hwnd !=NULL)
// WinHandle = hwnd;
SendMessage(WinHandle,0x8888,wParam,lParam);//wParam is handle to about to active window
}
return CallNextHookEx(NewHook, nCode, wParam,lParam);
}
extern "C" __declspec(dllexport)
void SetWinHandle(HWND &Winhwnd) // DLL导出函数SetWinHandle()
{
WinHandle = Winhwnd;
}

extern "C" __declspec(dllexport)
void EnableHook() // 导出函数EnableHook()
{
if (NewHook==NULL) // 安装新钩子
NewHook=SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTProc,DllHinst,0);
}
extern "C" __declspec(dllexport)
void DisableHook() // 导出函数DisableHook()
{
if (NewHook!=NULL)
{
UnhookWindowsHookEx(NewHook);
NewHook=NULL; // 卸掉新钩子
}
}
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
he_Fly 2003-07-01
  • 打赏
  • 举报
回复
应该是没问题的,我用内存映射就没有问题.是不是你的共享段申请的有问题.
zxcdewq 2003-06-28
  • 打赏
  • 举报
回复
up
梦回童年001 2003-05-10
  • 打赏
  • 举报
回复
UP
kataboy 2003-05-10
  • 打赏
  • 举报
回复
gz
qiuafa 2003-04-23
  • 打赏
  • 举报
回复
up

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧