相关疑难解决方法(0)

.NET和本机C ++应用程序之间进行通讯的最佳方法

如标题中所述-目前,我有两个应用程序。一种是.NET,winforms,另一种是本机C ++。两者都可以一起工作,并且必须进行通信(从C ++到.NET,从.NET到C ++),. NET应用程序从C ++应用程序启动。当前,通信是通过将数据写入文件并发送后消息来通知C ++应用程序已写入数据来完成的。尽管可以,但是我认为这不是最好的方法。因此,我想问您,您推荐什么是最好的方法。我正在考虑编写围绕.NET的CLI包装程序,以将其绑定到C ++中。与将数据写入文件相比,使用此类包装是否有任何缺点?

--------更新--------

我忘了补充说,这两个应用程序始终在同一台机器上运行。该解决方案应在Windows XP,Win7,Win8上运行

- - - -结论 - - -

非常感谢您的回答,它们都非常有帮助。很好地概述了进程间通信技术之间的差异,该网站提供了Microsoft Windows上 Furkan Omay官方支持的进程间通信方法的答案。但是,像该网站上的McAfee 这样的防病毒程序似乎存在问题。在某些情况下,这可能是一个巨大的问题。根据使用C ++ / Cli的知识,我喜欢Drax的回答,谢谢。我也看不到使用包装器的任何缺点。一个很好的教程在这里

.net c++ windows winforms

3
推荐指数
2
解决办法
1989
查看次数

管道通信C++

我正在编写两个必须通信的litle c ++应用程序.第一个将是一项服务,每隔一段时间,必须提醒用户一些事情.由于服务无法创建窗口,我将应用程序设计为两个独立的可执行文件.

该服务将使用通知程序进行通信.

该服务仅需要向通知器发送文本消息,该通知器将在系统托盘上显示气球.

我试图使用命名管道,我想我几乎在那里,但不是那里.到目前为止我所拥有的是:

在通知者方面:

  m_hInPipe = CreateNamedPipe(L"\\\\.\\pipe\\nhsupspipe", PIPE_ACCESS_INBOUND,
                PIPE_WAIT, 1, 1024, 1024, 60, NULL);
Run Code Online (Sandbox Code Playgroud)

意思是我创建了一个名为nhsupspipe的管道,一个入站管道.

在服务方面:

if (!WriteFile(m_hOutPipe, "My message to the user?", 23, &escritos, &o))
     std::cout << "ERROR: " << GetLastError();
Run Code Online (Sandbox Code Playgroud)

调试我可以看到一切正常,管道已创建,WriteFile将我的23个字节写入管道.

我的问题是:如何在通知器方面能够读取这些字节?是否有任何消息发送到该流程?我是否必须为管道编写处理程序?什么?

c++ windows pipe

2
推荐指数
1
解决办法
7187
查看次数

标签 统计

c++ ×2

windows ×2

.net ×1

pipe ×1

winforms ×1