【问题标题】:AllocConsole(); with GetAsyncKeyState();分配控制台();使用 GetAsyncKeyState();
【发布时间】:2015-04-24 14:03:39
【问题描述】:

我在 AllocConsole(); 之间有一些 std::cout 和 std::cin 命令;和 FreeConsole();,但是当我按下 ctrl + caps lock 时,控制台只是短暂地闪过,不会 cout 或等待 cin。

这是为调出控制台设置热键的错误方法吗?

if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(VK_CAPITAL)){ // ctrl + caps
            AllocConsole();
            ....
            ....
            ....
            ....
            FreeConsole();
        }

感谢您的宝贵时间。

【问题讨论】:

  • 看起来应该是热键 (RegisterHotKey),而不是投票。
  • 您必须重新初始化 std::cin 以便它与您创建的控制台窗口相关联。试试freopen("CONIN$", "r", stdin);

标签: c++ console


【解决方案1】:

试试 GetAsyncKeyState(VK_CONTROL)&1

不管怎样,除非你在里面放了一些 Sleep(),否则它只会打开然后立即关闭。

这绝对是RegisterHotKey的工作

【讨论】:

  • 所以即使我告诉它输出一些文本并等待我的输入它也不会?
  • 如果你阻止它应该可以工作。如果您需要导师,很乐意为您提供帮助。
  • Skype 或 Tox.im:pastebin.com/HP2xnDFz 粘贴过期 1 小时。阻塞意味着暂停线程的执行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 2016-03-20
  • 2017-08-10
  • 2023-03-28
相关资源
最近更新 更多