0

对于几乎相同的问题,我已经看到了一些答案,但是没有 C# 代码可以帮助我理解。

我有一个注入内存的 C++ .DLL 文件。虽然,此 DLL 只是从应用程序中获取信息,并从 C# .exe 中获取信息。

C# exe 信息每秒都会变化,而 C++ 信息只会变化一次或两次。

如何在两个正在运行的应用程序之间创建共享变量,以及如何读取/写入它?

谢谢!

4

2 回答 2

1

如果您想构建一个可靠的解决方案,您应该使用以下内容:

  1. 从 C# 到 C++ 函数的调用。保持参数类型尽可能简单。任何 C# 线程都可以进行这些调用。
  2. 启动您自己的 C++ 线程,这些线程仅读取/修改 C++ 数据并仅调用 C++ 方法和函数。
  3. 使用 Windows 内核对象进行同步和其他类似的东西。当一侧发出事件信号而另一侧等待它时,这很好。

其他类型的交互也是可能的,但我不鼓励使用它们。这些附加类型并不简单,也没有明确定义,包含警告等。上面的 3 种方法允许构建复杂的应用程序。

要调用 C++ 函数,请添加到您的程序集中:

[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);

这告诉 User32 具有MessageBeep您要调用的入口点。之后,您可以将其用作任何其他功能:

MessageBeep(0);

以类似的方式,您可以GetProcAddress在自己的 DLL 中调用或任何其他入口点。

于 2013-07-26T02:58:28.317 回答
0

我将使用命名管道,这样两个进程就可以轻松通信!(C# 服务器和 C++ 客户端)

感谢大家的帮助!

于 2013-07-26T19:44:10.907 回答