響慕繁

Form_Closing、Form_Unloadイベントで

窟下扮寂 2012-04-05 12:42:40 恬宀 rapoo

Form_Closing、Form_Unloadイベントでの箭翌は畠てハンドリングし、阻するようにする。イベントからイベントハンドラを翌し阻。竃栖る
‐坪否/
MainMenuInvoker.Application_ThreadExceptionで、Application.Exitを佩っているが、
Form.Closingイベントが伏してしまう、イベントハンドラを翌して阻させるか、
崙阻するように俐屎する。

箔廁奕担肇閲窒並周

[盾畳一隈]
云附字崙祥頁宸劔議泌惚低音覺シ議三辛參完悶旗鷹戦紗倖畠蕉延楚泌
bool isExit = false;

輝application.exit();朔
羨瀧亟匯鞘isExit =true;

隼朔壅Form1_FormClosing戦
紗訳if(isExit == false ){..........}
宸劔祥麻咀葎application.exit();乾窟阻Closing並周
匆咀葎厮将isExit= true遇音氏距喘if(isExit == false ){..........}
宸倖雑凄催戦中議旗鷹阻
[盾畳一隈]
.NET頁芦畠旗鷹音屶隔勣岷俊購液殻會峪嬬喘API販採.NET旗鷹脅涙隈汎狛低侭峺議並周。

C# code
        [Flags]        public enum ProcessAccessFlags : uint        {            All = 0x001F0FFF,            Terminate = 0x00000001,            CreateThread = 0x00000002,            VMOperation = 0x00000008,            VMRead = 0x00000010,            VMWrite = 0x00000020,            DupHandle = 0x00000040,            SetInformation = 0x00000200,            QueryInformation = 0x00000400,            Synchronize = 0x00100000        }        [DllImport("kernel32.dll")]        static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwProcessId);        [DllImport("kernel32.dll", SetLastError = true)]        [return: MarshalAs(UnmanagedType.Bool)]        static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);        [DllImport("kernel32.dll", SetLastError = true)]        [return: MarshalAs(UnmanagedType.Bool)]        static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode);        private void KillProcess(string processId,string processName)        {            IntPtr killer;            try            {                killer = OpenProcess(ProcessAccessFlags.All, false, uint.Parse(processId));                MessageBox.Show(killer.ToString());                uint exitcode = 0;                bool ret = GetExitCodeProcess(killer, out exitcode);                ret = TerminateProcess(killer, exitcode);                if (ret)                    MessageBox.Show(string.Format("撹孔購液殻會{0}。", processName));                else                {                    exitcode = 0;                    MessageBox.Show(string.Format("姫棒序殻{0}扮払移圻咀音苧。", processName));                }            }            catch (Exception Exc)            {                MessageBox.Show(string.Format("姫棒序殻{0}扮払移圻咀頁{1}。", processName, Exc.Message));            }        } 

響慕繁利 >C#

犯泣容呪