C WPF 無窗體傳遞訊息

2021-09-24 22:14:45 字數 1121 閱讀 5829

wpf如果存在窗體(或至少,在工作列有圖示顯示),互相傳遞訊息是很容易的。

尋找目標窗體控制代碼->windowsapi sendmessage/postmessage->目標窗體addhook。參見:c# wpf 窗體傳遞訊息

但是,如果窗體不存在,比如說,最小化的時候僅顯示乙個tray icon,連工作列的圖示都不能用,這個流程就不管用了。因為此時無法獲取到目標窗體的控制代碼。

到達到這個要求,還有幾種不同的方法:

1.管道。因為就在本機傳遞訊息,所以匿名管道/命名管道都可以滿足要求;

2.tcp/udp 如果僅僅是傳遞一些特定的約定好的少數資訊的話,這有點殺雞用牛刀的感覺;

3.windows api: postthreadmessage

示例目標:程式只能執行乙個例項,當程式再次被啟動,就通知已經執行的例項並且關閉自身程序

1.判斷/獲取已經執行的例項

2.註冊windowsapi

[return

: marshalas(unmanagedtype.bool)]

[dllimport(

"user32.dll

", setlasterror = true

)]

public

static

extern

bool postthreadmessage(int threadid, uint msg, intptr wparam, intptr lparam);

public

const

0x8001~0xbfff;

protected

override

void

onstartup(startupeventargs e)

environment.exit(0);//

software has been running, close this

}

else

}private

void componentdispatcher_threadpreprocessmessage(ref msg msg, ref

bool

handled)

}

C WPF 窗體定時自動關閉

需求 開啟wpf專案後,展示3秒鐘產品logo後,進入主介面mainwindow。類似於安卓應用開啟時的閃屏頁splashpage 思路 在進入mainwindow後新建乙個window窗體,窗體的背景設定為logo,窗體設定為最大化 z軸置頂 不可調整寬高 不顯示狀態列。設定乙個dispatche...

C WPF有趣的登入載入窗體

時間如流水,只能流去不流回!點讚再看,養成習慣,這是您給我創作的動力!本文 dotnet9 已收錄,站長樂於分享dotnet相關技術,比如winform wpf asp.net core等,亦有c 桌面相關的qt quick和qt widgets等,只分享自己熟悉的 自己會的。站長使用.net co...

MFC在不同的類窗體之間傳遞訊息

接收訊息窗體,cmainframe 1 首先在頭中定義訊息 例如 indefine wm mymessage wm user 100 wm mymessage是定義的巨集 定義訊息處理函式。訊息處理函式為訊息目標類的成員函式。首先應該在.h 檔案中宣告。這裡以主視窗類為例,主視窗類名 cmainfr...