在另一个窗体上查找文本框并写入它



Using VS2010 C#

我完全不知所措...

我有一个供应商程序,可以将专有格式的数据导出到 CSV 文件中。

我有大约 20 个磁盘,其中一个有 255 个这样的文件......

我想自动化这个过程...这相当简单,直到我需要将新文件名写入供应商程序的文件保存框中。

我有程序处理,但似乎无法提出正确的问题。

我想我需要一种方法来枚举所有控件,以便我有一个使用发送消息的句柄。

但是,正如我所说,我现在完全处于令人沮丧的茫然之中。

关于提出什么问题的建议将不胜感激。

谢谢!

.FindAll()应该是你要找的。这将返回窗口句柄下的所有 UI 元素。 https://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.findall(v=vs.110(.aspx

我决定用变通办法解决我的问题,以后会进一步研究......

看到在AutoIt和Phantom测试驱动程序(这是我最终使用的(中完成它是多么容易,真是令人沮丧。

[已删除的网站,已更改。

基本上,我有一"吨"包含.dtb文件的磁盘,确切地说是542个。

我知道这太简单了,我只写出了我所解决的要点。 这些文件是专有格式,需要使用Teradyne的软件,据我所知,没有脚本或命令行方法来使用此软件。

我不确定我是否最终使用了所有这些程序集,但这是列表:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Runtime.InteropServices;

我的第一个任务是找到CD上的所有.dtb文件,并将它们传输到一个工作文件夹,文件夹结构完好无损。(因为不同的文件夹中有重复的文件名(为此,我使用了Beyond Compare。

此文件夹将成为基文件夹 lblDrive.txt。它实际上包括整个路径。

string[] rawInput = Directory.GetFiles(lblDrive.Text, "*.dtb*", SearchOption.AllDirectories);

//lblDTBFilesFound

int dtbCount = 0;
foreach (string s in rawInput)
{
lstFilesList.Items.Add(s.ToString());
dtbCount++;
}
lblDTBFilesFound.Text = "DTB Files Found: " + dtbCount.ToString();

创建所有 .dtb 文件的列表,包括它们的完整路径。 以后可以使用文件计数来确保转换所有文件。

循环访问将每个条目复制到 wrkString 的列表,wrkString 是 .dtb 文件的完整路径

Clipboard.SetText(wrkString.Substring(0, q));

将除文件扩展名以外的所有内容复制到剪贴板

Process.Start(wrkString); // launching proprietary software
int maybe = 0;
while (maybe < 25)
{
System.Threading.Thread.Sleep(10);
maybe++;
}

给一点延迟以确保应用程序已启动

var process = Process.Start("DTB_Extraction.psc");
process.WaitForExit();

• 手动启动幻像.exe(之前与幻像关联的 .psc .exe( •脚本执行鼠标移动和单击以转换文件 •脚本包括从剪贴板粘贴到文件保存中 • 强制等待脚本完成

if(File.Exists(wrkString.Substring(0, q) + ".csv"))
{
// Do nothing
}
else
{
lstDisp.Items.Add(wrkString.Substring(0, q) + ".csv");
}

在极少数情况下出现问题,未创建.csv

string[] rawInput = Directory.GetFiles(lblDrive.Text, "*.csv*", SearchOption.AllDirectories);
int dtbCount = 0;
foreach (string s in rawInput)
{
lstFilesList.Items.Add(s.ToString());
dtbCount++;
}
lblCSVFilesFound.Text = "CSV Files Found: " + dtbCount.ToString();

创建工作目录中所有.csv文件的列表,以便我可以遍历它并提取我需要的数据。 可以比较文件计数。

最新更新