2017-07-14 3 views
0

Mit VS2010 C#Suche Textbox auf einer anderen Form und schreibt, um es

ich bei einem vollständigen Verlust am ...

Ich habe einen Programm-Anbieter Daten in einem proprietären Format in eine CSV-Datei zu exportieren.

Ich habe etwa 20 Festplatten und einer von ihnen hat 255 solcher Dateien ...

Ich möchte den Prozess automatisieren ... Welche recht einfach war bis ich brauchte den neuen Dateinamen in die schreiben Dateispeicherfeld im Programm des Herstellers.

Ich habe die Programme behandeln, aber kann nicht scheinen, die richtige Frage (n) zu stellen.

Ich denke, Ich brauche eine Möglichkeit, alle Steuerelemente aufzuführen, damit ich ein Handle zu senden Nachricht zu verwenden.

Aber wie gesagt, ich bin in dieser Zeit völlig frustrierend Verlust.

Vorschläge zu Fragen, die am gefragtesten wären.

Danke!

+0

Haben Sie etwas müde? –

+0

https://stackoverflow.com/questions/37912261/how-to-get-handle-to-a-textbox-control-inside-window-in-window-10 keine Antwort, aber kann helfen, sehen Sie sich auch Tools gebaut dafür. Ich habe das schon vor Jahren gemacht (wie vor 15 Jahren) und ich habe nur Skript-Tools benutzt, die Texte an Windows etc. senden. –

+0

@Jack Miller Ja, ich habe Stunden damit verbracht, verschiedene Code-Beispiele auszuprobieren ... Die meisten haben sich mit dem Sprechen beschäftigt zu anderen Formen in Ihrem eigenen Projekt. – user3279899

Antwort

0

.FindAll() Sollte das sein, was Sie suchen. Dadurch werden alle UI-Elemente unter einem Fenster-Handle zurückgegeben. https://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.findall(v=vs.110).aspx

+0

Kieran Devlin ... Ich weiß es zu schätzen, dass Sie sich die Zeit genommen haben, meine Frage zu lesen und zu beantworten. Aber einer der Gründe, warum viele von uns auf StackOverFlow fragen, liegt darin, dass die Informationen von Microsoft ziemlich verschleiert sein können. :) – user3279899

+0

Was hast du Probleme mit Verständnis? –

+0

Stellt ein Benutzeroberflächenautomatisierungselement in der Benutzeroberflächenautomatisierungsstruktur dar und enthält Werte, die von Benutzeroberflächenautomatisierungs-Clientanwendungen als Kennungen verwendet werden. – user3279899

0

Ich entschied sich für eine Arbeits um mein Problem lösen würde und später studieren weiter ...

Es ist so frustrierend zu sehen, wie einfach es in AutoIt und Phantom Testfahrer gemacht wird (das ist, was ich am Ende hoch mit).

Im folgenden finden Sie unter: www.houseofmyrrh.org/AnExplanation.htm wenn Admin will, es löschen ...

Im Grunde hatte ich eine „Tonne“ von Festplatten, die .dtb Dateien enthalten sind, 542 bis genau sein.

Ich weiß, das ist einfach und ich habe nur den Kern dessen, was ich getan habe, zu lösen. Diese Dateien sind in einem proprietären Format, das die Verwendung von Teradynes Software erfordert, soweit ich weiß, gibt es keine Skripting- oder Befehlszeilenmethode für die Verwendung dieser Software.

Ich bin nicht sicher, ob ich alle diese Baugruppen landete mit, aber hier ist die Liste:

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; 

Meine erste Aufgabe, alle .dtb Dateien auf der CD zu finden war und sie auf einem Arbeits Ordner, Ordnerstruktur intakt. (Da es doppelte Dateinamen in verschiedenen Ordnern gab) habe ich Beyond Compare verwendet.

Dieser Ordner wird zum Basisordner, lblDrive.txt. Es beinhaltet eigentlich den ganzen Weg.

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(); 

// erstellen Sie eine Liste aller .dtb Dateien einschließlich ihrer vollständigen Pfad. // Dateianzahl kann später verwendet werden, um sicherzustellen, dass Sie alle Dateien konvertiert haben.

Iterate durch die Liste Kopieren jeder Eintrag wrkString, die zu einer .dtb Datei

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

// kopieren alles, aber die

Process.Start(wrkString); // launching proprietary software 

int maybe = 0; 
while (maybe < 25) 
{ 
    System.Threading.Thread.Sleep(10); 
    maybe++; 
} 
Dateierweiterung in die Zwischenablage ein vollständiger Pfad ist

// geben Sie eine kleine Verzögerung ein, um sicherzustellen, dass die App gestartet wurde

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

• Startet phantom.exe (.psc p reviously mit Phantom.exe assoziiert manuell) • Skript führt die Maus bewegt und klickt auf die Datei zu konvertieren • Skript eine Paste aus der Zwischenablage in die Datei speichern enthält • Erzwingt eine Wartezeit, bis das Skript

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

beendet // im seltenen Fall ist etwas schief gelaufen und die CSV wurde nicht

erstellt
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(); 

// erstellen sie eine Liste aller CSV-Dateien im Arbeitsverzeichnis, so kann ich durch sie durchlaufen und die Daten extrahieren ich brauchte. // Dateianzahl kann verglichen werden.

Verwandte Themen