Button ist nicht transparent

  • Hallo!

    Script:

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #Include
    #include

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

    Dim $Automatisch
    Dim $Basic
    Dim $Advanced
    Dim $Delete
    Dim $ButtonGui
    Dim $obg1
    Dim $obg2
    Dim $obg3
    Dim $obg4
    Dim $obg5
    Dim $obg6
    Dim $Button
    Dim $msgn
    Dim $n
    Dim $ort
    Dim $Array
    Dim $GuiOG
    Dim $input1
    Dim $og1, $og2, $og3, $og4, $og5, $og6
    Dim $place1
    Dim $place3
    Dim $place2
    Dim $Adv
    Dim $SGui
    Dim $og
    Dim $pic111
    Dim $printer
    Dim $server
    Dim $Gui1
    Dim $pr2
    Dim $srv3
    Dim $gui_check_1, $gui_check_2, $gui_check_3, $gui_check_4, $gui_check_5, $gui_check_6, $gui_check_7, $gui_check_8, $gui_check_9
    Dim $linkname
    Dim $read
    Dim $title
    $an = "am"
    Dim $namebutton
    Dim $z
    Dim $place1GUI, $place2GUI, $place3GUI

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

    Create()

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

    While 1
    Sleep(100)
    WEnd

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

    Func Create()
    $SGui = GUICreate("Drucker", "320", "100")
    GUICtrlCreateLabel("Wie möchten Sie die Drucker installieren?", 10, 20)
    $Automatisch = GUICtrlCreateButton("Automatisch", "5", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion werden alle Drucker in der Nähe installiert.", "Automatisch einrichten")
    $Basic = GUICtrlCreateButton("Nach Standort", "85", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie ihren Standort angeben." & @CRLF & "Danach werden alle umliegenden Drucker installiert.", "Nach Standort einrichten")
    $Advanced = GUICtrlCreateButton("Einzeln", "165", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie Drucker einzeln installieren." & @CRLF & "Dazu müssen Sie den Namen des Druckers wissen.", "Einzeln einrichten")
    $Delete = GUICtrlCreateButton("Löschen", "245", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie Drucker löschen." & @CRLF & "Wenn Sie nicht alle löschen wollen," & @CRLF & "müssen Sie den Namen des Druckers wissen.", "Löschen")
    GUICtrlCreatePic(@ScriptDir & "\System\printer.bmp", "250", "0", "67", "56", $WS_CLIPSIBLINGS)

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

    $Gui1 = GUICreate("Standort", "670", "881")

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

    $og6 = GUICreate("Obergeschoss 6", 124, 32, 430, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg6 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton.gif", 0, 0, 0, 0)

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

    $og5 = GUICreate("Obergeschoss 5", 124, 32, 280, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg5 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton.gif", 0, 0, 0, 0)

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

    $og4 = GUICreate("Obergeschoss 4", 124, 32, 130, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg4 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton.gif", 0, 0, 0, 0)

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

    $og3 = GUICreate("Obergeschoss 3", 124, 32, 430, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg3 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton.gif", 0, 0, 0, 0)

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

    $og2 = GUICreate("Obergeschoss 2", 124, 32, 280, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg2 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton.gif", 0, 0, 0, 0)

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

    $og1 = GUICreate("Obergeschoss 1", 124, 32, 130, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg1 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton.gif", 0, 0, 0, 0)

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

    $ButtonGui = GUICreate("back", 57, 53, 600, 10, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $Button = GUICtrlCreatePic(@ScriptDir & "\System\back.gif", 0, 0, 0, 0)

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

    $place1GUI = GUICreate("place1", 219, 266, 77, 237, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place1 = GUICtrlCreatePic(@ScriptDir & "\System\red.gif", 0, 0, 0, 0)

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

    $place2GUI = GUICreate("place2", 217, 314, 155, 435, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place2 = GUICtrlCreatePic(@ScriptDir & "\System\blue.gif", 0, 0, 0, 0)

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

    $place3GUI = GUICreate("place3", 359, 230, 288, 525, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place3 = GUICtrlCreatePic(@ScriptDir & "\System\yellow.gif", 0, 0, 0, 0)
    main()
    EndFunc ;==>Create

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

    Func main()
    GUISetState(@SW_SHOW, $SGui)
    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $Automatisch
    Automatisch()
    Case $Basic
    Basic()
    Case $Advanced
    Advanced()
    Case $Delete
    Delete()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    If $SGui = "Advance" Then
    $Adv = 1
    Else
    $Adv = 2
    EndIf
    EndFunc ;==>main

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

    Func main2()

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

    GUISetState(@SW_HIDE, $SGui)
    GUISetState(@SW_SHOW, $og6)
    GUISetState(@SW_SHOW, $og5)
    GUISetState(@SW_SHOW, $og4)
    GUISetState(@SW_SHOW, $og3)
    GUISetState(@SW_SHOW, $og2)
    GUISetState(@SW_SHOW, $og1)
    GUISetState(@SW_SHOW, $ButtonGui)
    GUISetState(@SW_SHOW, $Gui1)

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

    $pic111 = GUICtrlCreatePic(@ScriptDir & "\System\Background12345678.bmp", "5", "5", "660", "881", $WS_CLIPSIBLINGS)

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

    WinActivate('Standort', '')

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

    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $obg1
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "ers"
    $n = "1"
    Dis()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg2
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "zwei"
    $n = "2"
    Dis()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg3
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "drit"
    $n = "3"
    Dis()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg4

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

    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "vier"
    $n = "4"
    Dis()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg5

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

    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "fünf"
    $n = "5"
    Dis()
    GUICtrlSetState($place3, $GUI_ENABLE)
    GUICtrlSetState($place2, $GUI_ENABLE)
    GUICtrlSetState($place1, $GUI_ENABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

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

    Case $Msg[0] = $obg6

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

    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "sechs"
    $n = "6"
    Dis()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $ButtonGui
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    EndFunc ;==>main2

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

    Func Ort2()
    If $Adv = 2 Then
    $linkname = _FileListToArray("\\server\swroot\Group\Public\Printers\zh\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
    If Not IsArray($linkname) Then
    MsgBox(16, "Error", "An diesem Ort sind keine Drucker vorhanden. -->" & $ort)
    EndIf
    For $i = 1 To $linkname[0]
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    If $Adv = 2 Then
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2)
    $Msg = MsgBox(4, "Drucker", "Die Drucker im " & $msgn & "ten Stock " & $an & " " & $ort & " wurden eingerichtet. " & @CRLF & "Weitere Drucker einrichten?")
    If $Msg = 6 Then
    Sleep(200)
    main2()
    Else
    Einzeln()
    EndIf
    EndIf
    Next
    Sleep(100)
    If $Msg = 6 Then
    Sleep(100)
    Else
    Exit
    EndIf
    Else
    Einzeln()
    EndIf
    EndFunc ;==>Ort2

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

    Func Einzeln()
    GUISetState(@SW_HIDE, $Button)
    GUISetState(@SW_HIDE, $Gui1)
    $Check = GUICreate($title, "670", "881")
    If $Adv = 1 Then
    GUICtrlCreatePic(@ScriptDir & "\System\check.bmp", "597", "550", "101", "89", $WS_CLIPSIBLINGS)
    Else
    GUICtrlCreatePic(@ScriptDir & "\System\check2.bmp", "597", "550", "101", "89", $WS_CLIPSIBLINGS)
    EndIf
    GUICtrlCreateLabel("Name u.s.w.", 25, 10)
    Opt("GUICloseOnESC", 1)
    $linkname = _FileListToArray("\\server\swroot\Group\Public\Printers\zh\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
    MsgBox(0, "bla", $linkname)
    Dim $gui_check_[$linkname[0] + 1]
    For $i = 1 To $linkname[0]
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    If $Adv = 1 Then
    $gui_check_[$i] = GUICtrlCreateCheckbox($pr2, 10, 20 + $i * 20, 680, 20)
    Else
    $gui_check_[$i] = GUICtrlCreateRadio($pr2, 10, 20 + $i * 20, 680, 20)
    EndIf
    Next
    $buttoninst = GUICtrlCreateButton($namebutton, 135, 350)
    $Button = GUICreate("back", 57, 53, 600, 10, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Check)
    GUICtrlCreatePic(@ScriptDir & "\System\back.bmp", 0, 0, 0, 0)
    GUISetState(@SW_SHOW, $Button)
    GUISetState(@SW_SHOW, $Check)
    WinActivate($title, '')

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

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $buttoninst
    For $i = 1 To $linkname[0]
    Switch $i
    Case GUICtrlRead($gui_check_[$i]) = $GUI_CHECKED
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2)
    standard()
    EndSwitch
    Next
    EndSwitch
    If WinActive('back', '') Then
    GUISetState(@SW_HIDE, $Button)
    GUISetState(@SW_HIDE, $Check)
    main2()
    MsgBox(0, '', 'Hi!')
    WinActivate('Standort', '')
    EndIf
    WEnd
    EndFunc ;==>Einzeln

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

    Func Basic()
    $Adv = 2
    $title = "Standarddrucker einrichten"
    $namebutton = "Als Standard einrichten"
    main2()
    EndFunc ;==>Basic

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

    Func Delete()
    $Del = GUICreate("Löschen?", 300, 100)
    GUISetState(@SW_HIDE, $SGui)
    GUISetState(@SW_SHOW, $Del)
    $Del = GUICtrlCreateLabel("Dieser Vorgang löscht alle ihre" & @CRLF & "Netzwerkdrucker. Wollen sie fortsetzen?", 10, 10)
    GUICtrlCreatePic(@ScriptDir & "\System\Delete.bmp", "208", "0", "92", "97", $WS_CLIPSIBLINGS)
    $ok = GUICtrlCreateButton("Ok", 50, 60, 60)
    $no = GUICtrlCreateButton("Nein", 150, 60, 60)

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

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $ok
    RunWait("\\server\software\Admin_Tools\Microsoft\Diverse\Printing\con2prt /f")
    Exit
    Case $no
    Exit
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    EndFunc ;==>Delete

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

    Func standard()
    If $Adv = 2 Then
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2 & "/y")
    EndIf
    EndFunc ;==>standard

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

    Func Advanced()
    $Adv = 1
    $title = "Einzeln einrichten"
    $namebutton = "Installieren"
    main2()
    EndFunc ;==>Advanced

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

    Func Automatisch()
    MsgBox(0, "Automatic", "Automatisch")
    EndFunc ;==>Automatisch

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

    Func IsChecked($control)
    Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
    EndFunc ;==>IsChecked

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

    Func Dis()
    GUICtrlSetState($og1, $GUI_DISABLE)
    GUICtrlSetState($og2, $GUI_DISABLE)
    GUICtrlSetState($og3, $GUI_DISABLE)
    GUICtrlSetState($og4, $GUI_DISABLE)
    GUICtrlSetState($og5, $GUI_DISABLE)
    GUICtrlSetState($og6, $GUI_DISABLE)
    EndFunc ;==>Dis

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

    Func back()
    GUISetState(@SW_HIDE, $Gui1)
    If $z = 2 Then
    main2()
    Else
    GUISetState(@SW_HIDE, $Button)
    GUISetState(@SW_HIDE, $og1)
    GUISetState(@SW_HIDE, $og2)
    GUISetState(@SW_HIDE, $og3)
    GUISetState(@SW_HIDE, $og4)
    GUISetState(@SW_HIDE, $og5)
    GUISetState(@SW_HIDE, $og6)
    GUISetState(@SW_HIDE, $place1GUI)
    GUISetState(@SW_HIDE, $place2GUI)
    GUISetState(@SW_HIDE, $place3GUI)
    main()
    EndIf
    EndFunc ;==>back

    [/autoit]


    Problem:
    Das GUI "$place1" hat einen grauen hintergrund, anstatt transparent zu sein.
    Und das, obwohl ich auch ein transparentes .gif und den selben code wie bei den anderen buttons verwendet habe... :(
    auswahl.jpg

    Hoffentlich könnt ihr mir helfen :)

    mfg
    Manu

    Edit BugFix: Spoiler gesetzt!!!

  • Hi Oscar.

    Was meinst du mit Spaghetti Code?
    Habe ich etwas falsch gemacht?
    Hier der relevante Teil:

    Spoiler anzeigen
    [autoit]

    $place1GUI = GUICreate("place1", 219, 266, 77, 237, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place1 = GUICtrlCreatePic(@ScriptDir & "\System\red.gif", 0, 0, 0, 0)

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

    $place2GUI = GUICreate("place2", 217, 314, 155, 435, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place2 = GUICtrlCreatePic(@ScriptDir & "\System\blue.gif", 0, 0, 0, 0)

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

    $place3GUI = GUICreate("place3", 359, 230, 288, 525, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place3 = GUICtrlCreatePic(@ScriptDir & "\System\yellow.gif", 0, 0, 0, 0)
    main()

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

    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $obg1
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "ers"
    $n = "1"
    Dis()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    Ort2()
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    Ort2()
    Case $Msg[0] = $Button
    $z = 2
    back()
    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg2
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "zwei"
    $n = "2"
    Dis()

    [/autoit]

    Spoiler funzt bei mir nicht richtig...

    mfg
    Manu

    • Offizieller Beitrag

    Was ich mit 'Spaghetti-Code' meine:

    1. Du springst wahllos von einer Function in die nächste, ohne das die vorherige jemals beendet würde.
    2. Der Programmcode von If...Then, For...Next, While...WEnd, Func...EndFunc, usw. ist nicht eingerückt.
    3. Die GUI-Elemente werden ebenfalls erst erstellt, kurz bevor Du sie benutzt.
    4. In jeder Function gibt es eine MessageLoop-Schleife.
    5. Die #include-Anweisungen sind fehlerhaft (liegt hier am Forum. Musst beim einfügen von AutoIt-Programmcode in den Quellcode-Modus wechseln)
    6. Einige Programmteile werden nie ausgeführt, weil das Script dort nie hinkommt.
    usw...

    Gerade Punkt 1 ist dabei das 'Todesurteil', weil eine Function nicht als GOTO missbraucht werden soll.
    Funktionen sind Unterprogramm-Aufrufe. Bei jedem Funktionsaufruf wird die Rücksprungadresse intern abgespeichert. Wird in dem Script irgendwann EndFunc oder Return erreicht, so holt sich der Interpreter diese Rücksprungadresse und kehrt ins Hauptprogramm zurück. Wird aber EndFunc bzw. Return niemals erreicht, weil man (wie Du das machst) ständig von einer Funktion in die nächste springt, so läuft irgendwann der interne Speicher über und Du erhälst eine Fehlermeldung (das Script beendet sich).
    Das heißt: Dein gesamtes Script wird, wenn überhaupt, nur sehr unzuverlässig laufen.
    Lerne erstmal strukturiert zu programmieren. Überlege Dir genau, was soll in der und der Funktion ausgeführt werden, rufe die einzelnen Funktionen vom Hauptprogramm aus auf und (vor allem) kehre dorthin wieder zurück.
    Es ist außerdem ein guter Stil, alle GUI-Fenster am Anfang des Scripts zu erstellen und diese erst bei Bedarf mit GUISetState(@SW_SHOW, $GUI) sichtbar zu machen.

    Entschuldige diese harte Kritik, aber solch ein Script wird Dir vermutlich niemand debuggen, weil es einem neuschreiben gleichkommt.

  • Danke für die Erklärung.
    Mit deiner Hilfe kann ich das Script jetzt selbst verbessern/debuggen.
    Punkt 2 stimmt aber übrigens nicht (Das liegt auch am Forum).
    Danke nochmals.

    MfG
    Manu

  • Grüetzi Greenhorn


    $place1, $place2, place3 usw sind child-GUI's die nur als Buttons dienen sollen.

    Edit: @ Oscar: Wie kann ich denn wieder zum Anfang springen ohne Func?

    Gruss
    Manu

    Einmal editiert, zuletzt von ManuIt (24. Januar 2008 um 10:25)

    • Offizieller Beitrag

    @ Oscar: Wie kann ich denn wieder zum Anfang springen ohne Func?

    Dafür gibt es Schleifen:

    [autoit]


    #include<bla.au3>

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

    Global $alleVariablen

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

    GUICreate('blabla')

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

    While 1 ; Hauptprogramm
    Unterprogramm1() ; rufe Unterprogramm1 auf
    Unterprogramm2() ; rufe Unterprogramm2 auf
    Unterprogramm3() ; usw...
    WEnd

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

    Func Unterprogramm1()
    ; irgendwelche Befehle
    EndFunc ; bis dann EndFunc erreicht und wieder ins Hauptprogramm zurückgekehrt wird

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

    Func Unterprogramm2()
    ; irgendwelche Befehle
    EndFunc

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

    Func Unterprogramm3()
    ; irgendwelche Befehle
    EndFunc

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include<bla.au3>

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

    Global $alleVariablen

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

    GUICreate('blabla')

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

    While 1 ; Hauptprogramm
    Unterprogramm1() ; rufe Unterprogramm1 auf
    Unterprogramm2() ; rufe Unterprogramm2 auf
    Unterprogramm3() ; usw...
    If $bla = 1 Then
    Unterprogramm15()
    Else
    Exit
    WEnd

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

    Func Unterprogramm1()
    ; irgendwelche Befehle
    EndFunc ; bis dann EndFunc erreicht und wieder ins Hauptprogramm zurückgekehrt wird

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

    Func Unterprogramm2()
    ; irgendwelche Befehle
    EndFunc

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

    Func Unterprogramm3()
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $bla
    $bla = 1
    Case $Msg[0] = $miau
    $bla=2
    Case $Msg[0] = $Wuff
    $wuff = 7
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    EndFunc

    [/autoit]


    Wie soll ich denn das lösen, wenn verschiedene Sachen Passieren müssen wenn man nen button klickt?
    so wie oben? gibt's bessere lösungen? wie kann ich denn z'b zurück, wenn man den zurück-button klickt?

    mfg
    Manu

  • Ich hätte es wie folgt geschrieben:

    Spoiler anzeigen
    [autoit]

    #include<bla.au3>

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

    Global $alleVariablen

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

    GUICreate('blabla')

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

    While 1 ; Hauptprogramm
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $bla
    $bla = 1
    Case $Msg[0] = $miau
    $bla=2
    Case $Msg[0] = $Wuff
    $wuff = 7
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect

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

    Unterprogramm1() ; rufe Unterprogramm1 IMMER auf
    Unterprogramm2() ; rufe Unterprogramm2 IMMER auf
    ; Unterprogramm3() ; wird nicht mehr gebraucht

    If $bla = 1 Then ; rufe Unterprogramm nur auf wenn...
    Unterprogramm15()
    EndIf

    WEnd

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

    Func Unterprogramm1()
    ; irgendwelche Befehle
    EndFunc ; bis dann EndFunc erreicht und wieder ins Hauptprogramm zurückgekehrt wird

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

    Func Unterprogramm2()
    ; irgendwelche Befehle
    EndFunc

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

    Func Unterprogramm15()
    ; irgendwas tun ggf. $bla=0 sonst ruft sich unterprogramm15() immer wieder selbst auf
    EndFunc

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag


    Wie soll ich denn das lösen, wenn verschiedene Sachen Passieren müssen wenn man nen button klickt?
    so wie oben? gibt's bessere lösungen? wie kann ich denn z'b zurück, wenn man den zurück-button klickt?


    Z.B. indem Du mehrere Unterprogramme hintereinander aufrufst.

    [autoit]


    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $button1
    $bla = 1
    Unterprogramm1()
    Unterprogramm2()
    Case $Msg[0] = $button2
    $bla=2
    Unterprogramm3()
    Case $Msg[0] = $button3
    $wuff = 7
    Unterprogramm2()
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]

    Wenn es konkreter sein soll, dann mußt Du konkreter werden. Wir können keine Gedanken lesen. Am besten Du erstellst mal einen Programmablaufplan. Was soll alles passieren? Was kann der User auswählen? usw...

  • Ich hab den Code ein wenig ent-spaghettisiert, hoffe ich.
    Ich werde aber noch daran arbeiten.
    Das Script soll nähmlich in einer Firma von über 200 Leuten verwendet werden.
    Vielen Dank für eure Hilfe, Oscar & Micha_he

    Das Script:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <File.au3>
    #Include <Array.au3>
    #include <String.au3>

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

    Global $Automatisch, $Basic, $Advanced, $Delete
    Global $ButtonGui, $obg1, $obg2, $obg3, $obg4, $obg5, $obg6, $Button
    Global $msgn, $n, $ort, $Array, $GuiOG, $input1, $Adv, $SGui, $pic111, $Gui1
    Global $printer, $server, $pr2, $srv3
    Global $gui_check_1, $gui_check_2, $gui_check_3, $gui_check_4, $gui_check_5, $gui_check_6, $gui_check_7, $gui_check_8, $gui_check_9
    Global $read, $title, $namebutton, $z
    Global $place1GUI, $place2GUI, $place3GUI
    Global $og1, $og2, $og3, $og4, $og5, $og6, $place1, $place3, $place2
    Global $scnd
    Global $q
    Global $nr[1], $gui_check_[100], $gui_radio_[100]
    Global $WeitereDrucker
    Global $Radio, $Check, $Del, $place, $buttoninst
    $an = "am"
    $scnd = 0
    $title = "Drucker einrichten"
    $Radio = 2
    $WeitereDrucker = 1
    $Neustart = 1

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

    Create()

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

    While 1 ;HAUPTPROGRAMM
    If $Neustart = 1 Then
    $Neustart = 2
    GUISetState(@SW_SHOW, $SGui)
    While 1
    $Msg1 = GUIGetMsg(1)
    Select
    Case $Msg1[0] = $Automatisch
    MsgBox(0, "Automatic", "Automatisch")
    Exit
    Case $Msg1[0] = $Basic
    $Adv = 2
    $title = "Standarddrucker einrichten"
    $namebutton = "Als Standard einrichten"
    Case $Msg1[0] = $Advanced
    $Adv = 1
    $title = "Einzeln einrichten"
    $namebutton = "Installieren"
    Case $Msg1[0] = $Delete
    Delete()
    Case $Msg1[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    If $Adv = 2 Or $Adv = 1 Then
    main2()
    EndIf

    If $place = 1 Then
    Ort2()
    EndIf

    If $Neustart = 1 Then
    $Radio = 0
    $place = 0
    $Adv = 0
    ExitLoop
    EndIf

    While 1
    If $Radio = 1 Then
    Einzeln()
    EndIf

    If $Adv = 3 Then
    $Radio = 1
    $Adv = 5
    EndIf

    If $Adv <> 3 Then
    ExitLoop
    EndIf
    WEnd
    WEnd
    EndIf
    Sleep(100)
    WEnd

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

    Func Create()
    $SGui = GUICreate("Drucker", "320", "150")
    GUICtrlCreateLabel("Wie möchten Sie die Drucker installieren?", 10, 20)
    $Automatisch = GUICtrlCreateButton("Automatisch", "5", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion werden alle Drucker in der Nähe installiert.", "Automatisch einrichten")
    $Basic = GUICtrlCreateButton("Nach Standort", "85", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie ihren Standort angeben." & @CRLF & "Danach werden alle umliegenden Drucker installiert.", "Nach Standort einrichten")
    $Advanced = GUICtrlCreateButton("Einzeln", "165", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie Drucker einzeln installieren." & @CRLF & "Dazu müssen Sie den Namen des Druckers wissen.", "Einzeln einrichten")
    $Delete = GUICtrlCreateButton("Löschen", "245", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie Drucker löschen." & @CRLF & "Wenn Sie nicht alle löschen wollen," & @CRLF & "müssen Sie den Namen des Druckers wissen.", "Löschen")
    GUICtrlCreatePic(@ScriptDir & "\System\printer.bmp", "250", "85", "67", "56", $WS_CLIPSIBLINGS)
    GUICtrlCreateLabel("Sprache: ", 10, 105)
    GUICtrlCreateCombo ("Deutsch","80","100","80","20")
    GUICtrlSetData(-1,"Englisch","Deutsch")

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

    $Gui1 = GUICreate("Standort", "670", "881")

    $og6 = GUICreate("Obergeschoss 6", 124, 32, 430, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg6 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton6.gif", 0, 0, 0, 0)

    $og5 = GUICreate("Obergeschoss 5", 124, 32, 280, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg5 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton5.gif", 0, 0, 0, 0)

    $og4 = GUICreate("Obergeschoss 4", 124, 32, 130, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg4 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton4.gif", 0, 0, 0, 0)

    $og3 = GUICreate("Obergeschoss 3", 124, 32, 430, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg3 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton3.gif", 0, 0, 0, 0)

    $og2 = GUICreate("Obergeschoss 2", 124, 32, 280, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg2 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton2.gif", 0, 0, 0, 0)

    $og1 = GUICreate("Obergeschoss 1", 124, 32, 130, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg1 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton1.gif", 0, 0, 0, 0)

    $ButtonGui = GUICreate("back", 57, 53, 600, 10, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $Button = GUICtrlCreatePic(@ScriptDir & "\System\back.gif", 0, 0, 0, 0)


    $place2GUI = GUICreate("place2", 217, 314, 155, 435, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place2 = GUICtrlCreatePic(@ScriptDir & "\System\blue.gif", 0, 0, 0, 0)

    $place1GUI = GUICreate("place1", 219, 266, 77, 234, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place1 = GUICtrlCreatePic(@ScriptDir & "\System\red.gif", 0, 0, 0, 0)

    $place3GUI = GUICreate("place3", 359, 230, 288, 525, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place3 = GUICtrlCreatePic(@ScriptDir & "\System\yellow.gif", 0, 0, 0, 0)

    $Check = GUICreate($title, "670", "881")

    $Del = GUICreate("Löschen?", 300, 100)


    $Button = GUICreate("back", 57, 53, 600, 10, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Check)
    EndFunc

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

    Func main2()
    GUISetState(@SW_HIDE, $SGui)
    GUISetState(@SW_SHOW, $og6)
    GUISetState(@SW_SHOW, $og5)
    GUISetState(@SW_SHOW, $og4)
    GUISetState(@SW_SHOW, $og3)
    GUISetState(@SW_SHOW, $og2)
    GUISetState(@SW_SHOW, $og1)
    GUISetState(@SW_SHOW, $ButtonGui)
    GUISetState(@SW_SHOW, $Gui1)

    $pic111 = GUICtrlCreatePic(@ScriptDir & "\System\Background12345678.bmp", "5", "5", "660", "881", $WS_CLIPSIBLINGS)

    WinActivate('Standort', '')

    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $obg1
    $msgn = "ers"
    $n = "1"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    GUISetState(@SW_SHOW, $place3GUI)
    GUISetState(@SW_SHOW, $place1GUI)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place3
    $ort = "place3"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    ExitLoop
    Case $Msg[0] = $obg2
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "zwei"
    $n = "2"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg3
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "drit"
    $n = "3"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    Case $Msg[0] = $obg4
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "vier"
    $n = "4"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg5
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "fünf"
    $n = "5"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    GUICtrlSetState($place3, $GUI_ENABLE)
    GUICtrlSetState($place2, $GUI_ENABLE)
    GUICtrlSetState($place1, $GUI_ENABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

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

    Case $Msg[0] = $obg6
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "sechs"
    $n = "6"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $ButtonGui

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    Sleep (100)
    WEnd
    If $Adv = 1 Then
    $Adv = 3
    EndIf
    If $Adv = 2 Then
    $Adv = 4
    EndIf
    EndFunc ;==>main2

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

    Func Ort2() ;Wenn Einfach, alle Printer der Umgebung installieren. Sonst --->Einzeln
    If $Adv = 4 Then
    $Adv = 0
    $linkname = _FileListToArray("\\server\swroot\Group\Public\Printers\zh\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
    If Not IsArray($linkname) Then
    MsgBox(16, "Error", "An diesem Ort sind keine Drucker vorhanden. -->" & $ort)
    EndIf

    For $i = 1 To $linkname[0]
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2)
    Next


    $Msg = MsgBox(4, "Drucker", "Die Drucker im " & $msgn & "ten Stock " & $an & " " & $ort & " wurden eingerichtet. " & @CRLF & "Weitere Drucker einrichten?")
    If $Msg = 6 Then ;JA
    hide()
    $Neustart = 1
    Else ;NEIN
    $Radio = 1
    EndIf
    Else
    $Radio = 1
    EndIf
    EndFunc ;==>Ort2

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

    Func Einzeln() ;Radio Button / Checkbox
    hide()
    $Check = GUICreate($title, "670", "881")
    If $Adv = 3 Or $Adv = 1 Then
    GUICtrlCreatePic(@ScriptDir & "\System\check.bmp", "597", "550", "101", "89", $WS_CLIPSIBLINGS)
    Else
    GUICtrlCreatePic(@ScriptDir & "\System\check2.bmp", "597", "550", "101", "89", $WS_CLIPSIBLINGS)
    EndIf
    GUICtrlCreateLabel("Name u.s.w.", 25, 10)
    $linkname = _FileListToArray("\\server\swroot\Group\Public\Printers\zh\" & $n & "Obergeschoss\" & $ort, '*.lnk', 1)
    Dim $gui_check_[$linkname[0] + 1]
    For $i = 1 To $linkname[0]
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    If $Adv = 3 Then
    $gui_check_[$i] = GUICtrlCreateCheckbox($pr2, 10, 20 + $i * 20, 680, 20)
    Else
    $gui_radio_[$i] = GUICtrlCreateRadio($pr2, 10, 20 + $i * 20, 680, 20)
    EndIf
    Next
    GUICtrlCreatePic(@ScriptDir & "\System\back.bmp", 0, 0, 0, 0)
    GUISetState(@SW_SHOW, $Button)
    GUISetState(@SW_SHOW, $Check)
    $buttoninst = GUICtrlCreateButton($namebutton, 135, 350)
    WinActivate($title, '')
    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $buttoninst
    For $q = 1 To $linkname[0]
    Switch $i
    Case GUICtrlRead($gui_check_[$q]) = $GUI_CHECKED
    $pr = StringInStr($linkname[$q], " ", 1)
    $prLen = StringLen($linkname[$q])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$q], $pr3)
    $srv = StringInStr($linkname[$q], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$q], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2) ;Installiert Drucker

    Case GUICtrlRead($gui_radio_[$q]) = $GUI_CHECKED
    $pr = StringInStr($linkname[$q], " ", 1)
    $prLen = StringLen($linkname[$q])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$q], $pr3)
    $srv = StringInStr($linkname[$q], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$q], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2) ;Installiert Drucker
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2 & "/y") ;Bestimmt Standard Drucker
    hide()
    MsgBox (0,"Erfolgreich installiert","Sie haben erfolgreich Drucker installiert und einen Standard Drucker bestimmt")
    Exit
    EndSwitch
    Next
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>Einzeln

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

    Func Delete() ;Alle Netzwerk Printer löschen
    GUISetState(@SW_HIDE, $SGui)
    GUISetState(@SW_SHOW, $Del)
    $Del = GUICtrlCreateLabel("Dieser Vorgang löscht alle ihre" & @CRLF & "Netzwerkdrucker. Wollen sie fortsetzen?", 10, 10)
    GUICtrlCreatePic(@ScriptDir & "\System\Delete.bmp", "208", "0", "92", "97", $WS_CLIPSIBLINGS)
    $ok = GUICtrlCreateButton("Ok", 50, 60, 60)
    $no = GUICtrlCreateButton("Nein", 150, 60, 60)

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $ok
    RunWait("\\server\software\Admin_Tools\Microsoft\Diverse\Printing\con2prt /f")
    Exit
    Case $no
    Exit
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Exit
    EndFunc ;==>Delete

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

    Func hide() ;Lässt alle Buttons / Guis verschwinden
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_HIDE, $ButtonGui)
    GUISetState(@SW_HIDE, $og1)
    GUISetState(@SW_HIDE, $og2)
    GUISetState(@SW_HIDE, $og3)
    GUISetState(@SW_HIDE, $og4)
    GUISetState(@SW_HIDE, $og5)
    GUISetState(@SW_HIDE, $og6)
    GUISetState(@SW_HIDE, $place1GUI)
    GUISetState(@SW_HIDE, $place2GUI)
    GUISetState(@SW_HIDE, $place3GUI)
    GUISetState(@SW_HIDE, $Button)
    GUISetState(@SW_HIDE, $Check)
    EndFunc

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

    MfG
    Manu


    Ps:
    Wieso kann ich das Bild nicht in einer Funktion aufrufen und in einer anderen Anzeigen lassen?

    Func Bla()
    $printerpic1 = GUICtrlCreatePic(@ScriptDir & "\System\Background12345678.bmp", "5", "5", "660", "881", $WS_CLIPSIBLINGS)
    EndFunc

    Func blabla()
    GUICtrlSetState($printerpic1, @SW_SHOW)
    Endfunc

    Einmal editiert, zuletzt von ManuIt (4. Februar 2008 um 08:36)

  • Prinzipiell sollte das aber funktionieren. Ich habe einige Anwendungen, wo zwar keine Bilder, aber dafür andere Controls in Unterfunktionen ein bzw. ausgeblendet werden.

    Was passiert denn wenn die Scriptzeile abgearbeitet wird ? Nix oder Fehler ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hab Global $printerpic1 oben eingetragen
    kein Fehler...

    Edit:
    Um es genauer zu erklären:
    Es zeigt das bild nicht an und AutoIt gibt auch kein Fehler zurrück.

    Einmal editiert, zuletzt von ManuIt (4. Februar 2008 um 13:56)

    • Offizieller Beitrag

    Du generierst eine menge Fenster (für jedes GIF eins?). Naja, egal. Jedenfalls musst Du, wenn das Bild nicht zusammen mit dem jeweiligen Fenster generiert wird, vorher zu dem Fenster wechseln, mit GUISwitch(winhandle). Woher soll AutoIt sonst wissen in welchem GUI-Fenster es das Bild erstellen soll?
    Bei Deinen Bilder ist mir noch aufgefallen, dass Du als Parameter 0,0,0,0 angibst für Left,Top, Width,Height. Wozu soll das denn gut sein?

  • Danke für den Tipp.
    Die Fenster sind Buttons.
    Mir wurde diese Art von Buttons im englischen Forum empfohlen.
    Die Buttons zeigts korrekt an.
    Ich benutze solche Gui-Buttons damits den Rand nicht anzeigt.

    MfG
    Manu

  • Ich hab versucht auf alle deine Punkte einzugehen.
    Leider funktioniert das mit den checkboxen nicht mehr.
    Ausserdem habe ich das Gefühl, dass das Script unzuverlässiger geworden ist.
    Ich denke, ich werde an meinem alten script weiterschreiben.

    Das "debugte" Script:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <File.au3>
    #Include <Array.au3>
    #include <String.au3>

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

    Global $Automatisch, $Basic, $Advanced, $Delete
    Global $ButtonGui, $obg1, $obg2, $obg3, $obg4, $obg5, $obg6, $Button
    Global $msgn, $n, $ort, $Array, $GuiOG, $input1, $Adv, $SGui, $pic111, $Gui1
    Global $printer, $server, $pr2, $srv3
    Global $gui_check_1, $gui_check_2, $gui_check_3, $gui_check_4, $gui_check_5, $gui_check_6, $gui_check_7, $gui_check_8, $gui_check_9
    Global $read, $title, $namebutton, $z
    Global $place1GUI, $place2GUI, $place3GUI
    Global $og1, $og2, $og3, $og4, $og5, $og6, $place1, $place3, $place2
    Global $scnd, $q
    Global $nr[1], $gui_check_[100], $gui_radio_[100]
    Global $WeitereDrucker
    Global $Radio, $Check, $Del, $place, $buttoninst, $ok, $no
    $an = "am"
    $scnd = 0
    $title = "Drucker einrichten"
    $Radio = 2
    $WeitereDrucker = 1
    $Neustart = 1

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

    Create()

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

    While 1 ;HAUPTPROGRAMM
    If $Neustart = 1 Then
    $Neustart = 2
    GUISetState(@SW_SHOW, $SGui)
    While 1
    $Msg1 = GUIGetMsg(1)
    Select
    Case $Msg1[0] = $Automatisch
    MsgBox(0, "Automatic", "Automatisch")
    Exit
    Case $Msg1[0] = $Basic
    $Adv = 2
    $title = "Standarddrucker einrichten"
    $namebutton = "Als Standard einrichten"
    Case $Msg1[0] = $Advanced
    $Adv = 1
    $title = "Einzeln einrichten"
    $namebutton = "Installieren"
    Case $Msg1[0] = $Delete
    Delete()
    Case $Msg1[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    If $Adv = 2 Or $Adv = 1 Then
    main2()
    EndIf

    If $place = 1 Then
    Ort2()
    EndIf

    If $Neustart = 1 Then
    $Radio = 0
    $place = 0
    $Adv = 0
    ExitLoop
    EndIf

    While 1
    If $Radio = 1 Then
    Einzeln()
    EndIf

    If $Adv = 3 Then
    $Radio = 1
    $Adv = 5
    EndIf

    If $Adv <> 3 Then
    ExitLoop
    EndIf
    WEnd
    WEnd
    EndIf
    Sleep(100)
    WEnd

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

    Func Create()
    $SGui = GUICreate("Drucker", "320", "150")
    GUICtrlCreateLabel("Wie möchten Sie die Drucker installieren?", 10, 20)
    $Automatisch = GUICtrlCreateButton("Automatisch", "5", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion werden alle Drucker in der Nähe installiert.", "Automatisch einrichten")
    $Basic = GUICtrlCreateButton("Nach Standort", "85", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie ihren Standort angeben." & @CRLF & "Danach werden alle umliegenden Drucker installiert.", "Nach Standort einrichten")
    $Advanced = GUICtrlCreateButton("Einzeln", "165", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie Drucker einzeln installieren." & @CRLF & "Dazu müssen Sie den Namen des Druckers wissen.", "Einzeln einrichten")
    $Delete = GUICtrlCreateButton("Löschen", "245", "55", "75")
    GUICtrlSetTip(-1, "Mit dieser Funktion können sie Drucker löschen." & @CRLF & "Wenn Sie nicht alle löschen wollen," & @CRLF & "müssen Sie den Namen des Druckers wissen.", "Löschen")
    GUICtrlCreatePic(@ScriptDir & "\System\printer.bmp", "250", "85", "67", "56", $WS_CLIPSIBLINGS)
    GUICtrlCreateLabel("Sprache: ", 10, 105)
    GUICtrlCreateCombo ("Deutsch","80","100","80","20")
    GUICtrlSetData(-1,"Englisch","Deutsch")

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

    $Gui1 = GUICreate("Standort", "670", "881")
    $pic111 = GUICtrlCreatePic(@ScriptDir & "\System\Background12345678.bmp", "5", "5", "660", "881", $WS_CLIPSIBLINGS)

    $og6 = GUICreate("Obergeschoss 6", 124, 32, 430, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg6 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton6.gif", 0, 0, 0, 0)

    $og5 = GUICreate("Obergeschoss 5", 124, 32, 280, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg5 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton5.gif", 0, 0, 0, 0)

    $og4 = GUICreate("Obergeschoss 4", 124, 32, 130, 780, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg4 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton4.gif", 0, 0, 0, 0)

    $og3 = GUICreate("Obergeschoss 3", 124, 32, 430, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg3 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton3.gif", 0, 0, 0, 0)

    $og2 = GUICreate("Obergeschoss 2", 124, 32, 280, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg2 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton2.gif", 0, 0, 0, 0)

    $og1 = GUICreate("Obergeschoss 1", 124, 32, 130, 830, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $obg1 = GUICtrlCreatePic(@ScriptDir & "\System\GlossyRoundButton1.gif", 0, 0, 0, 0)

    $ButtonGui = GUICreate("back", 57, 53, 600, 10, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $Button = GUICtrlCreatePic(@ScriptDir & "\System\back.gif", 0, 0, 0, 0)


    $place2GUI = GUICreate("place2", 217, 314, 155, 435, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place2 = GUICtrlCreatePic(@ScriptDir & "\System\blue.gif", 0, 0, 0, 0)

    $place1GUI = GUICreate("place1", 219, 266, 77, 234, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place1 = GUICtrlCreatePic(@ScriptDir & "\System\red.gif", 0, 0, 0, 0)

    $place3GUI = GUICreate("place3", 359, 230, 288, 525, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Gui1)
    $place3 = GUICtrlCreatePic(@ScriptDir & "\System\yellow.gif", 0, 0, 0, 0)

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

    $Del = GUICreate("Löschen?", 300, 100)
    GUICtrlCreatePic(@ScriptDir & "\System\Delete.bmp", "208", "0", "92", "97", $WS_CLIPSIBLINGS)
    GUICtrlCreateLabel("Dieser Vorgang löscht alle ihre" & @CRLF & "Netzwerkdrucker. Wollen sie fortsetzen?", 10, 10)
    $ok = GUICtrlCreateButton("Ok", 50, 60, 60)
    $no = GUICtrlCreateButton("Nein", 150, 60, 60)

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

    $Check = GUICreate($title, "670", "881")
    GUICtrlCreatePic(@ScriptDir & "\System\check.bmp", "597", "550", "101", "89", $WS_CLIPSIBLINGS)
    GUICtrlCreateLabel("Name u.s.w.", 25, 10)

    EndFunc

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

    Func main2()
    GUISetState(@SW_HIDE, $SGui)
    GUISetState(@SW_SHOW, $og6)
    GUISetState(@SW_SHOW, $og5)
    GUISetState(@SW_SHOW, $og4)
    GUISetState(@SW_SHOW, $og3)
    GUISetState(@SW_SHOW, $og2)
    GUISetState(@SW_SHOW, $og1)
    GUISetState(@SW_SHOW, $ButtonGui)
    GUISetState(@SW_SHOW, $Gui1)

    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $obg1
    $msgn = "ers"
    $n = "1"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    GUISetState(@SW_SHOW, $place3GUI)
    GUISetState(@SW_SHOW, $place1GUI)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place3
    $ort = "place3"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    ExitLoop
    Case $Msg[0] = $obg2
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "zwei"
    $n = "2"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg3
    GUISetState(@SW_SHOW, $place1GUI)
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "drit"
    $n = "3"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    Case $Msg[0] = $obg4
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "vier"
    $n = "4"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $obg5
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "fünf"
    $n = "5"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    GUICtrlSetState($place3, $GUI_ENABLE)
    GUICtrlSetState($place2, $GUI_ENABLE)
    GUICtrlSetState($place1, $GUI_ENABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

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

    Case $Msg[0] = $obg6
    GUISetState(@SW_SHOW, $place2GUI)
    GUISetState(@SW_SHOW, $place3GUI)
    $msgn = "sechs"
    $n = "6"
    GUISetState($og1, $GUI_DISABLE)
    GUISetState($og2, $GUI_DISABLE)
    GUISetState($og3, $GUI_DISABLE)
    GUISetState($og4, $GUI_DISABLE)
    GUISetState($og5, $GUI_DISABLE)
    GUISetState($og6, $GUI_DISABLE)
    While 1
    $Msg = GUIGetMsg(1)
    Select
    Case $Msg[0] = $place1
    $ort = "place1"
    $place = 1
    ExitLoop
    Case $Msg[0] = $place2
    $ort = "place2"
    $an = "an der"
    $place = 1
    ExitLoop
    Case $Msg[0] = $Button

    WinActivate('Standort', '')
    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Case $Msg[0] = $ButtonGui

    Case $Msg[0] = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    Sleep (100)
    WEnd
    If $Adv = 1 Then
    $Adv = 3
    EndIf
    If $Adv = 2 Then
    $Adv = 4
    EndIf
    EndFunc ;==>main2

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

    Func Ort2() ;Wenn Einfach, alle Printer der Umgebung installieren. Sonst ---> Einzeln
    If $Adv = 4 Then
    $Adv = 0
    $linkname = _FileListToArray("\\server\swroot\Group\Public\Printers\zh\" & $n & " Obergeschoss\" & $ort, '*.lnk', 1)
    If Not IsArray($linkname) Then
    MsgBox(16, "Error", "An diesem Ort sind keine Drucker vorhanden. -->" & $ort)
    EndIf

    For $i = 1 To $linkname[0]
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2)
    Next


    $Msg = MsgBox(4, "Drucker", "Die Drucker im " & $msgn & "ten Stock " & $an & " " & $ort & " wurden eingerichtet. " & @CRLF & "Weitere Drucker einrichten?")
    If $Msg = 6 Then ;JA
    hide()
    $Neustart = 1
    Else ;NEIN
    $Radio = 1
    EndIf
    Else
    $Radio = 1
    EndIf
    EndFunc ;==>Ort2

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

    Func Einzeln() ;Radio Button / Checkbox
    hide()
    GUISetState(@SW_SHOW, $Check)
    $linkname = _FileListToArray("\\server\swroot\Group\Public\Printers\zh\" & $n & " Obergeschoss\" & $ort, '*.lnk', 1)
    Dim $gui_check_[$linkname[0] + 1]
    For $i = 1 To $linkname[0]
    $pr = StringInStr($linkname[$i], " ", 1)
    $prLen = StringLen($linkname[$i])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$i], $pr3)
    $srv = StringInStr($linkname[$i], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$i], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    If $Adv = 3 Then
    $gui_check_[$i] = GUICtrlCreateCheckbox($pr2, 10, 20 + $i * 20, 680, 20)
    $check_one_two = 1
    Else
    $gui_radio_[$i] = GUICtrlCreateRadio($pr2, 10, 20 + $i * 20, 680, 20)
    $check_one_two = 2
    EndIf
    Next

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

    $buttoninst = GUICtrlCreateButton($namebutton, 135, 350)

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

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $buttoninst
    For $q = 1 To $linkname[0]
    If $check_one_two = 1 Then
    If GUICtrlRead($gui_check_[$q]) = $GUI_CHECKED Then
    $pr = StringInStr($linkname[$q], " ", 1)
    $prLen = StringLen($linkname[$q])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$q], $pr3)
    $srv = StringInStr($linkname[$q], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$q], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2) ;Installiert Drucker
    $Adv = 6
    EndIf
    EndIf

    If $check_one_two = 2 Then
    If GUICtrlRead($gui_radio_[$q]) = $GUI_CHECKED Then
    $pr = StringInStr($linkname[$q], " ", 1)
    $prLen = StringLen($linkname[$q])
    $pr3 = $prLen - $pr
    $pr2 = StringTrimRight($linkname[$q], $pr3)
    $srv = StringInStr($linkname[$q], " ", 1, 1)
    $srv2 = StringTrimLeft($linkname[$q], $srv + 3)
    $srv3 = StringTrimRight($srv2, 4)
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2) ;Installiert Drucker
    RunWait("rundll32 printui.dll,PrintUIEntry /in /n \\" & $srv3 & "\" & $pr2 & "/y") ;Bestimmt Standard Drucker
    hide()
    MsgBox (0,"Erfolgreich installiert","Sie haben erfolgreich Drucker installiert und einen Standard Drucker bestimmt")
    Exit
    EndIf
    EndIf
    Next
    ExitLoop
    EndSwitch
    WEnd
    $check_one_two = 2
    EndFunc ;==>Einzeln

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

    Func Delete() ;Alle Netzwerk Printer löschen
    GUISetState(@SW_HIDE, $SGui)
    GUISetState(@SW_SHOW, $Del)

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


    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $ok
    RunWait("\\server\software\Admin_Tools\Microsoft\Diverse\Printing\con2prt /f")
    Exit
    Case $no
    Exit
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Exit
    EndFunc ;==>Delete

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

    Func hide() ;Lässt alle Buttons / Guis verschwinden
    GUISetState(@SW_HIDE, $Gui1)
    GUISetState(@SW_HIDE, $ButtonGui)
    GUISetState(@SW_HIDE, $og1)
    GUISetState(@SW_HIDE, $og2)
    GUISetState(@SW_HIDE, $og3)
    GUISetState(@SW_HIDE, $og4)
    GUISetState(@SW_HIDE, $og5)
    GUISetState(@SW_HIDE, $og6)
    GUISetState(@SW_HIDE, $place1GUI)
    GUISetState(@SW_HIDE, $place2GUI)
    GUISetState(@SW_HIDE, $place3GUI)
    GUISetState(@SW_HIDE, $Button)
    GUISetState(@SW_HIDE, $Check)
    EndFunc

    [/autoit]

    mfg
    Manu

    Einmal editiert, zuletzt von ManuIt (6. Februar 2008 um 15:25)