應用程式與DLL的通訊

2021-04-20 00:59:28 字數 1008 閱讀 5749

最近乙個星期,一直被乙個問題困惑著,就是應用程式與dll的通訊問題。在網上查詢了三個解決方法:

1.傳送訊息

(1) 在dll中定義乙個自定義訊息#define wm_mymessage wm_user+1(訊息的定義應該放在與應用程式通訊的.h檔案中,我是這麼做的,可能也可以在應用程式中重新定義,不過我沒有試過)

(2) 在需要傳送訊息的地方,呼叫函式sendmessage或者postmessage,

(3) 在應用程式中新增訊息響應函式:

在mainfrm.h中的declare_message_map()之前新增

afx_msg void premessageevent(wparam wp, lparam lp);

在mainfrm.cpp中的begin_message_map(cmainframe, cframewnd)與end_message_map()之間新增

on_message(wm_mymessage, premessageevent)(然而我在這裡犯了乙個嚴重的錯誤,就是把on_message寫成了on_command,導致傳送的訊息一直得不到響應)

(4)在cpp檔案中新增函式的具體定義

void cmainframe::premessageevent(wparam wp, lparam lp)

在這裡補充一點,如果要傳入的引數是cstring型別,可使用下面方法轉換成wparam型別:wparam wp = (wparam)&str;在響應函式裡面,新增cstring* pstr=(cstring*)wp

2.全域性變數

全域性變數應該定義在與應用程式通訊的.h檔案中。(但是我現在做的這個東西,如果使用全域性變數的話,就必須同時在應用程式和dll使用執行緒,對共享變數進行訪問和讀寫,這就又涉及到執行緒間同步的問題,讀寫許可權的問題,需要使用各種方法來控制對變數的訪問)

我也用到了這種方法,但是最後讀取全域性變數值的時候,發現資料讀取有一些問題,不能很好的控制。此方法就此作罷!

3.共享記憶體物件

這個方法還沒有用過,用到的時候再補充這一點吧!

驅動程式與應用程式之間的通訊

驅動程式與應用程式之間的通訊 驅動程式必須與應用程式進行通訊,才能最終達到應用程式控制裝置的目的,不然驅動有qiu用。要通訊就涉及到3個方面 1.應用程式與驅動程式通訊 2.驅動程式與應用程式通訊 3.資料傳輸 下面分別討論 1。應用程式與驅動程式通訊 2。驅動程式與應用程式通訊 2 1 驅動程式在...

應用程式與驅動通訊的若干方式

應用程式與驅動傳遞資料方法 1.method buffered 輸入輸出緩衝區都被對映到系統位址irp associatedirp.systembuffer上 inbuf irp associatedirp.systembuffer outbuf irp associatedirp.systembu...

應用程式間通訊 URL Scheme

ios 的設計思路是原則上禁止不同的應用程式之間相互訪問彼此的資料。雖然對於像我這樣的桌面應用開發人員而言,不能訪問程式以外的資料是不能想象的。但是從安全角度來說不失為乙個有效的策略。不過凡事總有例外,所以賈伯斯還是為程式間通訊開放了幾個介面。ios 上的應用程式可以通過向其它應用程式傳送乙個url...