3

请帮忙,我如何组织流程-流程数据交换(在 Windows 中,如果重要的话)?

我有process1.exe哪些process2.exe带有一些命令行参数的调用。我想跟踪process2from的“进度” process1(例如,某个int值)。它(该int值)可以从process1永久或每 X 毫秒访问 - 没关系。

任何解决方案都会有用:WinApi 或 Qt。

谢谢大家!所有答案都非常有用!:) 非常感谢!!

4

5 回答 5

5

奥托:

  • 标准输入/标准输出重定向
  • 命名管道 (CreateNamedPipe)
  • 匿名管道 (CreatePipe)
  • 套接字(套接字、连接、绑定)
  • 共享内存(CreateFileMapping、MapViewOfFile)
  • Windows 消息(例如 WM_APP)

选择一个 - Windows 消息或共享内存可能更容易。

于 2011-03-08T00:22:32.403 回答
4

这里有很多选择:

  1. 您可以重定向 process2 的标准输出并让它输出更新,无论您喜欢什么频率
  2. 如果标准输出用于其他用途,您可以在进程之间使用命名管道
  3. 您还可以使用命名共享内存,这将需要更少的开销并且可能更容易实现(缺点是您可能还需要进行跨进程同步)
  4. 如果 process1 正在运行消息泵,那么您也可以使用普通的 Windows 消息(查看 WM_COPYDATA)
于 2011-03-08T00:17:24.717 回答
3

有几种方法:

  • 插座
  • 留言
  • 共享内存(文件)

问题是 Process2 将进行广播,而 Process1 将在监听。Process1 需要知道 Process2 何时完成以及完成百分比。

我相信套接字会是更好的途径,但这取决于应用程序、开发计划和概念的熟悉程度。

于 2011-03-08T00:19:35.570 回答
1

您可以简单地使用 Windows Api (SendMessage) 发送消息。

于 2011-03-08T00:16:14.170 回答
1

到目前为止提供的选项中一个明显的遗漏是 COM。我期待通常会出现“COM 是垃圾”的回应,但根据我的经验,情况并非如此。

于 2011-03-08T01:39:38.833 回答