这是我的问题:我们的产品有自动构建过程.在编译其中一个VB6项目期间,会弹出一个消息框,要求用户在继续之前单击"确定".作为一个自动化过程,这是一件坏事,因为它可能最终会在那里停留数小时而不会移动,直到有人点击确定.我们已经研究了VB6代码来尝试抑制消息框,但似乎没有人能够弄清楚现在如何.因此,作为临时修复程序,我正在处理将在后台运行的程序,当弹出消息框时,将其关闭.到目前为止,我能够检测到消息弹出的时间,但我似乎无法找到正确关闭它的功能.该程序是用C#编写的,我使用user32.dll中的FindWindow函数来获取指向窗口的指针.到目前为止,我已经尝试了closeWindow,endDialog和postMessage来尝试关闭它,但它们似乎都没有用.closeWindow只是最小化它,endDialog会出现一个错误的内存异常,而postMessage什么都不做.有没有人知道任何其他功能会处理这个,或任何其他方式去除这个消息?提前致谢.
这是我目前的代码:
class Program
{
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
static void Main(string[] args)
{
IntPtr window = FindWindow(null, "Location Browser Error");
while(window != IntPtr.Zero)
{
Console.WriteLine("Window found, closing...");
//use some function to close the window
window = IntPtr.Zero;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,首次启动时,每7天执行一次更新从Web下载一些文件.
此更新最多可能需要5分钟,具体取决于需要下载的文件数量.
我正在考虑做的是在一个单独的线程中运行更新,以便在更新处理时可以使用其余的GUI.
对于我的应用程序来说,这似乎是一个非常可行的选项,但我还想在主GUI中显示一条消息,可能在状态栏中,告诉用户更新正在处理并在完成时消失.
我一直在寻找方法来做到这一点,但似乎没有任何东西像我正在寻找的解决方案一样突然出现.有谁知道这是否可行以及如何做到这一点?