gpt4 book ai didi

c# - 隐藏窗口时如何获取 Process.MainWindowHandle

转载 作者:行者123 更新时间:2023-11-30 13:05:25 27 4
gpt4 key购买 nike

我有一个 WPF 应用程序。当它启动时,我需要检查是否已经有一个实例在运行。如果是这样,那么我将使用 PInvoke“显示”正在运行的实例:

SendNotifyMessage(proc.MainWindowHandle, ShowYourself, IntPtr.Zero, IntPtr.Zero);

其中 proc 是正在运行的另一个实例

问题是,当 proc 隐藏在系统托盘中时。 MainWindowHandle 为 0。我进行了大量搜索,但没有找到 MainWindowHandle

有人知道吗?

谢谢

最佳答案

最好的方法是使用跨进程处理程序,例如互斥量。 Here是一个很好的例子。还有一点,如果你想从另一个实例打开隐藏的应用程序,你应该在两个应用程序之间进行客户端-服务器通信。已经运行的应用程序应该是服务器并且应该监听命令变得可见。这很简单,但要花很多时间才能理解。

更新: Here我提交了一个简单的库,允许您控制应用程序实例。这很简单,但我留下了一些评论

ApplicationSingleInstance - 它是控制应用程序实例的主要类应用程序启动时检查属性 IsInstanceAlreadyRun,如果为真,则调用 StartServer() 方法,如果为假,则调用 NotifyAboutNewInstance() 方法。您还应该订阅 NewApplicationInstanceLoaded 事件以了解新的应用程序实例是否已启动。不要忘记取消订阅事件并处理 ApplicationSingleInstance 的实例

更新:我已经在 codeproject 上发布了这个库和解释

关于c# - 隐藏窗口时如何获取 Process.MainWindowHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036860/

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