您的位置:首页 > 编程语言 > C#

c# winform 自动关闭messagebox 模拟回车

2009-11-02 16:40 435 查看
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace WindowsApplication1

{

    public partial class AutoDeleteMessageBox : Form

    {

        [DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]

        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", CharSet = CharSet.Auto)]

        public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

        public const int WM_CLOSE = 0x10;

        public AutoDeleteMessageBox()

        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            StartKiller();

            MessageBox.Show("3秒钟后自动关闭MessageBox窗口", "MessageBox");

        }

        private void StartKiller()

        {

            Timer timer = new Timer();

            timer.Interval = 3000; //3秒启动

            timer.Tick += new EventHandler(Timer_Tick);

            timer.Start();

        }

        private void Timer_Tick(object sender, EventArgs e)

        {

            KillMessageBox();

            //停止Timer

            ((Timer)sender).Stop();

        }

        private void KillMessageBox()

        {

            //按照MessageBox的标题,找到MessageBox的窗口

            IntPtr ptr = FindWindow(null, "MessageBox");

            if (ptr != IntPtr.Zero)

            {

                //找到则关闭MessageBox窗口

                PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);

            }

        }

    }

}

参考网址:http://www.dotblogs.com.tw/puma/archive/2009/02/06/7060.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: