c/c++语言开发共享在控制台上尝试子类化

我想在控制台应用程序中捕获键盘消息,所以我尝试了这个:

HWND GetConsoleHwnd(void) { #define SIZEBUF 1024 char szBuffer[SIZEBUF]; GetConsoleTitle(szBuffer, SIZEBUF); #undef SIZEBUF return FindWindow(NULL, szBuffer); } LRESULT CALLBACK ConsoleProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_KEYDOWN: switch (wParam) { //VK Cases } break; } return CallWindowProc(OldConsoleProc, hwnd, msg, wParam, lParam); } 

这主要是:

 HWND hwndConsole = GetConsoleHwnd(); OldConsoleProc = (WNDPROC) SetWindowLong(hwndConsole, GWL_WNDPROC, ConsoleProc); 

这个全球WNDPROC OldConsoleProc;WNDPROC OldConsoleProc;

但它不起作用,我做错了什么?

    您不能以这种方式子类化另一个进程的窗口。 你可以用钩子做,但我不建议在控制台窗口上尝试这个。 ReadConsoleInput足够低,只要你能得到没有丑陋的非便携式黑客攻击(我甚至不确定当控制台窗口全屏时一些事件到达WndProc )。

      以上就是c/c++开发分享在控制台上尝试子类化相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522367.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐