首页
社区
课程
招聘
未解决 在dll中调用SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG)WndProc1);程序崩溃 2.00雪花
发表于: 2018-1-26 17:49 3639

未解决 在dll中调用SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG)WndProc1);程序崩溃 2.00雪花

2018-1-26 17:49
3639

我想在dll里修改窗口过程 程序直接崩溃了 在exe主程序里修改就没有任何问题

下面是dll代码片段

typedef LRESULT (CALLBACK* WND)(HWND, UINT, WPARAM, LPARAM);

WND hWndOld;

LRESULT CALLBACK WndProc1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

      return hWndOld(hWnd, message, wParam, lParam);

}

DWORD WINAPI ThreadProc(LPVOID lParam)

{

 HWND hWnd = NULL;

Sleep(2000);

for (; (hWnd = FindWindow(TEXT("LOVE"), 0)) == 0;);

hWndOld = (WND)GetWindowLongPtr(hWnd, GWL_WNDPROC);

 SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG)WndProc1);

return 0;

}

dll的入口代码直接CreateThread调用ThreadProc,新的窗口过程WndProc1直接调用原窗口过程

可是SetWindowLongPtr这一行程序就崩溃了 


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2435
活跃值: (750)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
WINPROC  里面错了
2018-1-26 20:59
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
FANTASYING WINPROC 里面错了
问题我自己解决了,窗口过程是给系统调用的,自己不能调用,我调用了原窗口过程导致崩溃
2018-1-28 15:31
0
游客
登录 | 注册 方可回帖
返回
//