我有一个执行多次计算的.EXE,由另一家公司实施。我无权访问此可执行文件的源代码,并且试图修改其行为是不可能的。
我的问题是:
我在c#中编写代码来调用此EXE并读取其文件输出。 EXE完成计算后,它会打开一个MessageBox - > "计算完成",并且仅在点击" OK按钮"输出文件被写入。这真的很糟糕,因为用户必须手动点击鼠标才能关闭MessageBox。我想知道是否有可能以编程方式关闭此MessageBox?
我用谷歌搜索了我的猜测是可以使用MainWindowHandle,但我不确定。有什么帮助吗?
答案 0 :(得分:2)
您可以致电FindWindow
找到MessageBox
,然后使用SendMessage
发送关闭消息
[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd,uint Msg,int wParam,int lParam);
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lp1, string lp2);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_CLOSE = 0xF060;
IntPtr window = FindWindow(null, "MessageBox Title Here");
if (window != IntPtr.Zero)
{
SendMessage(window, WM_SYSCOMMAND, SC_CLOSE, 0);
}
了解更多here