如何从 C# 应用程序远程调用另一个进程方法

Posted

技术标签:

【中文标题】如何从 C# 应用程序远程调用另一个进程方法【英文标题】:How to remote invoke another process method from C# application 【发布时间】:2013-11-28 17:25:58 【问题描述】:

我有一个 C# 应用程序,我想从我的应用程序调用一个函数名称,例如 SendChatMessage(string message, int userid)。但是这个函数属于我计算机上另一个正在运行的基于客户端/服务器的应用程序。我找不到如何做到这一点的方法。

我尝试使用反射库进行此操作,但失败了。希望有人能帮我解决这个问题。

感谢您的帮助。

【问题讨论】:

您是控制其他程序中的源代码,还是要将命令注入到进程中?然后您可能必须使用 DLL 注入来“控制”其他应用程序。 您拥有其他应用程序吗?其他应用程序是否旨在允许其他进程调用方法? Using c# to call a function from another process 的可能重复项 其他基于 32 位客户端/服务器的 Directx 应用程序。我无法控制源代码。 【参考方案1】:

欢迎来到Inter-process communication 的世界。有很多方法可以做到这一点,比如命名管道、RPC、共享内存等。

简而言之,您的程序在进程中运行。另一个程序正在另一个进程中运行。这就像你父亲试图向隔壁男孩问什么。这些进程可以相互通信并调用彼此的方法,或者使用彼此的数据。但不是武断的或理所当然的。他们需要一些通用的通信标准。

看看这些问题:

What is the simplest method of inter-process communication between 2 C# processes?

What is the best choice for .NET inter-process communication?

What is the easiest way to do inter process communication in C#?

【讨论】:

感谢您的回答,但如果我可以控制其他进程程序代码,则此答案正确。但是我没有控制其他程序的源代码。【参考方案2】:

如果您无法控制目标进程中的代码,那么听起来您需要使用 DLL 注入的方法将代码注入其中。

如果调用进程不需要确认或响应;然后注入执行方法调用代码的代码可能会浮出水面,但如果需要响应,那么您可能需要在注入的代码中实现某种形式的进程间通信。

【讨论】:

以上是关于如何从 C# 应用程序远程调用另一个进程方法的主要内容,如果未能解决你的问题,请参考以下文章

手写简易版rpc框架,理解远程过程调用原理

手写简易版rpc框架,理解远程过程调用原理

手写简易版rpc框架,理解远程过程调用原理

使用 c# 从另一个域访问远程目录

如何从http调用获取调用者信息到c#中的另一个api

从 C# 启动远程进程的问题