如果我有一个带有句柄的控制台应用程序,像这样设置;
HWND hWnd = GetConsoleWindow();
那么如何为窗口设置一个新的 wndProc 呢?
我尝试使用
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);
将 conProc 定义为
LRESULT CALLBACK conProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_NCHITTEST:
return HTCAPTION;
}
return DefWindowProc(hWnd, msg, wParam, lParam );
}
但它不起作用并显示“错误代码:5 - 访问被拒绝”GetLastError()
我知道像这样修改控制台应用程序非常困难,因为它是一个 csrss.exe 应用程序等等,但我仍然想尝试.. 谢谢。