【发布时间】:2015-03-28 23:46:17
【问题描述】:
我正在 Caliburn.Micro 中编写一个 WPF 应用程序,该应用程序需要在关闭时最小化到任务栏。这部分很容易使用 Hardcodet TaskbarIcon 控件。这个应用程序也应该是我使用全局互斥锁的单实例应用程序。
我遇到的问题是:如果应用程序的另一个实例正在尝试启动,我想最大化任务栏中的当前实例。所以检查互斥锁,如果它无法获得锁,找到另一个实例并从任务栏最大化它并自行关闭。我不能做一个 user32.dll ShowWindow,因为它在任务栏中时没有窗口句柄可以抓取。
理想情况下,我希望从打开实例到现有实例执行 SendMessage,并告诉它最大化自身,但我无法弄清楚如何使用 Caliburn.Micro 处理 SendMessage 事件。不幸的是,这是我能想到的唯一解决方案,我不知道该怎么做。
【问题讨论】:
-
听起来你需要进行进程间通信。也许这个 SO 问题会有所帮助:What is the simplest method of inter-process communication between 2 C# processes?。或者这个:How to remote invoke another process method from C# application.
标签: c# wpf mvvm caliburn.micro