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

 

你可能感兴趣的:(WinForm)