Timeout bei ObjGet?

  • Hi,

    ich lese mit folgendem Script dem Username eines an einem anderen Rechner im Netzwerk angemeldeten Users aus:

    Spoiler anzeigen
    [autoit]

    $wmiRoot = ObjGet("winmgmts:\\derrechner\root\CIMV2")
    $wmiColl = $wmiRoot.ExecQuery("Select * FROM Win32_ComputerSystem ")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $wmiObj In $wmiColl
    $user = String($wmiObj.UserName)
    MsgBox(0, "", $user)
    Next

    [/autoit]

    Problem ist nun das wenn diese Auslesen aus irgendwelchen Gründen nicht möglich ist, ObjGet ewig weiter Versucht den Wert auszulesen. Gibt es irgendwie die Möglichkeit einen Timeout zu setzen.


    Hab dann noch eine zweite Frage. Ist es möglich auch auszulesen ob auf dem Rechenr grade der Loginbildschrim ist oder er noch am Hochfahren ist?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Wie meinst du das mit login bildschirm wenn der loginbildsschim da ist läuft ein programm auch wenn es im autorun ist noch gar nicht

  • Zitat

    das wenn diese Auslesen aus irgendwelchen Gründen nicht möglich ist

    Welche Gründe könnten da in Frage kommen? Kann man das Script so schreiben, daß ObjGet nur dann abfragt, wenn es auch eine Antwort gibt? Könnte man mit adlibenable() nach einer bestimmten Zeitspanne eine Funktion aufrufen, welche den Misserfolg anzeigt? Fragen über Fragen......

  • Schaue dir mal die 2 Links an:

    http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
    http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx

    Es geht um SWbemLocator.ConnectServer Methode, wo man mit iSecurityFlags eine Timeout setzen kann.

    iSecurityFlags:
    wbemConnectFlagUseMaxWait128 (0x80) => The ConnectServer call is guaranteed to return in 2 minutes or less. Use this flag to prevent your program from hanging indefinitely if the connection cannot be established.

    Hatte mit meinem SIC2 ähnliche Probleme, aber ich benutze Multiprozessing, so dass ich dieses Problem nicht mehr habe, da ein Subprozess immer kontrolliert, ob das Hauptprogramm hängt.
    Bei Multiprozessen überwacht das Hauptprogramm die Subprozesse...

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Schaue dir mal die 2 Links an:

    http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
    http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx

    Es geht um SWbemLocator.ConnectServer Methode, wo man mit iSecurityFlags eine Timeout setzen kann.

    iSecurityFlags:
    wbemConnectFlagUseMaxWait128 (0x80) => The ConnectServer call is guaranteed to return in 2 minutes or less. Use this flag to prevent your program from hanging indefinitely if the connection cannot be established.

    Muss ich mir morgen mal anschauen.


    Wie meinst du das mit login bildschirm wenn der loginbildsschim da ist läuft ein programm auch wenn es im autorun ist noch gar nicht

    Möchte eigentlich remote Prüfen ob ein Rechner nach dem starten schon soweit hochgefahren ist, dass man sich anmelden kann. Über Ping kann man das ja nicht machen da auf Ping ja schon vor dem Loginbildschirm reagiert wird.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.