簡體   English   中英

C++ 如何讓兩個程序通信?

[英]C++ How to make two programs communicate?

問題:讓兩個程序(都在同一台計算機上運行)進行通信和交互的最佳方式是什么? (Windows、C++)

理論情況:

  1. 在 Windows PC 上,我有一個第 3 方軟件,你可以用來做一些事情(比如打開/編輯/保存文件……這並不重要)。 這個第 3 方軟件有一個可用的C++ SDK ,因此您可以為其開發插件。

  2. 我使用 GUI 開發了一個單獨的獨立Windows C++ 程序(很可能使用 Qt)。 該程序與第 3 方軟件在同一台 Windows 計算機上運行。 該程序將充當遙控器或發送者。

  3. 使用第 3 方軟件的 SDK,我為第3 方軟件開發了一個小插件 該程序充當接收器,因此我的 Qt GUI 可以發送該插件將接收的命令,從而相應地遠程控制第 3 方軟件

因此,對於一個基本示例,我可以在獨立 GUI 上按下一個按鈕,該按鈕將與插件通信,然后在 3rd 方軟件中打開指定文件。

我本質上要尋找的是開發獨立的軟件,該軟件可以與我為第 3 方軟件開發的插件來回通信。

最好的方法是什么? 我真的不知道從哪里開始或看什么。 是否有常見的 C++ 庫可以使這類事情變得容易?

我對 C++ 比較陌生,對 ZE8801102A40AD89DDCFDCAEBF008D25Z 比較陌生,所以請嘗試詳細說明。 請不要只說“使用共享內存”或類似的話,因為我不知道你在說什么。

該程序不會在單獨的計算機上運行,因此我認為這里不需要網絡東西。

我正在考慮的一些問題:

  1. 如果用戶同時打開了多個第 3 方軟件副本怎么辦。 我的獨立軟件如何知道與哪一個通信?

  2. 如果我已經運行了獨立軟件並打開了第 3 方軟件,插件是否必須以某種方式注冊或找到我的獨立軟件才能與之通信?

  3. 如果我已經運行了第 3 方軟件,然后打開我的獨立軟件,它是否必須掃描插件以查看其是否正在運行或如何找到它?

任何幫助將不勝感激。 我已經對 SO 的主題進行了搜索,但沒有看到很多關於 C++ 的問題,而且他們中的大多數都沒有很多答案,或者不是很清楚,或者沒有具體提到與插件的軟件通信第 3 方程序。

有許多優點和缺點的解決方案。 您將不得不對每個內容進行一些閱讀,以找出最適合您的內容。 沒有適合所有人的解決方案

這是一個很好的起點http://msdn.microsoft.com/en-us/library/aa365574(v=vs.85).aspx

老實說,我很可能會采用基於網絡的方法。 它將獨立軟件和插件解耦,因此,只要通信協議匹配,您就可以輕松地將插件掛接到任意數量的其他實用程序或腳本中。

所以,我可能會開發插件來充當服務器,接收命令並響應狀態(嘿,如果你真的想的話,你甚至可以遵循 HTTP 標准;))。

如果你想進行跨機器通信,它是免費的:)

當然,根據軟件和使用情況,我會加密通信。

如果您使用的是 Qt,我相信它有插件的概念:如何創建 Qt 插件

否則,COM 工作正常。 對於 C++,我會使用 ATL 庫,但 Qt 中也支持 COM。

如果你想 go 更底層,我會使用 sockets 或命名管道(因為你正在使用 Windows)

我會 go 為 sockets 建立遠程控制應用程序和服務器應用程序之間的通信。

通過在 SO 上搜索這些關鍵字,您將找到大量信息: IPCRPCsockets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM