国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

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

2019-11-17 05:25:31
字體:
供稿:網(wǎng)友
對(duì)于windows form的應(yīng)用程序, 操作系統(tǒng)其實(shí)在注銷或者關(guān)閉的時(shí)候,會(huì)發(fā)一個(gè)WM_QueryEndsession的消息給每一個(gè)窗體,每一個(gè)窗體有一個(gè)表決的機(jī)會(huì),返回是否退出.這個(gè)跟form 的closing 時(shí)間一樣. 一旦有一個(gè)程序返回false,那么這個(gè)注銷動(dòng)作就取消了.默認(rèn).net 寫的windows 應(yīng)用程序都是表決true,就是系統(tǒng)注銷的時(shí)候,程序自動(dòng)退出.


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

如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖一)PRivate void HookSessionEnding()
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖二)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖三)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖四){
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)Microsoft.Win32.SystemEvents.SessionEnding +=
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)new Microsoft.Win32.SessionEndingEventHandler(this.OnSessionEnding);
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖六)}
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖一)private void OnSessionEnding( object sender,
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖一)Microsoft.Win32.SessionEndingEventArgs e )
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖二)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖三)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖四){
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)    // the user session is ending
        //MessageBox...
        //取消系統(tǒng)關(guān)閉 e.cancel=true
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖六)}

 當(dāng)然也可以重載消息處理,自己處理WM_QueryEndSession 這個(gè)消息.

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

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

一下是vb.net 的一個(gè)框架

如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖二)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖三)Module Module1Module Module1 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖七)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖八)    Public Declare Function SetConsoleCtrlHandler()Function SetConsoleCtrlHandler Lib "kernel32.dll" Alias "SetConsoleCtrlHandler" (ByVal handlerRoutine As HandlerRoutine, ByVal add As Boolean) As Boolean 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖七)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖八)    Public Delegate Sub HandlerRoutine()Sub HandlerRoutine(ByVal type As Integer) 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖七)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖八)    Sub Main()Sub Main()
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        SetConsoleCtrlHandler(AddressOf MyHandle, True) 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        Console.ReadLine() 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖九)    End Sub
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖七)如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖八)    Public Sub MyHandle()Sub MyHandle(ByVal type As Integer) 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        ' 控制臺(tái)收到那些消息 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        ' 0- CTL C 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        ' 1- CTL + Break 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        ' 2- CLOSE,可能是通過關(guān)閉close按鈕也可能是直接關(guān)閉進(jìn)程 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        ' 3- 操作系統(tǒng)要注銷 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        ' 4- 系統(tǒng)要關(guān)機(jī) 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)        'Add Your Log 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖九)    End Sub 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖五)
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖六)End Module 
如何讓自己的應(yīng)用程序,控制臺(tái)程序,windows 服務(wù)收到操作系統(tǒng)注銷或者重啟的消息?(圖一)


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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蓝田县| 读书| 灌阳县| 涞水县| 昌平区| 洛宁县| 景泰县| 扎兰屯市| 长岭县| 全椒县| 房产| 泸溪县| 贵溪市| 青河县| 美姑县| 门头沟区| 陆河县| 宣化县| 佳木斯市| 郧西县| 广东省| 鄂伦春自治旗| 修水县| 江达县| 延川县| 延庆县| 文登市| 两当县| 水城县| 许昌县| 漳平市| 西畴县| 凉城县| 通江县| 常熟市| 裕民县| 峡江县| 永修县| 临桂县| 扶风县| 台中县|