注意這裡傳送訊息的函式:public static void sendmessage(string destprocessname, int msgid, string strmsg)
只能傳送乙個msgid和乙個strmsg, 接收方只接收了strmsg,我的專案中已經夠用了,你如果需要讀msgid,還需要改一下。客戶端**請參考csdn上的原文自己寫吧。
/**/
/*程序之間通訊的幾種方法:
在windows程式中,各個程序之間常常需要交換資料,進行資料通訊。常用的方法有
(1)使用記憶體對映檔案
(2)通過共享記憶體dll共享記憶體
(3)使用sendmessage向另一程序傳送wm_copydata訊息
比起前兩種的複雜實現來,wm_copydata訊息無疑是一種經濟實惠的一種方法.
wm_copydata訊息的主要目的是允許在程序間傳遞唯讀資料。windows在通過wm_copydata訊息傳遞期間,不提供繼承同步方式。
sdk文件推薦使用者使用sendmessage函式,接受方在資料拷貝完成前不返回,這樣傳送方就不可能刪除和修改資料:
這個函式的原型及其要用到的結構如下:
sendmessage(hwnd, wm_copydata, wparam, lparam);
其中:wm_copydata對應的十六進製制數為0x004a
wparam設定為包含資料的視窗的控制代碼。
lparam指向乙個copydatastruct的結構:
typedef struct tagcopydatastruct
copydatastruct;
該結構用來定義使用者資料。
具體過程如下:
首先,在傳送方,用findwindow找到接受方的控制代碼,然後向接受方傳送wm_copydata訊息。
接受方在defwndproc事件中處理這條訊息。由於中文編碼是兩個位元組, 所以傳遞中文時候位元組長度要搞清楚。
protected override void defwndproc(ref system.windows.forms.message m)
base.defwndproc(ref m);
} */
using
system;
using
system.runtime.interopservices;
using
system.diagnostics;
namespace
speeding.util
/**/
//////
本類封裝了一些程序間通訊的細節
///public
class
winmessageutil}}
/**/
//////
接收訊息,得到訊息字串
//////
system.windows.forms.message m
///接收到的訊息字串
public
static
string
receivemessage(
refsystem.windows.forms.message m)}}
electron呼叫C 應用程式實現串列埠通訊
最近轉入零售行業開發了一系列產品,包含便利店收銀軟體 會員系統 鏈系統。為了追趕潮流,收銀軟體使用了electron平台開發,介面效果 開發效率確實不錯 但是涉及到串列埠通訊時遇到了麻煩,electron不能直接使用node.js的串列埠模組。網上有一些文章推薦編譯electron原始碼來實現串列埠...
關於C 中vector的兩個小tips分享
前言 本來這篇文章標題我想起成 關於 vector 的兩個小坑 後來想想,其實也不算是坑,還是自己對原理性的東西理解的沒做那麼透徹。工作中遇到的很多問題,後來歸根到底都是基礎不牢靠。vector 擴容 這個問題很經典了,但還是不小心踩到。有乙個需求是要對目標元素進行複製,而目標元素集合是儲存在 ve...
VB分布式應用程式開發隨記 繼承的兩個方面
繼承是一種以實體間的 是 關係為基礎的物件導向的概念。到目前為止,我已使用術語 實現繼承 來代替使用更通用的術語 繼承 這是因為使用子類擴充套件超類是唯一一種平衡 是 關係的方法。當類實現介面時,它還將利用 是 關係。例如,如果類 cbeagle 實現介面 idog,那麼說獵犬 是 小狗是正確的。您...