Winapi 在Windows的控制台上设置焦点?

Winapi 在Windows的控制台上设置焦点?,winapi,console,console-application,windows,Winapi,Console,Console Application,Windows,可以在Windows中设置控制台应用程序的焦点吗?看起来很有希望,但它需要一个HWND,我不知道控制台应用程序是否有一个。使用该函数。它为我返回NULL。我猜如果我真的用AllocSole或其他东西为Windows应用程序创建了一个控制台,它就会工作。如果它在一个窗口控制台会话中运行,你应该得到一个有效的HWND。如果它在服务登录会话中,则不会有任何相关窗口。当Windows启动与/SUBSYSTEM:CONSOLE选项(存储为PE头中的标志)链接的进程时,它会自动调用alloconsole或A

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

使用该函数。

它为我返回NULL。我猜如果我真的用AllocSole或其他东西为Windows应用程序创建了一个控制台,它就会工作。如果它在一个窗口控制台会话中运行,你应该得到一个有效的HWND。如果它在服务登录会话中,则不会有任何相关窗口。当Windows启动与
/SUBSYSTEM:CONSOLE
选项(存储为PE头中的标志)链接的进程时,它会自动调用
alloconsole
AttachConsole
。实际上
GetConsoleWindow
确实有效。但是,
SetFocus
返回NULL,而
GetLastError
给出错误\u访问被拒绝。你知道为什么吗?是的,你不能从其他应用程序中窃取焦点,因为它太令人讨厌了,微软终于听取了他们的用户的意见并阻止了它
SetFocus
可用于在单个应用程序中更改焦点,或在有焦点时放弃焦点,但不用于获取焦点。考虑使用<代码> Flash窗口> 而不是更多的信息:您是从控制台应用程序本身还是从另一个应用程序中寻找一种方法来实现这一点?