返回首页

在我的C#应用​​程序中,我去检查,如果另一Ç#应用程序正在运行,如果是这样,我想打电话到它,并打开一个窗口,在该应用程序。

任何人都知道,如果这是可能的,如果是这样,如何​​?

谢谢

回答

评论会员:SAKryukov 时间:2012/02/06
电话吗?当然没有。呼叫的整个概念是只适用于一种方法。嗯,属性,也认为,如果一个属性是getter或setter。

然而,你想要的功能是完全可能的。

首先,你应该认真地想一想,如果你真的想要一个单独的进程与沟通。这种方法有很多问题。作为另一个应用程序是在C#中,认为有关使用,而不是作为类库和运行这个库的方法,在宿主进程。如果你需要这种方法在并行工作,可以在不同的线程运行一些库代码,但仍然在同一进程中。这是更好的百万倍。单独的进程是孤立的,它们不是主要设计集成在一起。因此,运行在一个单一的过程中的代码,绝对是你可以做到最好。

没有假设,你不能这样做。也许你不拥有这个应用程序的源代码,可用的代码是不适合作为一个库(是的,你可以使用任何集会。EXE应用程序编译成。NET库)。同时考虑到不同的进程是孤立的,但你仍然需要它们之间的通信,你需要什么?的权利,只有一件事:IPC(进程间通信)

有不同的方式做的IPC。可能是你最好的赌注是使用WCF,自主办的"另一个应用程序",古典远程也可以做的工作。在这种情况下,从您的主机进程的角度来看,通信可能看起来酷似一个方法调用,但实际上它会调用WCF或远程对象代理的方法。如果你的进程是在同一台机器上,可以传输通道的基础上命名管道,这样的通道也被称为工控机。其他合适的方法包括TCP套接字(更好地使用的TcpListener / TcpClient的),直接使用命名管道,以及更多。我仍然认为WCF是更好的。

从这里开始:

{A},
{A2}

在CodeProject上:
{A3的}
{A4纸},
{A5的}
{A6的}

[编辑]

看到一个进程的状态,使用的System.Diagnostics.Process类,{A7}]

mdash;的SA
评论会员:埃斯Harlinn 时间:2012/02/06
要在每个进程加载的DLL,其名称添加到AppInit_DLLs值在以下注册表项:

HKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ WINDOWS NT \ CURRENTVERSION \ WINDOWS

每当一个进程启动时,系统加载在新开工的过程中指定的。dll,然后调用其入口点函数。

这让你可以"附加",现有的方案,以创建代码。

这可以使用或误用,DLL已是本地的。

如果您有其他应用程序的源代码,公开的功能,使用COM互操作,远程时,WCF,或任何其他的进程间通信技术,你可能鳍为宜。

最好的问候
埃斯Harlinn:srikanthgaddala:嗨,
是的,你可以什么需要做的是u必须使用命名管道来acheive。
有写在申请和使用在另一个C#应用程序ü管道的名称,可以做到这一点。
我只是建议的做法......我在一个应用程序相同的前......
所有最好的