好记性不如烂笔头。

C#自动关闭MessageBox

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);

            }

        }

    }

}