亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

如何讓自己的應(yīng)用程序,控制臺程序,windows 服務(wù)

系統(tǒng) 2420 0

對于windows form的應(yīng)用程序, 操作系統(tǒng)其實在注銷或者關(guān)閉的時候,會發(fā)一個WM_QueryEndSession的消息給每一個窗體,每一個窗體有一個表決的機會,返回是否退出.這個跟form 的closing 時間一樣. 一旦有一個程序返回false,那么這個注銷動作就取消了.默認.net 寫的windows 應(yīng)用程序都是表決true,就是系統(tǒng)注銷的時候,程序自動退出.


所以你要相應(yīng)系統(tǒng)注銷這個消息, 比如提醒用戶要不要退出,或者作一些記錄log的操作, 在.net 中只要掛一個事件處理到Microsoft.Win32.SystemEvents.SessionEnding 這個事件上面去.你可以做一些自定義的操作.比如:

private void HookSessionEnding()
{
Microsoft.Win32.SystemEvents.SessionEnding
+=
new Microsoft.Win32.SessionEndingEventHandler( this .OnSessionEnding);
}

private void OnSessionEnding( object sender,
Microsoft.Win32.SessionEndingEventArgse)
{
// theusersessionisending
//MessageBox...
//取消系統(tǒng)關(guān)閉 e.cancel=true
}

當然也可以重載消息處理,自己處理WM_QueryEndSession 這個消息.

對于控制臺應(yīng)用程序,一般只能做到被動的接受,可以記錄一下什么時候程序被關(guān)掉,是應(yīng)為什么原因

實現(xiàn)方式其實就是調(diào)用系統(tǒng)api,有一些 SetConsole 打頭的函數(shù),用來實現(xiàn) 控制臺應(yīng)用程序的自定義,比如設(shè)置字體,顏色,窗體大小子類的. 2005 中其實對這些api做了一些包裝. 這里主要是利用 SetConsoleCtrlHandler ,注冊一個Handler

一下是vb.net 的一個框架

ModuleModule1 Module Module1
Public Declare FunctionSetConsoleCtrlHandler() Function SetConsoleCtrlHandler Lib " kernel32.dll " Alias " SetConsoleCtrlHandler " ( ByVal handlerRoutine As HandlerRoutine, ByVal add As Boolean ) As Boolean
Public Delegate SubHandlerRoutine() Sub HandlerRoutine( ByVal type As Integer )

SubMain() Sub Main()

SetConsoleCtrlHandler(
AddressOf MyHandle, True )
Console.ReadLine()

EndSub


Public SubMyHandle() Sub MyHandle( ByVal type As Integer )
' 控制臺收到那些消息
' 0-CTLC
' 1-CTL+Break
' 2-CLOSE,可能是通過關(guān)閉close按鈕也可能是直接關(guān)閉進程
' 3-操作系統(tǒng)要注銷
' 4-系統(tǒng)要關(guān)機

' AddYourLog
EndSub


EndModule


3.對于windows 服務(wù),api的話采取的是跟 console 類似的處理方式.只不過的他的狀態(tài)切換更多
主要是調(diào)用一個 RegisterServiceCtrlHandler 的api

如何讓自己的應(yīng)用程序,控制臺程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色婷婷六月 | 色婷婷精品免费视频 | 成人午夜视频网站 | 伊人丁香狠狠色综合久久 | 一级a美女毛片 | 四虎免费入口 | 美国一级毛片免费看成人 | 成人国产第一区在线观看 | 色一情| 91九色蝌蚪91pornv在线 | 亚洲一区二区三区视频 | 日本最新免费二区三区 | 久久伊人成人 | 人与拘一级a毛片 | julia紧身裙中文字幕在线看 | 老司机午夜在线视频免费观 | 国产亚洲精品一区二区在线播放 | 91福利视频合集 | 色综合合久久天天给综看 | 夜夜超b天天 | 99国产超薄丝袜足j在线播放 | 国产精品自拍一区 | 欧美日韩国产一区三区 | 久久夜色精品国产尤物 | 亚洲国产系列久久精品99人人 | 国产精品久久久久影视青草 | 日韩第三页 | 国产欧美精品一区二区三区 | 国产精品久久毛片 | 久久久久香蕉视频 | 91久久精品国产免费一区 | 国产中的精品一区的 | 久久黄色一级视频 | 成人午夜精品久久久久久久小说 | 国产99r视频精品免费观看 | 欧美日韩在线观看免费 | 综合亚洲网 | 成人亚洲精品一区二区 | 亚洲区在线播放 | 成人a毛片 | 日本中文字幕一区二区 |