AllowSetForegroundWindow

AllowSetForegroundWindow

有没有办法撤消对AllowSetForegroundWindow(ASFW_ANY)的调用?

大图:

  • 我希望一次运行exe的单个进程。
  • 为了实现它,进程之间使用命名管道相互通信;如果已经存在进程,则必须将其窗口置于最前面。
  • 为此,最新进程必须使用现有进程ID设置AllowSetForegroundWindow()
  • 我不想获取进程ID(对不起,我很懒惰),所以我打算做的是:1.使用ASFW_ANY调用AllowSetForegroundWindow() 2.如果万一发生错误,请撤消对AllowSetForegroundWindow()的调用,以便其他人无法从我的过程中窃取焦点。

  • 简而言之,我想允许其他进程仅在特定时间范围内从我身上夺走焦点...

    任何人之前都遇到过类似的问题,并且找到了解决方法?

    另外,如果您有更好的建议/替代方法,请告诉我...

    最佳答案

    According to the documentation时,目标进程(大概包括“any”)将在您下次调用AllowSetForegroundWindow时失去从您那里获得焦点的能力。

    换句话说,听起来您一次只能激活一个这样的许可。

    因此,您应该可以通过使用一些不存在的ID或您自己的进程ID进行调用来取消权限。这是理论,但是,我还没有测试过。

    我个人只是通过命名管道发送目标进程ID。

    关于c++ - 撤消/重置AllowSetForegroundWindow()调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10013624/

    10-11 00:35