Fenster - Hide

  • Hallo,

    ich will ein Kommandozeilen-Tool mit einer GUI versehen. Das Tool läßt an einer Stelle eine Messagebox erscheinen, welche ich abfangen und managen will. Dabei soll dieses Fenster gar nicht erst sichtbar werden, sobald dessen Erscheinen von der GUI her ausgelöst wird. Momentan poppt das Fenster noch kurz hoch, bevor es auf "@SW_HIDE" gesetzt wird. Der Vorgang ist also etwa so:

    [autoit]


    $titel = "Unbenannt"
    Run("notepad")
    WinWait($titel)
    WinSetState($titel, "", @SW_HIDE)
    exit

    [/autoit]

    Weil es sich bei dem Tool nur um eine *.exe handelt, dachte ich, ich könnte das vielleicht über ProcessExists anfangs des Scripts schon mit WinSetState auf Hide stellen (soweit das dann überhaupt funktionieren sollte). Das konnte ich nicht weiter verfolgen, weil ich jetzt nicht weiss, wie ich von der PID zu einem Titel komme, den WinSetState verarbeiten kann.

    Hat jemand eine Idee?

    Dank und Gruß
    Thomas

  • Danke Stefan,

    mein Beispiel stößt hier an seine Grenzen. Ich rufe das Tool schon so auf:

    [autoit]


    Run(@WindowsDir & "\system32\cmd.exe /C start /realtime " & '"kk"' & " " & $adir & " " & $mdir_dat, "", @SW_HIDE)

    [/autoit]

    Trotzdem öffnet sich das o.g. Messagebox-Fenster. Das mit derselben PID läuft... ?(
    Viele Grüße
    Thomas

  • Hi,

    die Glaskugel ist ganz schön trübe. Post mal mehr Code......
    Mit den Schnippseln lässt sich nicht weiterhelfen: Topfschlagen ist angesagt.......

    8|
    Stefan

    [Edit]: Wenn Du ein Programm mit @SW_HIDE aufrufst, bedeutet das, dass das Programm nicht sichtbar läuft. Weitere Aufrufe aus diesem Programm, wie MsgBox oder Run ("xy") sind dann aber immer noch sichtbar und der Status @SW_HIDE muss explizit gesetzt werden.

    [autoit]


    MsgBox (0, "Sichtbar....", " oder nicht?")

    [/autoit]

    wird als sw_hide.exe kompiliert und mit folgendem Code aufgerufen:

    [autoit]


    Run ("sw_hide.exe", "", @SW_HIDE)

    [/autoit]


    MsgBox erscheint..

    2 Mal editiert, zuletzt von ojo (3. Februar 2010 um 12:15)

  • Hallo Stefan,

    es gibt nicht recht viel mehr sachdienlichen Code dazu. Ich lasse das Tool (192 kHz AudioPlayer) so wie beschrieben laufen, klicke auf einen Button (Pause) meiner GIU und das Tool-Fenster öffnet sich um zu fragen, ob ich wirklich auf "Pause" klicken will. Wenn Du das nachstellen möchtest, bräuchtest Du das Tool. Dabei handelt es sich um einen AudioPlayer, der komplett im RAM arbeitet, d.h. du müßtest einige Windows-Rechte (Lock Privileges) einstellen, damit das Teil überhaupt läuft. Ich dachte, dass sowas vielleicht zu weit führt. Deshalb die abstrakte Frage, wie man ein Fenster schon im Vornherein verstecken kann, falls es sich öffnet, bzw. wie man das kurze irritierende Aufpoppen unterdrücken kann...

    So poppt es auf jeden Fall kurz auf, bevor dann die Bestätigung folgt:

    [autoit]


    Func _pause()
    If WinWait($titel) Then
    WinSetState($titel, "", @SW_HIDE)
    ControlClick($titel, "", "Button1")
    EndIf
    EndFunc

    [/autoit]

    Viele Grüße
    Thomas