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 }
View Code

 

posted @ 2013-07-24 20:08  宁静.致远  阅读(811)  评论(0编辑  收藏  举报