Autor Beitrag
gordon65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 01.12.09 21:35 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: 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:

ausblenden 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);//anzeigen
                    Form1.SetForegroundWindow(i);//in den vordergrund bringen
                    Thread.Sleep(250);//warten bis es im fordergrund ist
                    SendKeys.SendWait(testenEingabe);//keys senden
                }
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 02.12.09 15:59 
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
... (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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: 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 ..
ausblenden 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);//anzeigen
                Form1.SetForegroundWindow(i);//in den vordergrund bringen
                Thread.Sleep(250);//warten bis es im fordergrund ist
                SendKeys.SendWait(eingabe);//keys senden
            }