程序之間通訊的幾種方法:
在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);
}
注意這裡傳送訊息的函式:public static void sendmessage(string destprocessname, int msgid, string strmsg),只能傳送乙個msgid和乙個strmsg, 接收方只接收了strmsg
using system;
using system.runtime.interopservices;
using system.diagnostics;
namespace speeding.util
/** /// 本類封裝了一些程序間通訊的細節
///
public class winmessageutil}}
/** /// 接收訊息,得到訊息字串
///
/// system.windows.forms.message m
/// 接收到的訊息字串
public static string receivemessage(ref system.windows.forms.message m)
}
Windows 系統下如何使用gcc
用到mingw minimal gnu on windows 工具。執行 download mingw get setup.exe 注意安裝的目錄 修改環境變數 選擇計算機 屬性 高階系統設定 環境變數,在系統變數中找到 path 變數,加入 min gw的安裝目錄,例如 c mingw bin 安...
Python實現在Windows平台修改檔案屬性
如果要修改windows上一系列檔案的屬性,比如設定某些檔案為唯讀,歸檔,隱藏檔案等。pywin32的win32api模組提供了乙個setfileattributes函式,正好可以用來完成這種任務.來做乙個實驗,正常建立檔案是可以寫的,如果設定了檔案為唯讀檔案,就寫不了了opfyg。import o...
如何在Windows系統下查殺Linux惡意檔案
如何在windows系統下查殺linux惡意檔案。在對linux系統應急處理時,常需要查殺系統中是否存在惡意檔案,但純手工檢查的話,難免會有遺漏,雖然在linux系統中也有一些專門門的查殺工具,但終究維護的人少,效果也不是非常明顯,但如果先使用windows平台下的防毒軟體,去查殺linux檔案的話...