所有,我是C#的新手,所以很抱歉,这是一个简单的问题。
我有一个自动化系统,它可以通过各种链接导航以执行一个过程,但是偶尔(不确定根本原因)会弹出以下Windows错误,这需要用户手动干预,用户需要选择{ENTER} < / p>
我正在使用下面的代码每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
如果有人可以提出值得赞赏的代码有什么问题,我现在将错误标记为**错误括号。
答案 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选项>高级,然后取消选中“显示有关每个脚本错误的通知”复选框。