WinSetState Titel aus Inputbox

  • ou

    hab grad kA wie ich alle sichtbare und unsichtbaren fenster anzeigen lassen kann

    egal hier mein scriptchen xD

    ALT + F9 zeigt die GUI zum verstecken von fenstern
    ALT +F10 versteckt die GUI zum verstecken von fenstern
    END beendet das script

    viel spass xD

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=
    $HideShow = GUICreate("Hide-Show Window", 330, 122, 439, 539)
    GUISetOnEvent($GUI_EVENT_CLOSE, "HideShowClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "HideShowMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "HideShowMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "HideShowRestore")
    $Hide = GUICtrlCreateButton("Hide Window", 8, 8, 313, 33, 0)
    GUICtrlSetOnEvent($Hide, "HideClick")
    $Show = GUICtrlCreateButton("Show Window", 8, 80, 313, 33, 0)
    GUICtrlSetOnEvent($Show, "ShowClick")
    $Input1 = GUICtrlCreateInput("Fensternamen bitte eingeben.", 8, 48, 313, 24)
    GUICtrlSetFont($Input1, 11, 400, 0, "MS Sans Serif")
    GUICtrlSetResizing($Input1, $GUI_DOCKAUTO)
    GUICtrlSetOnEvent($Input1, "Input1Change")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    HotKeySet("{END}", "_Exit")
    HotKeySet("!{F9}", "_showgui")
    HotKeySet("!{F10}", "_hidegui")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Exit()
    Exit 0
    EndFunc ;==>_exit

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

    Func HideClick()
    $window = GUICtrlRead($Input1)
    If WinExists($window) Then
    WinSetState($window, "", @SW_HIDE)
    EndIf
    EndFunc ;==>HideClick

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

    Func ShowClick()
    $window = GUICtrlRead($Input1)
    If WinExists($window) Then
    WinSetState($window, "", @SW_SHOW)
    EndIf
    EndFunc ;==>ShowClick

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

    Func _showgui()
    GUISetState(@SW_SHOW)
    EndFunc ;==>_showgui

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

    Func _hidegui()
    GUISetState(@SW_HIDE)
    EndFunc ;==>_hidegui

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

    Func HideShowClose()
    GUISetState(@SW_HIDE)
    EndFunc ;==>HideShowClose

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

    Func HideShowMaximize()

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

    EndFunc ;==>HideShowMaximize

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

    Func HideShowMinimize()

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

    EndFunc ;==>HideShowMinimize

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

    Func HideShowRestore()

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

    EndFunc ;==>HideShowRestore

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

    Func Input1Change()

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

    EndFunc ;==>Input1Change

    [/autoit]
  • OK danke fürs Script. :thumbup:

    Hab noch

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit]

    hinzugefügt. :P

    Falls noch ne Lösung für mein Problem kennt, bitte schreiben. 8|

    PS: Alle sichtbaren/unsichtbaren Fenster anzeigen wäre nicht nötig, nur das verstecken ^^

    Greez mcOOcr

  • Opt("WinTitleMatchMode", 2) <-- was bringt des schonwieder ^^

    wegen deinem problem, was hast du fürn problem oO kapier ned was du noch willst )=

  • Durch die Option-

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit]

    musst du nur einen Teil des Fensternamen eingeben (Nützlich bei Internet Explorer, da sich der Titel der Webseite anpasst)

    Mein Problem:

    Ich habe eine Eingabefeld(Mehrzeilige Textbox), und die Funktion WinMatchMode("Fenstertitel","",@SW_HIDE)

    Bei der Funktion möchte ich das die Fenstertitel aus dem Eingabefeld ausgelesen werden (wie bei FastWindowHider).
    Also ich gebe zB. Firefox, Internet Explorer, Minesweeper,... in das Eingabefeld ein, drücke auf Verstecken, und die Funktion WinSetState("","",@SW_HIDE) sollte nun alle Fenster mit den Titeln aus dem Eingabefeld verstecken. 8|

    Greez mcOOcr

  • und werden dann in die andere textbox der versteckten fenster kopiert? das sollte gehen ^^
    weisst du wie ich machen kann das man ne textbox NICHT verändern kann? ^^

    EDIT 1:

    ich geh essen, am nachmittag hab ich keine zeit ^^ werd ca um 18:00 vom arbeiten zurück sein dann mach ich weiter ;)

    mfg

    Einmal editiert, zuletzt von K1773R (24. März 2009 um 12:01)

  • Schalte im Koda bei der TextBox die ES_ReadOnly bei Stile ein.

    Öhm ja eventuell möglich, aber ich kann nicht WinSetState($EingabeFeld1,"",@SW_HIDE) nehmen das funktioniert nicht, das ist auch das Problem wie das dann funktionieren könnte ? 8|

    Greez mcOOcr

  • joar is klar das das geht geht ^^ da müssen ma dann mit stringsplit und arrasy schaffen ;) werd jetzt essen gehn, hab am nachmittag keine zeit! werd wenn ich zuhause bin weitermachen. mfg

  • Hallo,

    Habe es geschafft einen String aus dem Eingabefeld auszulesen, und WinSetState... funktioniert dann auch. :D
    Aber leider nur für einen Fenstertitel.

    Spoiler anzeigen
    [autoit]


    If $wndbool = true then ;wndbool = Boolean Wert
    $name = GUICtrlRead($hidelist) ;hidelist = Eingabefeld (Multiline Textbox)
    WinSetState($name,"",@SW_HIDE) ;Funktion Fenster verstecken
    $wndbool = false ;Boolean Wert zurücksetzten

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

    ElseIf $wndbool = false then ;Funktion Fenster wieder anzeigen
    $name = GUICtrlRead($hidelist) ;siehe oben
    WinSetState($name,"",@SW_Show) ;siehe oben
    $wndbool = True ;Boolean Wert zurücksetzten
    EndIf

    [/autoit]

    Ich nehme an jetzt fehlt nur noch der StringSplit oder Zeilenweise auslesen wäre auch möglich denke ich. :)

    Greez mcOOcr

  • So, habe mich das erste mal mit StringSplit und Arrays versucht ^^ naja es funktioniert fast so wie es sollte... kannst es ja mal ausprobieren. Habe es hinbekommen das er zumindest die strings trennt und dann in einer MSG box anzeigt... Mit WinSetState hat es bei mir irgentwie dann nicht mehr so ganz Funktioniert.

    Vielleicht Hilft es dir ja.

    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt("WinTitleMatchMode", 2)

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

    $GUI = GUICreate("Form1", 225, 225)
    $Edit = GUICtrlCreateEdit("",10,10)
    $Verstecken = GUICtrlCreateButton("Verstecken",50,200)
    $Anzeigen = GUICtrlCreateButton("Anzeigen",125,200)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Anzeigen
    _Anzeigen()
    Case $Verstecken
    _Verstecken()
    EndSwitch
    WEnd

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

    Func _Anzeigen()
    $Name = GUICtrlRead($Edit)
    $Name = StringSplit($Name, ",")
    $Name[0] = UBound($Name)-1
    If $Name[0] = 0 Then MsgBox(64,"Fehler","Bitte etwas eingeben.")
    For $i = 1 to $Name[0]
    If $Name[$i] = "" Then $i += 1
    MsgBox(64,"Zeige an", $Name[$i])
    Next
    EndFunc

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

    Func _Verstecken()
    $Name = GUICtrlRead($Edit)
    $Name = StringSplit($Name, ",")
    $Name[0] = UBound($Name)-1
    If $Name[0] = 0 Then MsgBox(64,"Fehler","Bitte etwas eingeben.")
    For $i = 1 to $Name[0]
    If $Name[$i] = "" Then $i += 1
    MsgBox(64,"Verstecke", $Name[$i])
    Next
    EndFunc

    [/autoit]

    Wäre nett wenn sich das mal einer durchschauen könnte und mir sagen könnte ob ich da vielleicht etwas überflüssiges reingebaut habe oder vielleicht hat auch einer verbesserungsvorschläge.

    MFG SiLenCa

    Einmal editiert, zuletzt von SiLenCa (24. März 2009 um 16:58)

  • Sehr schön ! :D

    Danke SiLenCa, jetzt kapier ich das mit StringSplit auch :>.
    Werd mal sehen ob ich da vllt noch was mit dem WinSetState machen kann. :rolleyes:

    Greez mcOOcr

  • Okay, poste dann bitte das Ergebnis wenn du es geschafft hast ;). Eine Frage jedoch noch meinerseits zu meinem Code (Siehe weiter oben):
    Wenn man in meine Editbox nichts reinschreibt, dann kriege ich mit _ArrayDisplay($Name) trotzdem immer für $Name[0] den wert 1 raus. Sollte dieser nicht 0 sein ? Wie kann man das beheben ?

  • Nunja,

    Rückgabewert
    Erfolg: 1
    Fehler: 0 und setzt @error:
    1 - $avArray ist kein Array
    2 - $avArray hat zu viele Dimensionen. Es werden nur 2-dimensionale Arrays unterstützt

    :thumbup:


    Hastu dir schon die chm zu dieser Funktion durchgelesen ? 8|
    Hätte auch gesagt 0 wäre der Rückgabewert.

    Greez mcOOcr

  • Nunja,

    Rückgabewert
    Erfolg: 1
    Fehler: 0 und setzt @error:
    1 - $avArray ist kein Array
    2 - $avArray hat zu viele Dimensionen. Es werden nur 2-dimensionale Arrays unterstützt

    Ja, das hatte ich angeschaut. Jedoch gibt $Name[0] die Anzahl der Strings zurück. Müsste doch bei leerem Textfeld 0 sein oder ?

  • LoL ja, ich kenn diese Funktion nicht gut genug um dir jetzt etwas genaueres sagen zu können. :rolleyes:

    PS: Ein Fenster zu verstecken ist kein problem: WinSetState($Name[$i],"",@SW_HIDE) einfach nach der msgbox einfügen, aber funktioniert leider nur mit einem Fenster Namen. 8|

    Edit: Eine gute Idee wäre villeicht für jede Zeile im Eingabefeld (die einen String beinhaltet) ein Label, eine Textbox,... mit fortlaufenden Array zu machen, und diese dann mit der Funktion WinSetState($label[0],"",@SW_HIDE) verwenden. :thumbup:

    Greez mcOOcr

    Einmal editiert, zuletzt von mcoocr (24. März 2009 um 17:49)

  • Bei mir Funktioniert es auch mit mehreren... also Hide und Show... darfst halt kein "Leerzeichen" nach dem Komma machen: Internet Explorer,Mozilla

  • Aja thx,

    Mit $Name = StringSplit($Name, " ") ist es noch besser. :D
    Gibts ein StringSplit für eine Enter Zeilenschaltung ?

    • Offizieller Beitrag

    Ich habe das Script von SiLenCa mal etwas angepasst:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Opt("WinTitleMatchMode", 2)

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

    $GUI = GUICreate("Form1", 225, 225)
    $Edit = GUICtrlCreateEdit("", 10, 10)
    $Verstecken = GUICtrlCreateButton("Verstecken", 50, 200)
    $Anzeigen = GUICtrlCreateButton("Anzeigen", 125, 200)
    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Anzeigen
    _WindowState(@SW_SHOW)
    Case $Verstecken
    _WindowState(@SW_HIDE)
    EndSwitch
    WEnd

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

    Func _WindowState($sState)
    Local $aWinList = StringSplit(GUICtrlRead($Edit), @CRLF, 1)
    If @error Then Return MsgBox(64, "Fehler", "Bitte etwas eingeben.")
    For $i = 1 To $aWinList[0]
    If $aWinList[$i] = "" Then ContinueLoop
    WinSetState($aWinList[$i], "", $sState)
    Next
    EndFunc ;==>_WindowState

    [/autoit]
  • Oscar ;) ,Vielen dank is viel leichter so wie du es gemacht hast... nur irgentwie komme ich nie auf solche Ideen. :)

    Edit: Bei dem Script von Oscar funktioniert es leider nicht, wenn man nur 1 Fenster verstecken will.

    2 Mal editiert, zuletzt von SiLenCa (24. März 2009 um 18:21)

  • Wunderbar Oscar, Danke :D

    Kann man den WinTitleMatchMode so anpassen das er die groß & klein schreibung ignoriert.
    Weil wenn ich HTML Help verstecken will und html eingebe funktioniert es nicht :pinch:

    Greez mcOOcr