gpt4 book ai didi

c++ - 子进程窃取焦点。如何在不打扰用户的情况下取回它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:34 25 4
gpt4 key购买 nike

我从控制台应用程序创建了子进程

CreateProcess(NULL, command, NULL, NULL, TRUE, 0, NULL, NULL, &in, &out);

在哪里

  • command 是我运行 pvw32 img.jpg 的应用程序的命令行(pictView 显示一些图像)。
  • in 是一个 STARTUPINFO 结构(我尝试了 STARTF_USESHOWWINDOW 标志,但运气不好,pictView 窃取了它的一些进程的焦点)

我试着给 pictView 一些时间,然后请将焦点收回

Sleep(1000);
SwitchToThisWindow(hwnd,TRUE);

我获得了焦点(光标在我的控制台中再次闪烁),但是任务栏中的图标闪烁了几次并且在我按下 Alt+Tab 之前不允许输入。

我也尝试过设置z-order,最小化启动pictView,甚至暂停它,但他就是不想轻易放弃。重新获得焦点的唯一方法是杀死 pictView。

有什么方法可以在不使用 Alt+Tab 打扰用户的情况下重新获得焦点吗?

注意:simpView 没有焦点窃取问题,但出于性能原因,我想继续使用 pictView。

最佳答案

正如 Remy Lebeau 指出的那样,SetForegroundWindow()概述了将前景设置为前景的要求。 pictView玩脏了,所以我used dirty tricks too :

LockSetForegroundWindow(LSFW_LOCK);

从控制台应用程序执行阻止 pictView 窃取其焦点。现在一切顺利。

关于c++ - 子进程窃取焦点。如何在不打扰用户的情况下取回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27571988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com