WinSetState, @SW_MINIMIZE, @SW_HIDE

  • hallo, wenn man einen fenster titel (WinGetTitle) hat, kann man ja mit "WinSetState" einfluss nehmen.

    hann man das auch auf einen Prozes umsetzen?

    If ProcessExists ( "test.exe" ) Then
    verkleinere das prozesfenster (WinSetState)
    EndIf

    Doktore

    • Offizieller Beitrag

    Hi,

    das war also keine Frage, sondern eine Bitte um ein Bsp, richtig?

    Hmmh mal schnell was zaubern *simsall.....*

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include<Array.au3>
    $a = ProcessGetId('TOTALCMD.EXE')
    ConsoleWrite(ProcessGetWindow($a[1]) & @CRLF)
    WinSetState(ProcessGetWindow($a[1]), "", @SW_HIDE)
    Sleep(2000)
    WinSetState(ProcessGetWindow($a[1]), "", @SW_SHOW)

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

    Func ProcessGetWindow($PId)
    If IsNumber($PId) = 0 Or ProcessExists(ProcessGetName($PId)) = 0 Then
    SetError(1)
    Else

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

    Local $WinList = WinList()
    Local $i = 1
    Local $WindowTitle = ""

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

    While $i <= $WinList[0][0] And $WindowTitle = ""
    If WinGetProcess($WinList[$i][0], "") = $PId Then
    $WindowTitle = $WinList[$i][0]
    Else
    $i = $i + 1
    EndIf
    WEnd

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

    Return $WindowTitle
    EndIf
    EndFunc ;==>ProcessGetWindow

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

    Func ProcessGetId($Process)
    If IsString($Process) = 0 Then
    SetError(2)
    ElseIf ProcessExists($Process) = 0 Then
    SetError(1)
    Else

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

    Local $PList = ProcessList($Process)
    Local $i
    Local $PId[$PList[0][0] + 1]

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

    $PId[0] = $PList[0][0]

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

    For $i = 1 To $PList[0][0]
    $PId[$i] = $PList[$i][1]
    Next

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

    Return $PId
    EndIf
    EndFunc ;==>ProcessGetId

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

    Func ProcessGetName($PId)
    If IsNumber($PId) = 0 Then
    SetError(2)
    ElseIf $PId > 9999 Then
    SetError(1)
    Else

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

    Local $PList = ProcessList()
    Local $i = 1
    Local $ProcessName = ""

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

    While $i <= $PList[0][0] And $ProcessName = ""
    If $PList[$i][1] = $PId Then
    $ProcessName = $PList[$i][0]
    Else
    $i = $i + 1
    EndIf
    WEnd

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

    Return $ProcessName
    EndIf
    EndFunc ;==>ProcessGetName

    [/autoit]

    Getestet mit dem Totalcommander

    So long,

    Mega

  • LOL das ist coool
    getestet mit cmd.exe geht wunderbar *daumen hoch* für meger :)
    :keks: :klatschen:
    mal schaun...vll könnt ich das brauchen wenn ich meinen bruder ärgern will xD

    der snoozer

  • hehe danke, wenn ich das auch schon so gut könnte :)

    es geht eigentlich um einen minimizer, der das aktive fenster verkleinert und wieder vergrössert.
    habe da auch mal ein simples script erstellt.

    Spoiler anzeigen
    [autoit]

    HotKeySet("{PGDN}", "_mini")
    HotKeySet("{PGUP}", "_maxi")

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

    $fenster = ""

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

    While 1
    Sleep(50)
    WEnd

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

    Func _mini()
    $fenster = WinGetTitle ( "", "")
    Sleep(50)
    WinSetState($fenster, "", @SW_MINIMIZE )
    EndFunc

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

    Func _maxi()
    WinSetState($fenster, "", @SW_MAXIMIZE )

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

    If WinActive($fenster) Then
    Else
    WinActivate($fenster)
    EndIf
    EndFunc

    [/autoit]


    das geht nicht schlecht, aber nicht bei einem spiel "FEAR" :(
    deine geht beim spiel auch nicht direkt, aber man bemerkt, das dein script was versucht :)

    sonst geht deins natürlich perfekt :kiss:

    Doktore