2017-07-14 81 views
0

使用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

回答

0

.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

0

我決定一個變通辦法將解決我的問題,並將進一步研究後...

它是如此令人沮喪,看看它是如何容易的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文件的列表,這樣我就可以通過它進行迭代,我需要的數據。 //可以比較文件數量。