c# - 如果 SetForegroundWindow 和 ShowWindowAsync 不起作用,我该如何设置前景窗口?

标签 c# .net windows winapi

它是一个 c# winform 应用程序。我已将 ShowInTaskbar 属性设置为 false,因为我不希望程序出现在任务栏中,但像这样的 SetForegroundWindow 或 ShowWindowAsync 不起作用。

最佳答案

Raymond Chen 在他的经典文章 Foreground activation permission is like love: You can't steal it, it has to be given to you 中解释了 Windows 中围绕前台激活的规则。 .粗略地说,您不能使用像 SetForegroundWindow 这样的调用来窃取前台激活,您需要从已经具有前台激活的进程中获得它。

在您的情况下,当您设置了在任务栏中显示时,任务栏能够为您的应用程序提供前台激活,因为当您单击窗口的任务栏图标时,这将(短暂地)为任务栏提供激活.如果您没有在任务栏中显示激活,则需要找到一种方法让应用程序提供给您。一种明确允许的方法是使用通知窗口(托盘)图标。

关于c# - 如果 SetForegroundWindow 和 ShowWindowAsync 不起作用,我该如何设置前景窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741514/

相关文章:

c# - 如何获取请求的默认文档?

c# - System.InvalidOperationException : 'Unable to resolve service for type ' Microsoft. AspNetCore.Hosting.IHostingEnvironment'

域组的 Oracle 的 Windows 身份验证

windows - 使用批处理文件复制文件

c# - 保持两个线程之间的 bool 值同步

c# - C# 中的 Konami 代码

c# - WCF:没有 channel 主动监听

c# - 如何防止暴露任何其他接口(interface)方法?

c# - BitConverter 类中 IsLittleEndian 的用例是什么?

使用 Linux 命令的 Python 脚本不能在 Windows 上运行。有什么办法让它与操作系统无关吗?