寻找WPF陡峭的学习曲线.
在好的Windows窗体中,我只是覆盖WndProc,并在它们进入时开始处理消息.
有人能告诉我如何在WPF中实现同样的事情吗?
我有一个应用程序,在后续启动时检测是否已经运行了同名的进程,如果是,则激活正在运行的应用程序窗口,然后退出.
问题是主窗口可能被隐藏(只有通知区域图标可见),因此没有窗口句柄.
在启动时,前一个实例的MainWindowHandle属性为0,所以我无法发送ShowWindow或PostMessage.
有没有办法可以发送一条可以被正在运行的应用程序截获的消息,从而允许它显示其主窗口?
该应用程序是用C#编写的,我正在使用以下代码实现此目的.
[STAThread]
static void Main()
{
bool createdNew = true;
using (Mutex mutex = new Mutex(true, "MyMutexName", out createdNew))
{
if (createdNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
else
{
Process current = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcessesByName(current.ProcessName))
{
if (process.Id != current.Id)
{
Interop.WINDOWINFO pwi = new Interop.WINDOWINFO();
IntPtr handle = process.MainWindowHandle;
var isVisible = Interop.GetWindowInfo(handle, ref pwi);
if (!isVisible)
{
MessageBox.Show(Constants.APP_NAME + " is already running, check …Run Code Online (Sandbox Code Playgroud)