2013-02-09 60 views
0

我們將在Visual Studio 2010中同時運行兩個C++的Win32控制檯程序,我們希望能夠從一個到另一個發送消息(字符串)。程序1向程序2發送消息並等待程序2發回消息。一旦程序2發送回覆,它現在將等待來自程序1的下一條消息而不退出。發送從一個C++程序到另一個字符串並等待迴應

+0

同時運行的應用程序?或者應用#1是否可以啓動應用#2? – 2013-02-09 00:12:24

+0

看看使用套接字?如果兩個程序始終在同一臺計算機上,則可以使用共享內存。 – Cameron 2013-02-09 00:12:46

+0

瞭解更多關於[IPC](http://en.wikipedia.org/wiki/Inter-process_communication) – mlt 2013-02-09 00:14:56

回答

2

有許多不同的方式來交換在同一臺PC上運行多個應用程序之間的數據。它們屬於「互操作性通信」這個通用術語。使用您最熟悉的任何IPC機制 - 文件,註冊表,套接字,命名管道,MailSlots,ActiveX,遠程過程調用,共享內存或WM_COPYDATA窗口消息。他們都有其優點和缺點,所以你需要自己決定哪一個最適合你的實際需求。

+0

感謝。我們看了一下'WM_COPYDATA',並在一定程度上理解了它。你能解釋'SendMessage(..)'和'GetMessage'是如何工作的嗎?我如何發送字符串?我能夠使用'FindWindow'連接並找到正確的窗口' – CarbonD1225 2013-02-09 01:08:59

+0

'COPYDATASTRUCT cds; cds.dwData = AUniqueId; cds.lpData =「我的字符串」; cds.cbData = strlen((char *)cds.lpData); SendMessage函數(hOtherAppWnd,WM_COPYDATA,(WPARAM)hThisAppWnd,(LPARAM)&cds);' – 2013-02-09 01:13:49

+0

可以請你澄清'SendMessage'應怎樣其它程序來接收這個'hThisAppWnd'的使用情況如何?我們使用'GetMessage'如下所示: 'MSG msg; \t而(的GetMessage(味精,NULL,0,0)> 0) \t { \t \t的std :: COUT << 「得到的消息」 <<&MSG <<的std :: ENDL; \t}'' – CarbonD1225 2013-02-09 01:19:14

相關問題