• 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("系统关机提示: 确认关机请点击【确定】 继续使用请点击【取消】", "系统将于" + 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("系统关机提示: 确认关机请点击【确定】 继续使用请点击【取消】", "系统将于" + 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("系统关机提示: 确认关机请点击【确定】 继续使用请点击【取消】", "系统将于" + t + "秒后关机", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Cancel)
                {
                    MessageBox.Show("点击了取消");
                }
                timer1.Enabled = false;
            }

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

  • 相关阅读:
    RESTful概念理解
    ORACLE数据库忘记SYS和SYSTEM密码,SYSTEM被锁定怎么办?
    MD5加密实现类不是Windows平台下联邦信息处理标准验证过的加密算法的一部分
    基于mqtt协议实现手机位置跟踪
    参考手册——掌握技术的重要途径
    在线编辑器跨域处理
    尝试新的东西
    BootStrap-DualListBox怎样改造成为双树
    软件开发中怎样有效地进行分析和设计
    引用数据被禁用时的解决办法
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/11197277.html
Copyright © 2020-2023  润新知