C# WinForm MessageBox彈窗倒計時的自動關閉


 

        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private static extern IntPtr FindWindow(string IpClassName, string IpWindowName);
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern int SetWindowText(IntPtr hWnd, string text);

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
        /// <summary>
        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        const int WM_CLOSE = 0x10;
        const int BM_CLICK = 0xF5;
        int FunCord;
        IntPtr hwnd;
        int t;
        private void button1_Click(object sender, EventArgs e)
        {
            FunCord = 1;
            t = 5;
            timer1.Enabled = true;
            MessageBox.Show("系統關機提示:\n\n 確認關機請點擊【確定】\n\n 繼續使用請點擊【取消】", "系統將於" + t + "秒后關機", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
            MessageBox.Show("直接關閉");

        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (FunCord == 1)
            {
                hwnd = FindWindow(null, "系統將於" + t.ToString() + "秒后關機");
                t = t - 1;
                SetWindowText(hwnd, "系統將於" + t.ToString() + "秒后關機");
                if (t == 0)
                {
                    timer1.Enabled = false;
                    SendMessage(hwnd, WM_CLOSE, 0, 0);
                }
            }
            else if (FunCord == 2)
            {
                hwnd = FindWindow(null, "關機提示");
                IntPtr a = FindWindowEx(hwnd, (IntPtr)null, null, "系統將於" + t.ToString() + "秒后關機");
                t = t - 1;
                SetWindowText(a, "系統將於" + t.ToString() + "秒后關機");
                if (t == 0)
                {
                    timer1.Enabled = false;
                    SendMessage(hwnd, WM_CLOSE, 0, 0);
                }
            }
            else if (FunCord == 3)
            {
                hwnd = FindWindow(null, "系統將於" + t.ToString() + "秒后關機");
                t = t - 1;
                SetWindowText(hwnd, "系統將於" + t.ToString() + "秒后關機");
                if (t == 0)
                {
                    IntPtr OKHwnd = FindWindowEx(hwnd, IntPtr.Zero, null, "確定");
                    SendMessage(OKHwnd, BM_CLICK, 0, 0);
                    timer1.Enabled = false;
                }
            }
            else if (FunCord == 4)
            {
                hwnd = FindWindow(null, "系統將於" + t.ToString() + "秒后關機");
                t = t - 1;
                SetWindowText(hwnd, "系統將於" + t.ToString() + "秒后關機");
                if (t == 0)
                {
                    IntPtr OKHwnd = FindWindowEx(hwnd, IntPtr.Zero, null, "取消");
                    SendMessage(OKHwnd, BM_CLICK, 0, 0);
                    timer1.Enabled = false;
                }
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            FunCord = 2;
            t = 5;
            timer1.Enabled = true;
            MessageBox.Show("系統將於" + t + "秒后關機", "關機提示");
            timer1.Enabled = false;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            FunCord = 3;
            t = 5;
            timer1.Enabled = true;
            if (MessageBox.Show("系統關機提示:\n\n 確認關機請點擊【確定】\n\n 繼續使用請點擊【取消】", "系統將於" + t + "秒后關機", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.OK)
            {
                MessageBox.Show("點擊了確定");
            }
            timer1.Enabled = false;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            FunCord = 4;
            t = 5;
            timer1.Enabled = true;
            if (MessageBox.Show("系統關機提示:\n\n 確認關機請點擊【確定】\n\n 繼續使用請點擊【取消】", "系統將於" + t + "秒后關機", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Cancel)
            {
                MessageBox.Show("點擊了取消");
            }
            timer1.Enabled = false;
        }

原文鏈接:https://www.itsvse.com/thread-4806-1-4.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM