发送密钥{ENTER}到特定的Windows弹出窗口

时间:2019-09-12 11:30:55

标签: c#

所有,我是C#的新手,所以很抱歉,这是一个简单的问题。

我有一个自动化系统,它可以通过各种链接导航以执行一个过程,但是偶尔(不确定根本原因)会弹出以下Windows错误,这需要用户手动干预,用户需要选择{ENTER} < / p>

enter image description here

我正在使用下面的代码每2分钟发送一次{ENTER},以防出现上述弹出窗口。 (发送{ENTER}的时间间隔和条件不在下面的c#脚本中:

    public void SendKeys_ENTER()
    {
        SendKeys.SendWait("{ENTER}");
    }

我想知道是否可以通过c#识别上述弹出窗口在屏幕上处于活动状态,然后才发送键{ENTER},一旦按下{ENTER}键,则验证弹出窗口已被摧毁。

我正在尝试通过本文中的建议实施新代码

 using System;
 using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
 using System.Windows.Forms;
 using System.Xml;

 namespace Dynamic.Script_8D737880D773F26
    { **Error parenthesis
    // Script generated by Pega Robotics Studio 8.0.2032.0
    // Please use caution when modifying class name, namespace or attributes
    [OpenSpan.TypeManagement.DynamicTypeAttribute()]
    [OpenSpan.Design.ComponentIdentityAttribute("Script-8D737880D773F26")]
    public sealed class Script
    {
    [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
   static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);

    }

    public bool ScriptErrorVisible()
    {
        if (FindWindowByCaption(IntPtr.Zero, "Script Error") != IntPtr.Zero)
            {
            return true;
            }

        else
            {
            return false;
            }

        }
    }
} **Error parenthesis

如果有人可以提出值得赞赏的代码有什么问题,我现在将错误标记为**错误括号。

2 个答案:

答案 0 :(得分:1)

您可以使用WinAPI函数FindWindow来检查具有特定标题的窗口当前是否可见。

由于FindWindow是本机函数,因此您需要使用P / Invoke(平台调用)来调用它。有一个不错的web resource pinvoke.net,可为您提供许多有用的信息。

因此,在您的类中声明外部函数:

[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);

然后将其命名为

if (FindWindowByCaption(IntPtr.Zero, "Script Error") != IntPtr.Zero)
{
    // window is visible
}

答案 1 :(得分:0)

您可以在Internet Explorer中关闭脚本错误通知。 尝试这个: 转到工具> Internet选项>高级,然后取消选中“显示有关每个脚本错误的通知”复选框。