c# winform 自动关闭messagebox 模拟回车
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Text; 7 using System.Windows.Forms; 8 using System.Runtime.InteropServices; 9 10 namespace WindowsApplication1 11 { 12 public partial class AutoDeleteMessageBox : Form 13 { 14 [DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)] 15 private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); 16 17 [DllImport("user32.dll", CharSet = CharSet.Auto)] 18 public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 19 20 public const int WM_CLOSE = 0x10; 21 22 public AutoDeleteMessageBox() 23 { 24 InitializeComponent(); 25 } 26 27 private void button1_Click(object sender, EventArgs e) 28 { 29 StartKiller(); 30 MessageBox.Show("3秒钟后自动关闭MessageBox窗口", "MessageBox"); 31 } 32 33 private void StartKiller() 34 { 35 Timer timer = new Timer(); 36 timer.Interval = 3000; //3秒启动 37 timer.Tick += new EventHandler(Timer_Tick); 38 timer.Start(); 39 } 40 41 private void Timer_Tick(object sender, EventArgs e) 42 { 43 KillMessageBox(); 44 //停止Timer 45 ((Timer)sender).Stop(); 46 } 47 48 private void KillMessageBox() 49 { 50 //按照MessageBox的标题,找到MessageBox的窗口 51 IntPtr ptr = FindWindow(null, "MessageBox"); 52 if (ptr != IntPtr.Zero) 53 { 54 //找到则关闭MessageBox窗口 55 PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); 56 } 57 } 58 } 59 }
工欲善其事,必先利其器。