-
-
未解决
在dll中调用SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG)WndProc1);程序崩溃
2.00雪花
-
发表于:
2018-1-26 17:49
3639
-
未解决 在dll中调用SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG)WndProc1);程序崩溃
2.00雪花
我想在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这一行程序就崩溃了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!