Entwickler-Ecke
C# - Die Sprache - Überprüfen ob ein Fenster existiert
gordon65 - Di 01.12.09 21:35
Titel: Überprüfen ob ein Fenster existiert
Wie kann ich überprüfen ob ein Fenster (Fenster von z.B eine Installation ) (den namen kann ich angeben ... den richtigen namen (habe ein autoit tool) existiert
oder eine methode die so lange wartet bis das fenster existiert ...
und etwas was das fenster in den fordergrund holt
danke
JüTho - Mi 02.12.09 12:37
zu 1.
Application.OpenForms["meinFormName"]
zu 3.
Control.BringToFront (auch ein Form ist ein Control)
zu 2. Zum "Warten" gibt es mehrere unschöne Möglichkeiten. Was davon am wenigsten störend ist, könnte ich höchstens nach Kenntnis des gesamten Aufbaus der Anwendung sagen. Am schönsten wäre eigentlich so etwas:
C#-Quelltext
1:
| MySecondForm secondForm = new MySecondForm(); |
Da kannst du sicher sein, dass die Methode, in der dieser Aufruf steht, erst weitermacht, wenn das Fenster fertig erstellt ist.
Gruß Jürgen
gordon65 - Mi 02.12.09 15:02
bei Application.OpenForms["meinFormName"] muss das dann nicht eine form von diesem c# Programm sein ... (das ist ja eigentlich eine form eines anderen Programms) ... aber ich werde es einfach ausprobieren ...
das c# programm ist zur automatisieren von installationen
also ich warte bis fenster1 von der installation da ist ... dann werden die testen Alt Ok gedrückt ... dann sollte das programm warten bis das nächste fenster kommt ... usw....
jetzt hab ich mal was:
C#-Quelltext
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:
| [DllImport("user32.dll", EntryPoint = "FindWindowA")] public static extern int FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] public static extern int ShowWindow(int hwnd, int nCmdShow); [DllImport("user32.dll")] public static extern int SetForegroundWindow(int hwnd);
string nameFenster = "installation 1"; string testenEingabe = "{ENTER}";
if (u == 1) { int i = Form1.FindWindow(null, nameFenster);
if (i == 0) { MessageBox.Show("Es gibt nicht " + nameFenster, "Fehler"); }
else { string s = new string(' ', 255); Form1.ShowWindow(i, 1); Form1.SetForegroundWindow(i); Thread.Sleep(250); SendKeys.SendWait(testenEingabe); } |
JüTho - Mi 02.12.09 15:59
gordon65 hat folgendes geschrieben : |
... (das ist ja eigentlich eine form eines anderen Programms) ... |
Entschuldige bitte, dass ich diese Information bei meiner Antwort überhaupt nicht berücksichtigt habe.
Wie ich gerade schon geschrieben habe: ich muss mir angewöhnen, erst alles zu lesen, dann nachzudenken usw.
Jürgen
gordon65 - Mi 02.12.09 17:24
weis das denn keiner ???
Wie warte ich ab besten bis ein fenster da ist.
ich hab hier ja schon ein programm das mir das fenster findet ... das kann man doch sicher irgendwie so machen das er irgendwie immer sucht ... und es dann startet wenn er es gefunden hat ..
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| int i = Form1.FindWindow(null, nameFenster);
if (i == 0) { MessageBox.Show("Es gibt nicht " + nameFenster, "Fehler"); }
else { string s = new string(' ', 255); Form1.ShowWindow(i, 1); Form1.SetForegroundWindow(i); Thread.Sleep(250); SendKeys.SendWait(eingabe); } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!