我的计算机上还有另一个程序,每隔一段时间就会显示一个消息框。是否可以在弹出窗口时使用.NET关闭这些对话框?
答案 0 :(得分:1)
使用FindWindow和SendMessage winapi函数,例如http://www.codeproject.com/Articles/22257/Find-and-Close-the-Window-using-Win-API
您必须创建一个关闭该窗口的连续循环,例如while(true)。我使用了Timer,因为它更有效。这是我的代码:
[DllImport ("user32.dll")] public static extern IntPtr FindWindow (String sClassName, String sAppName);
[DllImport ("user32.dll")] public static extern int SendMessage (IntPtr hWnd, uint Msg, int wParam, int lParam);
Timer t;
public Form1 ()
{
InitializeComponent ();
t=new Timer ();
t.Interval=100;
t.Tick+=delegate
{
IntPtr w=FindWindow (null, "Message box title");
if (w!=null) SendMessage (w, 0x0112, 0xF060, 0);
};
t.Start ();
}
WM_SYSCOMMAND = 0x0112 public const int SC_CLOSE = 0xF060;
如果你不知道窗口的类名(如上所述),请使用null和message box的标题作为参数。当然,这意味着消息框有一个标题。