Hallo zusammen,
ich habe bereits ein fertiges Programm geschrieben um ein Makro einer APP mit Tastenbefehlen zu steuern und Daten zu befüllen.
Das Funktioniert auch soweit.
Problem ist nun folgendes...
Hin und wieder öffnet sich ein Textfeld das Bestätigt werden muss.
Ich kann also nicht vorher schon bestimmen und anhand der Daten erkennen ob die Eingabe direkt angenommen wird, oder eine weitere Bestätigung notwendig ist.
Mein Programm muss also eine Veränderung in einem Fenster eines anderen Programmes, anhand des Textes o.Ä erkennen und einen Befehl ausführen können.
Wenn ich mit dem Tool Microsoft Spy ++ das Feld im Fenster markiere, demarkiere und das Fenster neu öffne (Was im Makro immer vorkommt) Zeigt Spy++ immer wieder einen anderen handle an.
Welche möglichkeiten bieten sich mir?
Merke: Ich bin noch ein schwacher Anfänger, einfache Erklärungen und Links zu Hilfestellungen wären sehr hilfreich
Mein Programm falls benötigt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76:
| using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices;
namespace ConsoleApplication3 { class Program {
public static void Main() {
string path; int delay;
Console.WriteLine("Bitte geben Sie den Vollständigen Pfad der zu Importierenden txt an: "); path = Console.ReadLine(); Console.WriteLine("Bitte geben Sie die länge des Delays zwischen den einzelnen Eingaben ein (Millisekunden) \nDanach geht es sofort nach dem Delay Los! \nBitte direkt in das entsprechende Feld klicken" + "\nBitte den Rechner während des Vorgangs am besten in Ruhe lassen!\nDas ausuführende Makro heißt LagerplatzZuweisung\n\nBeispiel für ein angemessenes Delay: 10000\nEingabe:"); delay = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Das Programm startet in: " + delay + " Millisekunden!");
string value = System.IO.File.ReadAllText(@path); string[] split = value.Split(new Char[] {';'});
System.Threading.Thread.Sleep(delay); int mCounter = 0; foreach (string s in split) {
while (mCounter >=3) { WindowsInput.InputSimulator.SimulateKeyPress(WindowsInput.VirtualKeyCode.RETURN); System.Threading.Thread.Sleep(delay); Console.WriteLine("\n "); mCounter = 0; System.Threading.Thread.Sleep(500);
}
WindowsInput.InputSimulator.SimulateTextEntry(s); System.Threading.Thread.Sleep(250); Console.WriteLine("Eingabe erfolgreich " + s + "\n\n#Copyright Max\n"); WindowsInput.InputSimulator.SimulateKeyPress(WindowsInput.VirtualKeyCode.RETURN); mCounter++; System.Threading.Thread.Sleep(delay); }
}
private static void AppActivate(string p) { throw new NotImplementedException();
}
public long tertra { get; set; }} } |
Moderiert von Th69: Topic aus C# - Die Sprache verschoben am Mi 17.05.2017 um 19:33