WM 建立乙個不會退出的Console程式

2022-01-11 10:16:18 字數 1033 閱讀 3004

經常碰到一種需求,就是需要監聽某些東西,就需要建立乙個能在後台跑的程式.很顯然服務能滿足你的需求,不過我沒寫過服務程式,不知道具體怎麼運作的(應該是暴露幾個匯出函式給作業系統),但是可以用其他的辦法到達你想要的效果.

windows程式之所以會持久執行,就是因為其訊息機制.訊息迴圈從訊息佇列裡面不斷抽取訊息,分發給視窗,系統呼叫視窗過程.而這個類似於死迴圈一樣的訊息迴圈正是程式不會退出的原因(暫時不會退出).

while (getmessage(&msg,null,0,0))

想要做乙個在後台跑的程式,這個訊息迴圈是必不可少的.現在無非就是要弄乙個能處理訊息的東西,有兩個選擇:

中間橫插一槓,看著很簡單容易理解,但是據說視窗過程是作業系統執行的,因為作業系統需要給程式分配時間片,如果你自己執行,作業系統就不知道要分配多少時間片.還是利用原來的視窗過程,建立乙個視窗類,創乙個視窗.我們需要做的就是,不讓那個視窗顯示出來....(除此之外,我想不到怎麼才能讓視窗控制代碼和視窗過程聯絡起來,哪位達人知道可以指點一二)

createwindow建立的時候,可以指定視窗顯示不顯示.(之前在win32上面實驗過,到wm上面實驗的時候沒注意...結果建立乙個直接被顯示的視窗)

hwnd = createwindow(szwindowclass, 

sztitle,

ws_disabled,//丫的就是這個引數

cw_usedefault,

cw_usedefault,

cw_usedefault,

cw_usedefault,

null,

null,

hinstance,

null);

後面vs預設生成的**,還會showwindow,updatewindow,只需要把這兩行注釋掉即可

//showwindow(hwnd, ncmdshow);

//updatewindow(hwnd);

剩下的就是findwindow,sendmessage,或者postmessage了.

ps:

乙個不會的SQL語句

12.有兩個表a 和b 均有key 和value 兩個字段,如果b 的key 在a 中也有,就把b 的value 換為a 中對應的value 這道題的sql 語句怎麼寫?update b set value select value from awhere a.key b.key where exi...

git 建立乙個空白分支 gitlab卻不會顯示

原因 直接複製了另乙個git專案的目錄到我的git專案下,導致git位址被覆蓋,之後的建立空白分支,提交到遠端分支一系列 的操作都是在另外乙個git專案下進行的,還差點弄亂了別的git專案,在自己的git專案下還看不到 的更新,切記git專案 目錄之間的直接拷貝,提交時要明確自己所在的分支,及git...

排名下降 乙個站長的退出,乙個站長的重生

從綠蘿演算法上線後,絕大部分 有的進入了沙盒期,有 的被降權,有的 直接被k掉,導致目前絕大部分的站長都慌了起來,以前用的黑帽手法都不去用了,都是認認真真的去寫一些原創文章,注重了使用者體驗,雖然這樣去做,排名還是下降了,因為有一些站長只是知道不去發垃圾鏈結,不去掛黑鏈,不去買賣鏈結,文章內容不去過...