Wpf訊息迴圈之訊息傳遞

2021-09-22 11:05:45 字數 768 閱讀 2693

幾天遇見乙個問題需要檢查某個wpf程式是否已經執行,如果沒有執行則啟動傳遞引數,如果已執行則需要直接傳遞訊息。在沒有執行 情況下傳遞引數很簡單,我們只需要process cmd視窗啟動並傳遞引數,在程式中處理。但是如果程式已經啟動有點麻煩,憑著我曾winform的經驗第一時間想到的是win32 api  sendmessage,我們的c#程式只需要dllimport就可以呼叫了。經過一番查詢和對wpf window和dispatcherobject的reflector,花了我大半天終於找到了system.windows.interop.hwndsource中有addhock方法可以新增對win32訊息機制的監聽。這下就很好辦了我們只需要註冊mainwindow的這個時間,來監聽win32訊息處理我們的0x004a訊息。

控制台**,主要應用的findwindow 這個win32方法查詢我們的窗體,sendmessage傳送我們的訊息,和winform沒有什麼差別,對於win32的使用你可以參考毒龍的程式人生 的關於c#中實現兩個應用程式訊息通訊的問題。難得查win32 api直接copy,借來用用。

程式:wpf端程式:主要需要在mainwindow中loaded事件訂閱訊息監聽:這裡需要system.windows.interop.hwndsource的addhock方法註冊

程式:截個圖:

很簡單的東西結果被ms封裝的不知**去,讓我查了半天(其實應該是我的無知吧,不管怎麼解決了就是心情舒暢了);

訊息和訊息處理之訊息迴圈

在win32程式設計中,訊息迴圈是相當重要的乙個概念,看似很難,但使用起來卻是非常簡單。在winmain函式的最後,有下列 while getmessage msg,null,0,0 windows應用程式可以接收以各種形式輸入的資訊,這包括鍵盤 滑鼠動作 計時器產生的訊息,也可以是其他應用程式發來...

Android訊息傳遞之元件間傳遞訊息

前言 上篇學習總結了android通過handler訊息機制實現了工作執行緒與ui執行緒之間的通訊,今天來學習一下如何實現元件之間的通訊。本文依然是為學習eventbus做鋪墊,有對比才能進步,今天主要介紹在eventbus出現之前的實現方式,通過intent方式這裡不做介紹。需求場景 方式一 通過...

mfc 訊息傳遞

訊息分類 windows的訊息都是以wm 為名,wm 的意思是 windows message mfc把訊息分為三大類 命令訊息 wm command 命令訊息意味著 使用者命令程式做某些操作 凡是ui物件產生的訊息都是這種命令訊息,可能來自選單或加速鍵或工具欄按鈕,並且都以wm command呈現...