傳送方需要呼叫兩個系統api:sendmessage與findwindow。
非託管定義如下:
[dllimport
("user32.dll"
,entrypoint
="sendmessage"
)]private
static
extern
intsendmessage
(int
hwnd
,//目標視窗的handle
intmsg
,//訊息
intwparam
,//第乙個訊息引數
refcopydatastruct
lparam
//第二個訊息引數);[
dllimport
("user32.dll"
,entrypoint
="findwindow"
)]private
static
extern
intfindwindow
(string
lpclassname
,string
lpwindowname);
還有乙個資料結構:
public
struct
copydatastruct
wm_copydata訊息:
const
intwm_copydata
=0x004a;
傳送訊息**如下:
intwindow_handler
=findwindow
(null
,@ "接收視窗"
);if
(window_handler!=0
) 接收方需要上面的那個資料結構的定義與訊息常量的定義,然後重寫主視窗的defwndproc方法:
protected
override
void
defwndproc
(ref
system
.windows
.forms
.messagem)
} 別忘了引用命名空間:system.runtime.interopservices;
程序篇 程序間通訊《訊息佇列》
訊息佇列就是訊息的鍊錶,存放在核心中並由訊息佇列識別符號表示。訊息佇列提供了乙個從乙個程序向另乙個程序傳送資料塊的方法,每乙個資料塊都可以被認為是有乙個型別,接收者接受的資料塊可以有不同的型別。但是和管道類似的是,它有乙個不足就是每個訊息的最大長度是有上限的 每個訊息佇列的總的位元組數 系統上訊息佇...
C 程序間通訊 訊息佇列
訊息佇列是訊息的鏈結表,包括posix訊息佇列system v訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能承載無格式位元組流以及緩衝區大小受限等缺點。訊息佇列a include include include ...
程序間的通訊 訊息佇列
訊息佇列 佇列是先進先出,把寫入的訊息按佇列的方式排列,然後讀取訊息時按佇列性質讀取,或按指定的型別號讀取 實現訊息佇列的步驟 1.獲取key值,2.建立訊息佇列,取得訊息佇列的id 3.向訊息佇列裡寫入訊息 4.讀取訊息佇列的訊息 5.刪除訊息佇列 讀端 include include inclu...