Problem mit warten auf Fenster zu dann weiter

  • keiner ne ahnung wo mein fehler ist ?
    So nun habe ich was automatisiert und naja bis zum ende des Fensters gehts danach macht er nicht weiter


    Spoiler anzeigen

    WinWait("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)")
    WinWaitActive("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)","")
    While WinExists('PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)')
    WEnd


    nach dem hier soll er wieder aufs cmd fenster springen rest eingeben dann paar dateien kopieren

    macht er aber nicht. Das PTC programm schließt automatisch (eigene install autoinstall routine) wenn das fenster zu ist soll der weiter machen

    weis wer woran es liegt hier der vollständige code

    Spoiler anzeigen

    run("c:\windows\system32\cmd.exe")
    WinWait("c:\windows\system32\cmd.exe")
    send("{c}{d}{.}{.}")
    send("{ENTER}")
    send("{c}{d}{.}{.}")
    send("{ENTER}")
    send("{c}{d}{.}{.}")
    send("{ENTER}")
    send("{n}{e}{t}{space}{u}{s}{e}{space}{w}{:}{space}{\}{\}{m}{e}{c}{h}{0}{0}{i}{\}{P}{r}{o}{e}{c}{o}{n}{f}{i}{g}{\}{P}{r}{o}{E}{1}{3}{2}{x}{6}{4}{space}{/}{p}{e}{r}{s}{i}{s}{t}{e}{n}{t}{:}{n}{o}")
    sleep(1000)
    send("{ENTER}")
    send("{w}{:}")
    send("{ENTER}")
    send("{c}{d}{1}{\}{s}{e}{t}{u}{p}{.}{e}{x}{e}{SPACE}{-}{u}{i}{t}{r}{a}{i}{l}{Space}{i}{n}{s}{t}{a}{l}{l}{.}{t}{x}{t}")
    sleep(5000)
    send("{ENTER}")
    WinWait("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)")
    WinWaitActive("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)","")
    While WinExists('PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)')
    WEnd
    sleep(1000)
    run("c:\windows\system32\cmd.exe")
    sleep(1000)
    send("{i}{f}{space}{e}{x}{i}{s}{t}{space}{w}{:}{space}{n}{e}{t}{space}{u}{s}{e}{space}{w}{:}{space}{/}{d}{e}{l}{e}{t}{e}")
    sleep(1000)
    send("{ENTER}")


    habe es mal gändert

    Spoiler anzeigen

    #RequireAdmin
    Shellexecute ("c:\windows\system32\cmd.exe")
    WinWait("c:\windows\system32\cmd.exe")
    send("{c}{d}{.}{.}")
    send("{ENTER}")
    send("{c}{d}{.}{.}")
    send("{ENTER}")
    send("{c}{d}{.}{.}")
    send("{ENTER}")
    send("{n}{e}{t}{space}{u}{s}{e}{space}{w}{:}{space}{\}{\}{m}{e}{c}{h}{0}{0}{i}{\}{P}{r}{o}{e}{c}{o}{n}{f}{i}{g}{\}{P}{r}{o}{E}{1}{3}{2}{x}{6}{4}{space}{/}{p}{e}{r}{s}{i}{s}{t}{e}{n}{t}{:}{n}{o}")
    sleep(1000)
    send("{ENTER}")
    send("{w}{:}")
    send("{ENTER}")
    send("{c}{d}{1}{\}{s}{e}{t}{u}{p}{.}{e}{x}{e}{SPACE}{-}{u}{i}{t}{r}{a}{i}{l}{Space}{i}{n}{s}{t}{a}{l}{l}{.}{t}{x}{t}")
    sleep(5000)
    send("{ENTER}")
    WinWait("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)")
    WinWaitActive("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)","")
    While WinExists("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)")
    WEnd
    sleep(1000)
    WinWait("c:\windows\system32\cmd.exe","")
    If Not WinActive("PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)","") Then WinActivate("c:\windows\system32\cmd.exe","")
    sleep(1000)
    send("{i}{f}{space}{e}{x}{i}{s}{t}{space}{w}{:}{space}{n}{e}{t}{space}{u}{s}{e}{space}{w}{:}{space}{/}{d}{e}{l}{e}{t}{e}")
    sleep(1000)
    send("{ENTER}")
    MsgBox(0,"","PROE wurde erfolgreich Installiert nun werden die Umgebungen übertragen",2)
    sleep(1000)
    DirCopy ( "\\mech00i\Proeconfig\ProE132x64\sw\", "c:\sw\", 1)
    sleep(1000)
    DirCopy ( "\\mech00i\Proeconfig\ProE132x64\sm\","C:\ProgramData\Microsoft\Windows\Start Menu\",1)
    sleep(1000)
    MsgBox(0,"","möp",2)

    mal sehen obs besser geht :sleeping:
    ok bleibt an der selben stelle leider stehen verdammt grml

  • schon mal was von einem Editbutton gehört?
    Bei Send ist es sinnvoller die zu drückenden Tasten als String zu übergeben als alles in geschweifte klammern zu setzen Bsp:

    [autoit]


    Send("Hallo")

    [/autoit]

    Ich verstehe dein Problem nicht ganz, suchst du

    [autoit]

    WinActivate

    [/autoit]

    ?
    Oder vielleichjt für die Whileschleife

    [autoit]

    ExitLoop

    [/autoit]

    ?

    Außerdem setzt du autoit-code besser zwischen das da im Forum, dann ist der Code besser zu übersehen:

    Code
    [autoit]
    ;dein code
    [/autoit]
  • ich suche wenn das PTC Fenster Fertig ist geht das zu von dem Programm selber aus nicht von autoit, jetzt will ich das wenn das PTC zu geht automatisch wieder auf cmd geht und dort weiter macht ^^ wies soll

  • Wieso kompliziert über CMD send, warum nicht per Batch oder direkt ?

    [autoit]


    DriveMapAdd('W:', '\\mech00i\Proeconfig\ProE132x64')
    if FileExists ('W:\setup.exe') Then run('W:\setup.exe -uitrail W:\install.txt')
    WinWait('PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)')
    WinWaitActive('PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)','')
    While WinExists('PTC.Setup - Pro/ENGINEER Wildfire 4.0 (M132)')
    DriveMapDel ( 'W:')

    [/autoit]
  • Oh sorry zu schnell geschrieben.

    So gings auch...

    [autoit]


    DriveMapAdd('W:', '\\mech00i\Proeconfig\ProE132x64')
    if FileExists ('W:\setup.exe') Then
    run('W:\setup.exe -uitrail W:\install.txt')
    While ProcessExists ('setup.exe')
    SplashTextOn ( '', 'Programm wird installiert, bitte warten...')
    Sleep(1000)
    WEnd
    DriveMapDel ( 'W:')
    Else
    MsgBox(0,0,'Verbindung zu \\mech00i\Proeconfig\ProE132x64 nicht möglich')
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von eule (27. September 2010 um 15:59)

    • Offizieller Beitrag

    ok grad getestet die ändert sich auch mit jedem start


    Das ist doch völlig Rille, ob die sich bei jedem Start ändert. Lies einfach in deinem Skript die aktuelle PID der Setup-Routine aus und arbeite mit dieser Variablen weiter.

  • mh Bugfix?
    Der Prozessname ändert sich bei jedem start und die PID wie soll ich dem Script den mitteilen achte auf Prozess "PTC37364tmp.exe" oder beim anderem Rechner "PTC53546tmp.exe" verstehst wie ich mein?

    • Offizieller Beitrag

    Ungeprüft, aber sollte laufen:
    (Voraussetzung: Prozessname immer PTCZIFFERNtmp.exe

    Spoiler anzeigen
    [autoit]

    Local $aPList = ProcessList()
    Local $PID = 0, $Name
    For $i = 1 To $aPList[0][0]
    If StringRegExp($aPList[$i][0], "PTC\d+tmp.exe") Then
    $PID = $aPList[$i][1]
    $Name = $aPList[$i][0]
    ExitLoop
    EndIf
    Next
    If $PID = 0 Then
    MsgBox(0, '', 'kein PTC-Prozeß aktiv')
    Else
    MsgBox(0, '', 'PID des PTC-Prozess: ' & $PID & @CRLF & 'Przessname: ' & $Name)
    EndIf

    [/autoit]
  • Hey super danke dir :) nun leider sind da ab und an auch buchstaben drin ^^ jetzt grade zb PTC1d98_tmp.exe

    ergo kein prozess aktiv

    • Offizieller Beitrag

    geht auch nicht wahrscheinlich weil "_" ab und an drin ist


    Der Unterstrich wird mit "\w" im Pattern erkannt. Dadran kann es nicht liegen.
    Aber mal ganz anderer Hinweis. Hast du es mal versucht mit Erkennung teilweiser Fenstertext? Also nur den Teil vom Titel verwenden, der immer gleich ist?
    Kannst du mit Opt("WinTitleMatchMode", 2) erreichen.