查找文本框和写入

问题描述:

使用VS2010 C#查找文本框和写入

我完全茫然......

我有一个供应商的方案,以专有格式的数据导出到一个CSV文件。

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

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

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

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

但是,正如我所说我在这个时候完全失望的损失。

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

谢谢!

+0

你累了什么吗? –

+0

https://stackoverflow.com/questions/37912261/how-to-get-handle-to-a-textbox-control-inside-window-in-window-10没有答案,但可能有所帮助,也看看建立的工具为了这。几年前我曾经做过这样的事情(比如15年前),我只是使用脚本工具将文本发送到Windows等。 –

+0

@Jack Miller是的,我花了几个小时尝试各种代码示例......大多数处理如何说话到你自己的项目中的其他形式。 – user3279899

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

+0

Kieran Devlin ...我感谢您花时间阅读并回答我的问题。但是,我们很多人最终要求StackOverFlow的原因之一就是因为微软的信息可能相当模糊。 :) – user3279899

+0

你有什么理解麻烦? –

+0

表示UI自动化树中的UI自动化元素,并包含UI自动化客户端应用程序用作标识符的值。 – user3279899

我决定一个变通办法将解决我的问题,并将进一步研究后...

它是如此令人沮丧,看看它是如何容易的AutoIt和幻影测试驱动程序(做这正是我结束使用)。

下面的网址是:www.houseofmyrrh.org/AnExplanation.htm如果管理员想删除它.​​..

基本上,我有包含.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; 

我的第一个任务是找到光盘上的所有.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,这是一个.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(); 

•启动phantom.exe(.psc p reviously与手动phantom.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文件的列表,这样我就可以通过它进行迭代,我需要的数据。 //可以比较文件数量。