1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. IvanE

Beiträge von IvanE

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 15. November 2016 um 15:22

    Wenn ich folgendes mache dann klappt es:

    AutoIt
    Sleep(100000)
    $hWnd = WinWait("setup.exe","",3)
    $hControl = WinWait("[REGEXPCLASS:^(?>.(?!ciTEWindow))*$]","Setup is complete",300)
    ;$hControl = WinWait("","Setup is complete",300)
    WinSetTitle($hControl,"","finish")
    $hControl = WinWait("finish","Setup",10)
    if IshWnd($hControl) Then
    	ControlClick("finish","",2)
    	ConsoleWrite("hControl: " & $hControl & chr(13))
    EndIf


    Wie kann ich jetzt, ohne das ich eine fixe Wartezeit von 100 Sekunden setze, warten bis das Fenster ohne Titel erscheint um dann den OK-Button zu drücken?
    Ich dachte das WinWait bedeutet eben daß gewartet wird bis dies eintrifft. Und zwar 300 Sekunden lang bevor es dann abgebrochen bzw. weitergeht.

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 15. November 2016 um 10:57

    @autoBert

    Sorry, aber ich habe es falsch verstanden gehabt.
    Es ist ein Modales Fenster, aber kein Windows systemweites Fenster welches mir ALLES andere blockt. Es ist ein Programminternes modales Fenster.


    Es ist im prinzip wie bereits 4 vorherige Fenster die modal aufpoppen. Diese besitzen jedoch einen Titel über welchen ich das Fenster im Script ansprechen kann. Im letzten besagten Fenster gibt es kein Titel und ich kann es einfach nicht abfangen.
    Es ist eine Messagebox die den Installationsvorgang anhält (-> modal) aber eben nicht systemweit. Ohne Titel...

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 15. November 2016 um 09:30

    @autoBert

    Das Fenster IST Modal. Spielt das eine Rolle?
    Blöde Frage, wohl ja sonst würdest du es ja nicht sagen.
    Die Frage ist aber nun: was dann tun?

    @'RogerSt

    Es ist wohl ein System-Modales Fenster wie es autoBert bereits vermutete (Modal ist es und wahrscheinlich ein Windows-Systemfenster).
    Meinst du ein Keysend nutzt da was? Muss ich da nicht trotzdem den Fokus auf das Fenster legen?

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 14. November 2016 um 16:39

    Das mit dem 'im Vordergrund' hat nun geklappt.

    Jetzt habe ich aber das Problem das am Ende beim besagten Fenster der Focus wohl nicht auf dem Fenster ist.

    Ich dachte mir dann: ok, kein Problem. Ich baue ein 'WinActivate' ein (mit dem hWnd des vormals aktiven Fensters).
    Das funktioniert jedoch leider nicht.

    Mein Script kommt zum Ende und das abschliessende Fenster ('Setup is complete..') bleibt offen.

    Wenn ich das Script dann nochmals laufen lasse und alles auskommentiere und nur betreffende Stelle aktiv lasse und ein 'Sleep' von 3 Sekunden einbaue damit ich Zeit habe manuell mit der Maus den Focus zu setzen, funktioniert es! (ohne WinActivate -> mit WinActivate funktioniert auch das nicht).

    Hier die beschriebene Stelle wo es noch hapert:

    Code
    $hWnd = WinWait("setup.exe","",3)
    WinActivate($hWnd) ;WinActivate("setup.exe" <- auch statt $hWnd ausprobiert. Ohne Erfolg)
    $hControl = WinWaitActive("[REGEXPCLASS:^(?>.(?!ciTEWindow))*$]","Setup is complete",240)
    if IshWnd($hControl) Then
    	ControlClick($hControl,"","[CLASSNN:Button1]","",1)
    EndIf

    Wenn ich eine Zeile davor ein Sleep(3000) eingebe und das Script laufen lasse und gleich im Anschluss auf das Installationsfenster klicke, funktioniert es.

    Was könnte ich da jetzt machen um AutoIT anzuweisen auf jeden Fall den Focus auf das Fenster mit dem entsprechenden hWnd zu setzen?

    P.S.
    ich habe nun die Handles per ConsoleWrite ausgegeben lassen:
    Wenn ich das Script manuell nachlaufen lasse (alles andere auskommentiert bis auf dne letzten Absatz) und selber den Focus mit der Maus setze, bekomme ich das Handle des Installations-Fensters.
    Wenn ich es per WinActivate mache bekomme ich eine 0 als Handle!
    Was macht das WinActivate wenn es kein Focus setzt??

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 14. November 2016 um 14:03

    @AspirinJunkie

    Ja, ich habe das Script nun komplett leer gemacht nach dem ' Srcipt Start - Add your code below here' und den Einzeiler eingefügt.

    Hier die komplette Datei:

    Code
    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=D:\OpenEdge.exe
    #AutoIt3Wrapper_Outfile_x64=D:\OpenEdge.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------
    
    
     AutoIt Version: 3.3.14.2
     Author:         myName
    
    
     Script Function:
    	Template AutoIt script.
    
    
    #ce ----------------------------------------------------------------------------
    
    
    ; Script Start - Add your code below here
    
    
    msgbox(0,"",IshWnd(WinWaitActive("[REGEXPCLASS:^(?>.(?!ciTEWindow))*$]","Setup is complete",5)))
    Alles anzeigen

    Und wenn ich das nun per F5 laufen lasse, dann bekomme ich immer eine '0', egal ob es den Text irgendwo gibt oder nicht (-> dfhjsddjask).

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 14. November 2016 um 13:38

    @AspirinJunkie

    Zitat von AspirinJunkie

    msgbox(0,"",IshWnd(WinWaitActive("[REGEXPCLASS:^(?>.(?!ciTEWindow))*$]","fseafs",5)))

    Leider bringt er mir nun immer eine '0'. Egal ob ich fseafs oder tatsächlich 'Setup is complete' eingebe. ('Setup is complete. You may run the installed program.' steht nach wie vor im Installationsprogramm welches die Eingabe (Klick auf den 'OK'-Buttin) erwartet.

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 14. November 2016 um 13:05

    @BugFix

    Das 'Finder Tool' aus dem AutIt v3 Windows Info ziehe ich mit der Maus auf die MSGBOX mit der Meldung 'Setup is complete. You may run the installed program.' und zwar auf den 'OK'-Button um genau zu sein.
    Das was ich in der Summary erhalten habe, habe ich bereits gepostet. Was du nun mit dem Sucheregebnis des Fensters meinst, weiß ich nicht so genau?
    Meinst du den 'visible Text'? Der wäre

    '
    OK
    Setup is complete. You may run the installed program.'

    Wenn ich nicht auf den 'OK' button mit dem 'Finder Tool' gehe, sondern das Fenster, also die Messagebox' auswähle, dann bekomme ich das:

    Code
    >>>> Window <<<<
    Title:	
    Class:	#32770
    Position:	781, 106
    Size:	398, 162
    Style:	0x94C801C5
    ExStyle:	0x00010101
    Handle:	0x00000000003006F2
    
    
    >>>> Control <<<<
    Class:	
    Instance:	
    ClassnameNN:	
    Name:	
    Advanced (Class):	
    ID:	
    Text:	
    Position:	
    Size:	
    ControlClick Coords:	
    Style:	
    ExStyle:	
    Handle:	
    
    
    >>>> Mouse <<<<
    Position:	932, 199
    Cursor ID:	0
    Color:	0xFFFFFF
    
    
    >>>> StatusBar <<<<
    
    
    >>>> ToolsBar <<<<
    
    
    >>>> Visible Text <<<<
    OK
    Setup is complete.  You may run the installed program.
    
    
    
    
    >>>> Hidden Text <<<<
    Alles anzeigen

    Dein Umweg hört sich auch vielversprechend an. Ich finde das Fenster mit dem Titel 'setup.exe' (das steht im Titel nämlich so), ermittle die hWnd (was ich bereits in einem der vorherigen Schritte bereits mache) und wie kann ich daraus nun die 'Child-Fenster abfragen?


    @AspirinJunkie

    Wenn das so ist, dann müsste ich es ja hinbekommen wenn ich das Script anders ausführe, also ohne das der Editor offen ist. Da ich absoluter Anfänger was AutoIT ist, weiß ich nicht genau wie ich das anstellen soll?
    Irgendwie kompilieren und dann laufen lassen oder so ähnlich?

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 14. November 2016 um 11:41

    @BugFix

    Danke für die schnelle Antwort.

    Leider klappt es nicht: Egal was ich im Feld 'Text' angebe bekomme ich immer ein IsHwnd = 1.
    Also wenn ich im Textfeld auch "andjasndk" angebe ist das Ergebnis positiv!
    Also wenn ich z.B. folgendes im Script implementiere bekomme ich auch eine 1:

    Code
    msgbox(0,"",IshWnd(WinWaitActive("","fseafs",5)))

    Den Text 'fseafs' gibt es so natürlich nicht...

    Ich teste es momentan in meinem Installationsscript wobei ich alles auskommentiert habe bis auf diese Zeile.

  • Fenster ohne Titel aber mit bestimmten Text 'abfragen'?

    • IvanE
    • 14. November 2016 um 10:29

    Hallo Leute,

    ich bin neu hier und will gleich mal meine erste Frage stellen. Bitte habt ein Nachsehen mit mir wenn ich mir nicht alle Forumsregeln oder bereits existierende Beiträge durchgelesen habe. Bei mir brennt es und daher will ich gleich mal loslegen:

    Ich habe AutoIT nun zum ersten mal benutzt um eine automatische Installation von OpenEdge (Progress-DB/ODBC) umzusetzen. Soweit funktioniert es auch bis auf das letzte abschließende 'Ok' am Ende nachdem alles schön installiert wurde.

    Ich kann das Fenster nicht genau bestimmen und bekomme somit kein Focus und kein ControlClick / Send hin.
    Mit dem 'AutoIt v3 Windows Info' bekomme ich zu diesem PopUp-Fenster leider kein Titel bzw. dieser ist Leer.
    Wenn ich nach leeren Titel 'suche' (z.B. wenn ich WinExists benutze) dann bekomme ich immer eine 1 zurückgeliefert. Ich bleibe mal bei WinExists -> Egal ob der Text als 2. Parameter existiert oder nicht! Auch wenn ich als 1. Parameter "[CLASS: Button]" und als 2.PArameter "Ok" angebe findet er nichts.
    Kann mir mal jemand einen Hiweis geben was ich da machen kann? Ich nutze AutoIt erst seit Freitag bei der Arbeit. Also gerade mal erst einen Tag.

    Hier die Summary vom 'AutoIt v3 Windows Info' bezüglich des Buttons welches ich am Ende der Installation drücken möchte, also sobald es erschienen ist:

    Code
    >>>> Window <<<<
    Title:	
    Class:	#32770
    Position:	757, 271
    Size:	398, 162
    Style:	0x94C801C5
    ExStyle:	0x00010109
    Handle:	0x00000000002504CC
    
    
    >>>> Control <<<<
    Class:	Button
    Instance:	1
    ClassnameNN:	Button1
    Name:	
    Advanced (Class):	[CLASS:Button; INSTANCE:1]
    ID:	2
    Text:	OK
    Position:	285, 96
    Size:	88, 26
    ControlClick Coords:	51, 12
    Style:	0x50030000
    ExStyle:	0x00000004
    Handle:	0x000000000017044A
    
    
    >>>> Mouse <<<<
    Position:	1096, 405
    Cursor ID:	0
    Color:	0xE1E1E1
    
    
    >>>> StatusBar <<<<
    
    
    >>>> ToolsBar <<<<
    
    
    >>>> Visible Text <<<<
    OK
    Setup is complete.  You may run the installed program.
    
    
    
    
    >>>> Hidden Text <<<<
    Alles anzeigen


    Kann mir bitte jemand sagen wie ich das umsetzen kann damit das Script wartet bis dieses Fenster/Control erscheint um dann ein ControlClick abzusetzen bzw. wie ich das Fenster ermitteln kann da ja der Titel fehlt?
    Ich bedanke mich schon einmal im Voraus recht herzlich für eure Hilfe!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™