gpt4 book ai didi

c# - 当 ShowInTaskbar = false 时将另一个进程窗口置于前台

转载 作者:IT王子 更新时间:2023-10-29 03:59:44 25 4
gpt4 key购买 nike

我们只想在任何时候运行我们应用程序的一个实例。因此在启动时它会查看应用程序是否正在运行,如果正在运行,它会在主窗口上调用 SetForegroundWindow

这一切都很好......大部分......

当我们的应用程序启动时,它将显示启动画面和登录表单。这两种形式都有 ShowInTaskBar = false

因此,如果您尝试在显示登录表单时启动应用程序的另一个副本,则该登录表单不会被带到前台!

特别是当用户在任务栏中也看不到任何东西时,他们所认为的只是该应用程序是无用的并且无法启动。没有迹象表明有另一个实例在运行。

有什么办法可以解决这个问题吗?

最佳答案

好了,代码在这里。即使 ShowInTaskBarfalse,您也应该能够将其置于最前面。

    [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);

[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

public static void bringToFront(string title) {
// Get a handle to the Calculator application.
IntPtr handle = FindWindow(null, title);

// Verify that Calculator is a running process.
if (handle == IntPtr.Zero) {
return;
}

// Make Calculator the foreground application
SetForegroundWindow(handle);
}

注意:您应该FindWindow 使用窗体的类而不是名称,因为初始屏幕窗体有时没有标题甚至控制框。使用 Spy++ 进行更深入的挖掘。

在启动时使用 FindWindow。我认为这就是您想要做的 - 在加载主窗体时将启动画面放在前面。

关于c# - 当 ShowInTaskbar = false 时将另一个进程窗口置于前台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2636721/

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