我正在编写一个联系人管理程序。我知道如何读取命令行参数,并根据发现的内容执行不同的方法。
例如,program.exe "John Doe"
将启动该程序的新实例并打开它找到的名为John Doe的第一个联系人,program.exe -s John
将启动该程序的新实例并搜索名为“ John”的联系人,而仅运行即可program.exe
打开一个新的实例。带有空白搜索屏幕的程序。
但是,我只想运行该程序的单个实例。因此,当另一个程序调用时program.exe "John Doe"
,如果已经有一个进程在运行,则参数将传递给该进程并切换到新的搜索,而不是打开新的窗口。
我知道这需要寻找以前运行的进程和进程间的通信,但是我在.Net中都做不到很多,并且在正确的方向上入门或找到关于特定主题的任何好的教程都遇到了麻烦。
Visual basic dll 有一个 WindowsFormsApplicationBase,它有 StartupNextInstance 事件,您可以在其中获取第二个实例的参数,第二个实例可以在检测到其他实例时自行终止。
这已经被问到了C#:如何 - 接受新参数的单实例应用程序?