9 c++ console winapi wndproc access-denied
如果我有一个控制台应用程序,其句柄设置如此;
HWND hWnd = GetConsoleWindow();
Run Code Online (Sandbox Code Playgroud)
那我该如何为窗口设置一个新的wndProc呢?
我试过用
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);
Run Code Online (Sandbox Code Playgroud)
将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 );
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,并说"错误代码:5 - 访问被拒绝" GetLastError()
我知道修改这样的控制台应用程序非常困难,因为它是一个csrss.exe应用程序,但我仍然想尝试..谢谢.
Rom*_* R. 14
虽然印象是控制台窗口属于您的进程(与其他窗口一样),但它实际上是由CSRSS系统进程托管的,其WndProc就在那里.这使您无法对窗口进行子类化,并在您的过程中提供自己的WndProc.
一些相关阅读: