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

[C#]定時自動關閉MessageBox視窗小技巧

2014-05-06 10:20 246 查看
[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);
}
}
}
}


執行結果:





參考網址:

http://topic.csdn.net/u/20070801/11/90043e30-2319-4b47-af34-dd3200430336.html

http://www.codeproject.com/KB/dialog/AutoCloseMessageBox.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: