【问题标题】:Set focus on console in Windows?在 Windows 中将焦点集中在控制台上?
【发布时间】:2011-03-14 12:20:17
【问题描述】:

是否可以将焦点设置在 Windows 中的控制台应用程序上? SetFocus 看起来很有希望,但它需要一个 HWND,我不知道控制台应用程序是否有一个。

【问题讨论】:

  • 您是在寻找从控制台应用程序内部还是从其他应用程序执行此操作的方法?

标签: winapi console console-application windows


【解决方案1】:

使用GetConsoleWindow 函数。

【讨论】:

  • 这为我返回 NULL。我猜如果我真的用 AllocConsole 或其他东西为 Windows 应用程序创建一个控制台,它会起作用。
  • 如果它在窗口控制台会话中运行,您应该获得一个有效的 HWND。如果它在服务登录会话中,则不会有任何关联的窗口。并且 Windows 会在启动与 /SUBSYSTEM:CONSOLE 选项(作为标志存储在 PE 标头中)链接的进程时自动调用 AllocConsoleAttachConsole
  • 实际上GetConsoleWindow 确实有效。但是SetFocus 返回 NULL,GetLastError 给出 ERROR_ACCESS_DENIED。任何想法为什么?
  • 是的,你不能从其他应用程序中窃取焦点,因为它太烦人了,微软最终听取了他们的用户的意见并阻止了它。 SetFocus 可用于在单个应用程序中更改焦点,或者在拥有焦点时放弃焦点,但不能用于获取焦点。考虑使用FlashWindowEx 而不是msdn.microsoft.com/en-us/library/ms679347.aspx
猜你喜欢
  • 2013-05-31
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2011-01-06
  • 1970-01-01
  • 2014-05-11
相关资源
最近更新 更多