举例. 现在我同时打开了 软件A, 软件B,
软件A 是已经做好的软件或是游戏~ 不是我自己编写的.
软件B 是我自己现在要做的软件~
如何实现 在两个软件同时打开的情况下,
关闭掉软件A, 那么软件B也会自动关闭.
关闭掉软件B, 强制结束掉软件A的进程!
所谓的B自动关闭,其实就是B执行结束。因此来说,在B中只要判断A是否存活。A若存活,则继续执行。A若不存活,则结束程序,即可。
建议由B来打开A,这样B可以wait A的进程。当进程结束时,B自己退出即可。
举例
using System;
using System.Diagnostics;
using System.Threading;
namespace Q185904
{
public class Worker
{
private Process m_p;
public Worker(Process p)
{
this.m_p = p;
}
// This method will be called when the thread is started.
public void DoWork()
{
while (!_shouldStop)
{
Console.WriteLine("worker thread: working...");
if (Console.KeyAvailable)
break;
}
Console.WriteLine("worker thread: terminating gracefully.");
if (!this.m_p.HasExited)
this.m_p.Kill();
}
public void RequestStop()
{
_shouldStop = true;
}
// Volatile is used as hint to the compiler that this data
// member will be accessed by multiple threads.
private volatile bool _shouldStop;
}
internal class Program
{
private static void Main(string[] args)
{
var p = Process.Start("C:\\Windows\\notepad.exe");
p.WaitForInputIdle();
var w = new Worker(p);
var t = new Thread(w.DoWork);
t.Start();
if (!p.HasExited)
p.WaitForExit();
w.RequestStop();
}
}
}
举例. 现在我同时打开了 软件A, 软件B,
软件A 是已经做好的软件或是游戏~ 不是我自己编写的.
软件B 是我自己现在要做的软件~
如何实现 在两个软件同时打开的情况下,
关闭掉软件A, 那么软件B也会自动关闭.
关闭掉软件B, 强制结束掉软件A的进程!
如果写程序B的话,可以定时用Findwindow打到A程序,或者用列举windows所有进程(http://www.cnblogs.com/xiaojinma/archive/2012/12/06/2805583.html)
来判断A程序是否还存在,如果不存在,就退出当前程序。
如果B程序退出,可以用TerminateProcess来终止A进程
关闭掉软件B, 强制结束掉软件A的进程! 这个容易实现,直接根据A的名称Process.Kill掉进程即可。
关闭掉软件A, 那么软件B也会自动关闭. 这个比较困难,除非你能够修改A的源码或者运用其它特殊技术(自己思考)模拟实现。
最简单的是再写一个demon进程,它负责轮询判断ab是否存在,发现一个不存在就关闭另一个。
这个demon可以写成服务。