我正在用C#编写一个警报程序,该程序在指定时间显示带有用户指定消息的系统模式对话框。但是,我似乎找不到C#的等效项

MessageBoxA(HWND_DESKTOP, msg, "Alarm",
   MB_OK | MB_ICONWARNING | MB_SYSTEMMODAL | MB_SETFOREGROUND);

编辑:我正在尝试学习C#和.NET库。我认为编写与用C或C++编写的一些小程序等效的程序将是一个不错的起点。

最佳答案

这样的事情应该为您工作:

MessageBox.Show("text", "caption", MessageBoxButtons.OK, MessageBoxIcon.Warning);

在MSDN上找到更多信息:http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox.show.aspx

编辑:
就像另一个想法一样,这将创建屏幕大小的形式,并通过阻塞屏幕上的所有其他内容直到关闭该消息框,从而在此处显示消息框。
internal class TransparentWholeScreen: Form
{
    public TransparentWholeScreen()
    {
        Size = Screen.PrimaryScreen.Bounds.Size;
        TopMost = true;
        FormBorderStyle = FormBorderStyle.None;
        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        BackColor = Color.Transparent;
        Shown += OnShown;
    }

    private void OnShown(object sender, EventArgs e)
    {
        var dialogResult = MessageBox.Show("text", "caption", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        if(dialogResult == DialogResult.OK)
        {
            Close();
        }
    }
}

只需添加以下代码即可省掉您的警报计时器:
    var backGroundForm = new TransparentWholeScreen();
    backGroundForm.ShowDialog(this);

老实说,我不喜欢这种解决方案,除了它不能警告那些会杀死进程的人:)

10-08 07:11
查看更多