小编Pyr*_*que的帖子

使用c#关闭来自另一个程序的消息框

这是我的问题:我们的产品有自动构建过程.在编译其中一个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)

c#

8
推荐指数
1
解决办法
6408
查看次数

在线程在C#中运行时在GUI中显示消息

我有一个应用程序,首次启动时,每7天执行一次更新从Web下载一些文件.

此更新最多可能需要5分钟,具体取决于需要下载的文件数量.

我正在考虑做的是在一个单独的线程中运行更新,以便在更新处理时可以使用其余的GUI.

对于我的应用程序来说,这似乎是一个非常可行的选项,但我还想在主GUI中显示一条消息,可能在状态栏中,告诉用户更新正在处理并在完成时消失.

我一直在寻找方法来做到这一点,但似乎没有任何东西像我正在寻找的解决方案一样突然出现.有谁知道这是否可行以及如何做到这一点?

.net c# multithreading .net-4.0

3
推荐指数
1
解决办法
243
查看次数

标签 统计

c# ×2

.net ×1

.net-4.0 ×1

multithreading ×1