青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

colorful

zc qq:1337220912

 

SetConsoleCtrlHandler

       有時候運行在服務器上的控制臺程序,需要記錄詳細的運行日志,這就需要對程序關閉進行日志記錄,以便能根據日志了解程序的運行狀況。比如正在運行的程序被 人不小心關閉了,導致最終任務沒有運行成功,這時日志也沒有錯誤記錄,對分析原因造成不便,記錄了關閉事件日志后就能了解到這種情況是程序被終止了。這樣 注意通過消息鉤子來實現,通過調用WIN32 API SetConsoleCtrlHandler方法來實現,具體代碼如下:


using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;


namespace ConsoleColsed
{
    public delegate bool ConsoleCtrlDelegate(int ctrlType);
    class Program
    {
        [DllImport("kernel32.dll")]
        private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);
        //當用戶關閉Console時,系統會發送次消息
        private const int CTRL_CLOSE_EVENT = 2;
        //Ctrl+C,系統會發送次消息
        private const int CTRL_C_EVENT = 0;
        //Ctrl+break,系統會發送次消息
        private const int CTRL_BREAK_EVENT = 1;
        //用戶退出(注銷),系統會發送次消息
        private const int CTRL_LOGOFF_EVENT = 5;
        //系統關閉,系統會發送次消息
        private const int CTRL_SHUTDOWN_EVENT = 6;

        static void Main(string[] args)
        {
            Program cls = new Program();
            //Console.ReadKey();
        }
        public Program()
        {
            ConsoleCtrlDelegate consoleDelegete = new ConsoleCtrlDelegate(HandlerRoutine);

            bool bRet = SetConsoleCtrlHandler(consoleDelegete, true);
            if (bRet == false) //安裝事件處理失敗
            {
                Debug.WriteLine("error");
            }
            else
            {
                Console.WriteLine("ok");
                Console.Read();
            }

        }

        private static bool HandlerRoutine(int ctrlType)
        {
            switch(ctrlType)
            {
                case CTRL_C_EVENT:
                    MessageBox.Show("C");
                    break;
                case CTRL_BREAK_EVENT:
                    MessageBox.Show("BREAK");
                    break;
                case CTRL_CLOSE_EVENT:
                    MessageBox.Show("CLOSE");
                    break;
                case CTRL_LOGOFF_EVENT:
                    break;
                case CTRL_SHUTDOWN_EVENT:
                    break;
            }
            //return true;//表示阻止響應系統對該程序的操作
            return false;//忽略處理,讓系統進行默認操作
        }
    }
}

CTRL_CLOSE_EVENT 這些都是在C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\WinCon.h中定義的,c或者c++調用包含這個頭文件就可以。

return true的時候關閉的時候會產生應用程序無法關閉的錯誤,不知道什么原因。return false則不會。根據msdn上的方法說明 If the function handles the control signal, it should return TRUE. If it returns FALSE, the next handler function in the list of handlers for this process is used. 按照這個解釋,返回true也不應該出現應用程序無法關閉的錯誤,不知道是什么原因。

posted on 2012-04-24 22:44 多彩人生 閱讀(1243) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

統計

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美日韩综合| 欧美在线亚洲综合一区| 久久久精品国产一区二区三区| 亚洲裸体俱乐部裸体舞表演av| 亚洲高清在线观看一区| 日韩视频在线免费观看| 亚洲永久免费精品| 久久久久女教师免费一区| 男人天堂欧美日韩| 亚洲精品国久久99热| 亚洲另类黄色| 亚洲摸下面视频| 久久精品亚洲| 欧美激情一区二区三区在线视频 | 中文欧美日韩| 国产精品99久久久久久久久久久久 | 国内久久精品视频| 亚洲精品视频一区| 亚洲免费在线观看| 女同性一区二区三区人了人一 | 久久久免费观看视频| 欧美国产日韩亚洲一区| 欧美日韩一区二区三区在线观看免| 国产美女精品| 亚洲精品久久| 久久国产直播| 亚洲国产日韩美| 亚洲男女自偷自拍| 免费观看一区| 国产亚洲免费的视频看| 亚洲精品欧美在线| 久久久国产一区二区| 亚洲精品三级| 麻豆精品视频在线观看| 国产九九视频一区二区三区| 亚洲精品一区在线观看香蕉| 欧美一区二区黄| 日韩视频中文| 欧美寡妇偷汉性猛交| 黄色一区二区三区四区| 亚洲欧美国产精品专区久久| 亚洲高清三级视频| 久久久久久亚洲精品不卡4k岛国| 国产精品日韩一区二区| 一本不卡影院| 亚洲国产福利在线| 久久一区精品| 在线观看精品视频| 久久免费视频一区| 久久福利精品| 国外成人网址| 久久精品女人| 午夜精品久久99蜜桃的功能介绍| 欧美日韩成人一区二区三区| 亚洲国产日韩欧美综合久久| 久久综合影视| 久久一区二区三区四区五区| 亚洲国产精品国自产拍av秋霞| 久久久国产视频91| 久久精品国产精品亚洲综合| 一区二区三区在线免费观看| 久久视频这里只有精品| 久久激情综合网| 伊甸园精品99久久久久久| 久久亚洲国产精品日日av夜夜| 久久国产精品99国产| 久久精品亚洲一区二区| 国产伦精品一区二区三| 亚洲高清在线精品| 美女精品视频一区| 久久亚洲国产精品日日av夜夜| 韩日视频一区| 亚洲国产成人午夜在线一区| 欧美精品在线观看91| 99精品欧美一区二区三区| 亚洲伦理网站| 国产精品视频第一区| 欧美一区二区三区成人| 久久国产精品99久久久久久老狼| 亚洲大片在线| 亚洲国产成人av好男人在线观看| 欧美大尺度在线观看| av成人黄色| 午夜欧美视频| 精品成人在线视频| 亚洲看片一区| 国产日韩欧美综合一区| 另类av一区二区| 欧美精品尤物在线| 久久av一区二区三区| 麻豆免费精品视频| 亚洲男人第一av网站| 久久精品成人一区二区三区蜜臀| 亚洲精品日产精品乱码不卡| 亚洲图色在线| 91久久综合| 亚洲影视在线| 亚洲国产日韩欧美| 亚洲欧美久久| 亚洲精品一区二区三区av| av成人免费观看| 在线看欧美日韩| 亚洲一区二区在线| 亚洲精品久久久久久久久久久| 亚洲欧美日韩国产中文在线| 亚洲欧洲在线一区| 午夜精品视频网站| 日韩视频免费观看| 久久国产加勒比精品无码| 国产精品99久久久久久www| 久久亚洲精品欧美| 午夜精品久久久久久久久久久| 久久综合九色综合欧美就去吻 | 亚洲图片在线| 久久国产欧美日韩精品| 一区二区三区四区国产| 美女精品国产| 久久久一区二区三区| 国产精品国码视频| 亚洲精品一区二区三区蜜桃久| 亚洲激情专区| 麻豆精品视频在线观看视频| 久久午夜视频| 国产一区二区三区无遮挡| 亚洲午夜国产一区99re久久 | 激情成人av| 午夜视频精品| 国产综合亚洲精品一区二| 亚洲美女网站| 一区二区欧美日韩| 欧美激情亚洲自拍| 亚洲黄色在线观看| 亚洲蜜桃精久久久久久久| 欧美成人国产| 欧美激情视频一区二区三区在线播放| 激情综合在线| 欧美一区永久视频免费观看| 久久精品国产综合精品| 国产精品视频999| 亚洲欧美日韩国产| 久久久久久久久综合| 国产一区二区三区高清播放| 欧美尤物巨大精品爽| 久久亚洲国产成人| 亚洲高清自拍| 欧美日韩国产在线播放| 在线亚洲自拍| 欧美专区在线观看| 好吊一区二区三区| 欧美3dxxxxhd| 在线亚洲自拍| 久久亚洲私人国产精品va媚药 | 亚洲欧洲精品天堂一级| 欧美sm极限捆绑bd| 亚洲精品一区在线观看香蕉| 亚洲欧美日韩国产综合在线| 国产精品视频专区| 久久精品99国产精品| 亚洲激情黄色| 亚洲欧美日韩一区| 一区二区三区我不卡| 免费精品99久久国产综合精品| 亚洲激情网址| 欧美一区视频在线| 亚洲精品国产视频| 国产欧美日韩91| 欧美jizz19性欧美| 亚洲一区二区欧美日韩| 久久精品国产亚洲一区二区| 亚洲精品欧美日韩专区| 国产人久久人人人人爽| 免费久久99精品国产| 亚洲欧美国产不卡| 亚洲电影自拍| 久久精品99国产精品日本| 亚洲精品乱码久久久久久日本蜜臀| 国产精品日韩一区二区| 欧美成人69av| 欧美在线一区二区三区| 99riav久久精品riav| 免费成人高清视频| 性伦欧美刺激片在线观看| 亚洲国产精品热久久| 国产欧美日韩亚洲| 欧美日韩在线精品一区二区三区| 久久久亚洲午夜电影| 亚洲一区二区视频在线观看| 亚洲激情影院| 欧美成人一区在线| 久久精品九九| 欧美亚洲午夜视频在线观看| 一区二区三区国产在线| 亚洲第一久久影院| 国产色爱av资源综合区| 国产精品激情偷乱一区二区∴| 欧美福利一区二区| 嫩草伊人久久精品少妇av杨幂| 久久久精品国产99久久精品芒果| 午夜国产不卡在线观看视频| 亚洲视频观看|