Tag: automation

当我尝试使用UI Automation的UI自动化时,我只能在使用RangeFromPoint时获得第一个字符/单词

该代码适用于Word和Outlook但由于PowerPoint失败,因为只有文本框的第一个字符或第一个字被选中。 这是一个错误吗? 有没有解决方法? 在PowerPoint 2013中的简单PowerPoint幻灯片上试试这个。 private static async Task getText(double x, double y) { string result = null; try { var location = new System.Windows.Point(x, y); AutomationElement element = AutomationElement.FromPoint(location); object patternObj; if (element.TryGetCurrentPattern(TextPattern.Pattern, out patternObj)) { var textPattern = (TextPattern)patternObj; var range = textPattern.RangeFromPoint(location); range.ExpandToEnclosingUnit(TextUnit.Word); range.Select(); var text = range.GetText(-1).TrimEnd(‘\r’); return text.Trim(); } else […]

如何创建和发送约会到Microsoft Outlook日历?

我正在尝试使用以下代码在另一个人的Microsoft Outlook(2003)日历中创建约会。运行此程序时,约会将保存在我的日历中。但不会发送给收件人。 try { Microsoft.Office.Interop.Outlook.Application app = null; Microsoft.Office.Interop.Outlook.AppointmentItem appt = null; app = new Microsoft.Office.Interop.Outlook.Application(); appt = (Microsoft.Office.Interop.Outlook.AppointmentItem)app .CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); appt.Subject = “Meeting “; appt.Body = “Test Appointment body”; appt.Location = “TBD”; appt.Start = Convert.ToDateTime(“12/23/2009 05:00:00 PM”); appt.Recipients.Add(“smuthumari@mycompany.com”); appt.End = Convert.ToDateTime(“12/23/2009 6:00:00 PM”); appt.ReminderSet = true; appt.ReminderMinutesBeforeStart = 15; appt.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceHigh; appt.BusyStatus = Microsoft.Office.Interop.Outlook.OlBusyStatus.olBusy; […]

在Open XML SDK中的单词书签后插入OpenXmlElement

我能够使用以下代码访问我的word文档中的书签: var res = from bm in mainPart.Document.Body.Descendants() where bm.Name == “BookmarkName” select bm; 现在我想在此书签后面插入一个段落和一个表格。 我怎么做? (示例代码将不胜感激)

如何在通过c#自动执行时禁用excel中的兼容性检查

我使用Excel 2007互操作程序集通过c#自动化Excel。 Interop版本是12.0。 当我尝试保存文件时,它只能以2003格式保存,但这对我很好,但我得到一个弹出窗口说兼容性问题。 如何禁用此弹出窗口? 我已经尝试过workbook.CheckCompatibility = false和ExcelApp.DisplayAlerts = false所以请告诉我是否犯了其他错误。 我的计算机上安装了MS Office 2007。 提前致谢。

使用Plink.exe测试连接到C#中的SSH

我试图通过plink.exe连接到unix终端。 目标是让我可以将文本读回字符串。 我的困境是我工作的银行使用的是旧的as400类型系统,我们通常通过腻子访问。 我正在尝试开发一个自动化套件,它将与系统连接并运行作业并分析输出等。 所以我想我会通过C#使用plink。 如果我通过命令提示符运行代码,我(大致)得到我需要的文本。 但是我在C#代码中遇到了问题,因为它只是挂起而且我从来没有得到过响应。 我想要的是这样的: 连接到服务器输入命令回读屏幕//更多命令等 这是我到目前为止的代码: class Program { static void Main(string[] args) { ProcessStartInfo psi = new ProcessStartInfo(@”C:\Windows\System32\cmd”); psi.RedirectStandardInput = true; psi.RedirectStandardOutput = true; psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; psi.UseShellExecute = false; psi.CreateNoWindow = false; Process process = Process.Start(psi); string cmdForTunnel = @”c:\putty\plink -ssh jonkers@bankhq -pw automationhero”; process.StandardInput.WriteLine(cmdForTunnel); // process.WaitForExit(); Thread.Sleep(30000); string […]

Windows控制台应用程序陷入困境(需要按键)

我有一个控制台程序,其中包含不同的组件,运行方式如下: void start() { while(true){ DoSomething(); Thread.Sleep(1000*5); } } 我的主要入口点看起来像[伪代码] Thread.Start(Componenet1.Start); Thread.Start(Componenet2.Start); while(true){ Console.Writeline(“running”); Thread.Sleep(1000*5); } 在任何地方都没有Console.Reads。 我的问题是SOMETIMES应用程序将运行良好,但然后停止,如果我按下窗口上的任何键它将再次开始工作。 这种情况很少发生,但我在100+ VM上部署了这个程序,在自动化环境中全天候运行。 另外在电脑上我有一些AHK脚本和其他操纵鼠标的东西但不确定它是否与它有任何关系。 另请注意,有时CPU可以在机器上以100%的速度运行,因此可能是线程优先级问题? SOLUTION :您需要禁用快速编辑模式。 这是使用C#代码来执行此操作: // http://msdn.microsoft.com/en-us/library/ms686033(VS.85).aspx [DllImport(“kernel32.dll”)] public static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode); private const uint ENABLE_EXTENDED_FLAGS = 0x0080; static void Main(string[] args) { IntPtr handle = Process.GetCurrentProcess().MainWindowHandle; SetConsoleMode(handle, ENABLE_EXTENDED_FLAGS);

我可以使用VBScript以外的语言以编程方式执行QTP测试吗?

我有VBScript代码,它启动QuickTest Professional,执行一系列QTP测试,并通过电子邮件发送结果。 这很好用,但我更喜欢使用具有更好工具支持的语言(例如一个好的IDE)。 我目前正在从启动脚本调用.Net库,所以我想知道是否可以使用像C#这样的语言来完成相同的任务。 如果是这样,有什么好的资源可以解决这个问题吗? 我可以通过谷歌找到关于这个主题的很少的内容,似乎没有关于这个主题的任何其他问题。 为清楚起见,我已经包含了执行大部分工作的例程的代码。 这不包括.Net声明,但failedTestsList和allTestsList是System.ArrayList实例。 编辑 :所有QTP文档示例都使用VBScript,但正如您所看到的,代码只是创建QTP对象。 我认为这些可以从支持创建这些对象的另一种语言调用。 我的谷歌失败似乎没有人这样做。 Sub ExecuteQTPTest(name) Dim App, resultsPath Dim testPath, testResults testPath = name allTestsList.Add(name) Set App = CreateObject(“QuickTest.Application”) App.Launch App.Visible = False App.Open testPath SetQTPTestOptions(App) SetQTPRunOptions(App) SetQTPWebOptions(App) App.Folders.RemoveAll Dim qtpTest, qtpResultsOpt Set qtpTest = App.Test Set qtpResultsOpt = CreateObject(“QuickTest.RunResultsOptions”) resultsPath = testPath & “\RES1” qtpResultsOpt.ResultsLocation […]

如何使用后期绑定访问Microsoft Word现有实例

我正在c#中开发一些代码,我将与Microsoft Word进行交互。 我希望能够选择重新使用现有实例,或者作为创建新实例的替代方法。 请记住,我想使用LATE BINDING完成所有这些…可以肯定地说我已经找到了在创建新实例时如何使事情正常工作..我只是调用Activator.CreateInstance等。 我遇到的问题是如何重用现有实例,例如,Word已经打开,我想使用该实例。 有没有Activator.UseExistingInstance? 或者类似的东西? 谢谢!