1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • Probleme mit dem Obfusator

    • Oscar
    • 22. Dezember 2008 um 23:44

    Schonmal die Hilfe vom Obfuscator gelesen?
    Speziell das hier:

    Zitat


    Obfuscator will:
    [...]
    Warn you about the use of these AutoIt3 Functions and in which File/Func/line they are used and the Parameter contains an Ampersand (&), since they will cripple the functioning of the script when used:
    adlibenable()
    call()
    eval()
    guiregistermsg()
    guisetonevent()
    guictrlsetonevent()
    hotkeyset()
    isdeclared()
    trayitemsetonevent()
    objevent()
    Opt("OnExitFunc","OnAutoItExit")

    Alles anzeigen
  • MP3 rein, Netzwerk aus, hat jemand eine Ahnung? (Titel editiert)

    • Oscar
    • 22. Dezember 2008 um 17:08

    Man sollte statt "...ControlSet001..." lieber "...CurrentControlSet..." verwenden!

    Ich sollte vielleicht mal die aktuelle Version von meinem Programm ("Desktopsperre") uploaden. :rolleyes:

  • GuiOnEventMode() :S

    • Oscar
    • 21. Dezember 2008 um 16:39

    Bei GUI-Elementen: GUICtrlSetOnEvent

  • Programm unter WIndows öffnen c:/programme/... ? ShellExecute

    • Oscar
    • 21. Dezember 2008 um 11:29

    @td1000: Du hast das mit den eckigen Klammern falsch verstanden. Das heißt: dieser Parameter muss nicht angegeben werden. Wird er angegeben, dann natürlich ohne die eckigen Klammern.
    In Deinem Beispiel reicht aber das hier aus:

    [autoit]

    ShellExecute("c:\programme\testordner\test.exe")

    [/autoit]

    oder so:

    [autoit]

    ShellExecute(@ProgramFilesDir & "\testordner\test.exe")

    [/autoit]
  • Pic wechseln und Prozess über einen Button starten/beenden

    • Oscar
    • 21. Dezember 2008 um 11:23

    Dazu braucht man nur ein paar kleine Änderungen:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1); Den OnEvent-Mode benutzen

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

    Global $iCount = 18 ; Anzahl der Buttons
    Global $ahButton[$iCount], $abOnOff[$iCount], $aPID[$iCount], $aProg[$iCount], $aProgName[$iCount], $ahIcon[$iCount]

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

    $aProg[0] = 'calc.exe' ; die zu startenden Programme eintragen (inkl. Pfad)
    $aProg[1] = 'calc.exe'
    $aProg[2] = 'calc.exe'
    $aProg[3] = 'calc.exe'
    $aProg[4] = 'calc.exe'
    $aProg[5] = 'calc.exe'
    $aProg[6] = 'calc.exe'
    $aProg[7] = 'calc.exe'
    $aProg[8] = 'calc.exe'
    $aProg[9] = 'calc.exe'
    $aProg[10] = 'calc.exe'
    $aProg[11] = 'calc.exe'
    $aProg[12] = 'calc.exe'
    $aProg[13] = 'calc.exe'
    $aProg[14] = 'calc.exe'
    $aProg[15] = 'calc.exe'
    $aProg[16] = 'calc.exe'
    $aProg[17] = 'calc.exe'

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

    $aProgName[0] = 'Rechner' ; die dazugehörigen Namen (werden auf den Buttons angezeigt)
    $aProgName[1] = 'Rechner'
    $aProgName[2] = 'Rechner'
    $aProgName[3] = 'Rechner'
    $aProgName[4] = 'Rechner'
    $aProgName[5] = 'Rechner'
    $aProgName[6] = 'Rechner'
    $aProgName[7] = 'Rechner'
    $aProgName[8] = 'Rechner'
    $aProgName[9] = 'Rechner'
    $aProgName[10] = 'Rechner'
    $aProgName[11] = 'Rechner'
    $aProgName[12] = 'Rechner'
    $aProgName[13] = 'Rechner'
    $aProgName[14] = 'Rechner'
    $aProgName[15] = 'Rechner'
    $aProgName[16] = 'Rechner'
    $aProgName[17] = 'Rechner'

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

    ; das folgende Array enthält die Positionsdaten und Größe der Buttons (jeweils: left, top, width, height)
    Global $aPos[$iCount][4] = [ _
    [170, 020, 080, 020], _
    [450, 020, 080, 020], _
    [030, 080, 080, 020], _
    [170, 080, 080, 020], _
    [310, 080, 080, 020], _
    [450, 080, 080, 020], _
    [600, 080, 080, 020], _
    [030, 140, 080, 020], _
    [170, 140, 080, 020], _
    [310, 140, 080, 020], _
    [450, 140, 080, 020], _
    [600, 140, 080, 020], _
    [170, 200, 080, 020], _
    [310, 200, 080, 020], _
    [450, 200, 080, 020], _
    [170, 260, 080, 020], _
    [450, 260, 080, 020], _
    [310, 320, 080, 020] _
    ]
    Global $aIconPath[2] = [@ScriptDir & '\off.ico', @ScriptDir & '\on.ico'] ; Pfade zu den Icondateien

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

    GUICreate('ProgStarter', 760, 430)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetBkColor(0x000000)
    For $i = 0 To $iCount - 1
    $ahButton[$i] = GUICtrlCreateButton($aProgName[$i], $aPos[$i][0], $aPos[$i][1], $aPos[$i][2], $aPos[$i][3])
    GUICtrlSetOnEvent(-1, '_Switch')
    $abOnOff[$i] = False
    $ahIcon[$i] = GUICtrlCreateIcon($aIconPath[0], -1, $aPos[$i][0] + $aPos[$i][2] + 5, $aPos[$i][1] - 2, 24, 24)
    Next
    GUICtrlCreateButton('Alle starten', 190, 380, 120, 35)
    GUICtrlSetOnEvent(-1, '_StartAll')
    GUICtrlCreateButton('Alle stoppen', 390, 380, 120, 35)
    GUICtrlSetOnEvent(-1, '_StopAll')

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

    GUISetState()

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

    While True
    Sleep(20)
    WEnd

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

    Func _StartAll()
    For $i = 0 To $iCount - 1
    If Not $aPID[$i] Then $aPID[$i] = Run($aProg[$i])
    $abOnOff[$i] = True
    GUICtrlSetImage($ahIcon[$i], $aIconPath[1])
    Next
    EndFunc ;==>_StartAll

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

    Func _StopAll()
    For $i = 0 To $iCount - 1
    If $aPID[$i] Then
    ProcessClose($aPID[$i])
    $aPID[$i] = 0
    EndIf
    If $abOnOff[$i] Then
    $abOnOff[$i] = False
    GUICtrlSetImage($ahIcon[$i], $aIconPath[0])
    EndIf
    Next
    EndFunc ;==>_StopAll

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

    Func _Switch()
    Local $i = (@GUI_CtrlId - $ahButton[0]) / 2
    $abOnOff[$i] = Not $abOnOff[$i]
    Switch $abOnOff[$i]
    Case True
    GUICtrlSetImage($ahIcon[$i], $aIconPath[1])
    $aPID[$i] = Run($aProg[$i])
    Case False
    GUICtrlSetImage($ahIcon[$i], $aIconPath[0])
    ProcessClose($aPID[$i])
    $aPID[$i] = 0
    EndSwitch
    EndFunc ;==>_Switch

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

    Func _End()
    _StopAll()
    Exit
    EndFunc ;==>_End

    [/autoit]
  • Pic wechseln und Prozess über einen Button starten/beenden

    • Oscar
    • 21. Dezember 2008 um 09:12

    Du hast Glück, dass mich das Thema gerade interessiert. :D
    So habe ich das Script noch etwas ausgebaut:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1); Den OnEvent-Mode benutzen

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

    Global $iCount = 18 ; Anzahl der Buttons
    Global $ahButton[$iCount], $abOnOff[$iCount], $aPID[$iCount], $aProg[$iCount], $aProgName[$iCount], $ahIcon[$iCount]

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

    $aProg[0] = 'calc.exe' ; die zu startenden Programme eintragen (inkl. Pfad)
    $aProg[1] = 'calc.exe'
    $aProg[2] = 'calc.exe'
    $aProg[3] = 'calc.exe'
    $aProg[4] = 'calc.exe'
    $aProg[5] = 'calc.exe'
    $aProg[6] = 'calc.exe'
    $aProg[7] = 'calc.exe'
    $aProg[8] = 'calc.exe'
    $aProg[9] = 'calc.exe'
    $aProg[10] = 'calc.exe'
    $aProg[11] = 'calc.exe'
    $aProg[12] = 'calc.exe'
    $aProg[13] = 'calc.exe'
    $aProg[14] = 'calc.exe'
    $aProg[15] = 'calc.exe'
    $aProg[16] = 'calc.exe'
    $aProg[17] = 'calc.exe'

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

    $aProgName[0] = 'Rechner' ; die dazugehörigen Namen (werden auf den Buttons angezeigt)
    $aProgName[1] = 'Rechner'
    $aProgName[2] = 'Rechner'
    $aProgName[3] = 'Rechner'
    $aProgName[4] = 'Rechner'
    $aProgName[5] = 'Rechner'
    $aProgName[6] = 'Rechner'
    $aProgName[7] = 'Rechner'
    $aProgName[8] = 'Rechner'
    $aProgName[9] = 'Rechner'
    $aProgName[10] = 'Rechner'
    $aProgName[11] = 'Rechner'
    $aProgName[12] = 'Rechner'
    $aProgName[13] = 'Rechner'
    $aProgName[14] = 'Rechner'
    $aProgName[15] = 'Rechner'
    $aProgName[16] = 'Rechner'
    $aProgName[17] = 'Rechner'

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

    ; das folgende Array enthält die Positionsdaten der Buttons (jeweils x,y)
    Global $aPos[$iCount][2] = [ _
    [170, 20], _
    [450, 20], _
    [30, 80], _
    [170, 80], _
    [310, 80], _
    [450, 80], _
    [600, 80], _
    [30, 140], _
    [170, 140], _
    [310, 140], _
    [450, 140], _
    [600, 140], _
    [170, 200], _
    [310, 200], _
    [450, 200], _
    [170, 260], _
    [450, 260], _
    [310, 320] _
    ]
    Global $aIconPath[2] = [@ScriptDir & '\off.ico', @ScriptDir & '\on.ico'] ; Pfade zu den Icondateien

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

    GUICreate('ProgStarter', 760, 430)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetBkColor(0x000000)
    For $i = 0 To $iCount - 1
    $ahButton[$i] = GUICtrlCreateButton($aProgName[$i], $aPos[$i][0], $aPos[$i][1], 80, 20)
    GUICtrlSetOnEvent(-1, '_Switch')
    $abOnOff[$i] = False
    $ahIcon[$i] = GUICtrlCreateIcon($aIconPath[0], -1, $aPos[$i][0] + 85, $aPos[$i][1] - 2, 24, 24)
    Next
    GUICtrlCreateButton('Alle starten', 190, 380, 120, 35)
    GUICtrlSetOnEvent(-1, '_StartAll')
    GUICtrlCreateButton('Alle stoppen', 390, 380, 120, 35)
    GUICtrlSetOnEvent(-1, '_StopAll')

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

    GUISetState()

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

    While True
    Sleep(20)
    WEnd

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

    Func _StartAll()
    For $i = 0 To $iCount - 1
    If Not $aPID[$i] Then $aPID[$i] = Run($aProg[$i])
    $abOnOff[$i] = True
    GUICtrlSetImage($ahIcon[$i], $aIconPath[1])
    Next
    EndFunc ;==>_StartAll

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

    Func _StopAll()
    For $i = 0 To $iCount - 1
    If $aPID[$i] Then
    ProcessClose($aPID[$i])
    $aPID[$i] = 0
    EndIf
    If $abOnOff[$i] Then
    $abOnOff[$i] = False
    GUICtrlSetImage($ahIcon[$i], $aIconPath[0])
    EndIf
    Next
    EndFunc ;==>_StopAll

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

    Func _Switch()
    Local $i = (@GUI_CtrlId - $ahButton[0]) / 2
    $abOnOff[$i] = Not $abOnOff[$i]
    Switch $abOnOff[$i]
    Case True
    GUICtrlSetImage($ahIcon[$i], $aIconPath[1])
    $aPID[$i] = Run($aProg[$i])
    Case False
    GUICtrlSetImage($ahIcon[$i], $aIconPath[0])
    ProcessClose($aPID[$i])
    $aPID[$i] = 0
    EndSwitch
    EndFunc ;==>_Switch

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

    Func _End()
    Exit
    EndFunc ;==>_End

    [/autoit]

    Jetzt mit Icons statt GDI+ und variablen Positionen sowie individuelle Namen für die Buttons. Das Script sowie die Icons befinden sich in dem ZIP-Archiv im Anhang!

  • Pic wechseln und Prozess über einen Button starten/beenden

    • Oscar
    • 21. Dezember 2008 um 01:04

    Na gut, dann hier ein Script zum starten/stoppen von 20 Programmen. Musst nur noch oben die Programme (inkl. Pfad) eintragen:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

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

    Opt('GUIOnEventMode', 1); Den OnEvent-Mode benutzen

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

    Global $ahButton[20], $abOnOff[20], $aPID[20], $aProg[20]
    $aProg[0] = 'calc.exe'
    $aProg[1] = 'calc.exe'
    $aProg[2] = 'calc.exe'
    $aProg[3] = 'calc.exe'
    $aProg[4] = 'calc.exe'
    $aProg[5] = 'calc.exe'
    $aProg[6] = 'calc.exe'
    $aProg[7] = 'calc.exe'
    $aProg[8] = 'calc.exe'
    $aProg[9] = 'calc.exe'
    $aProg[10] = 'calc.exe'
    $aProg[11] = 'calc.exe'
    $aProg[12] = 'calc.exe'
    $aProg[13] = 'calc.exe'
    $aProg[14] = 'calc.exe'
    $aProg[15] = 'calc.exe'
    $aProg[16] = 'calc.exe'
    $aProg[17] = 'calc.exe'
    $aProg[18] = 'calc.exe'
    $aProg[19] = 'calc.exe'

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

    $hGUI = GUICreate("GDI+", 400, 640)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hWnd = WinGetHandle("GDI+")
    GUISetBkColor(0x000000)
    GUISetState()
    _GDIPlus_Startup()
    $hBrush1 = _GDIPlus_BrushCreateSolid(0xFF00FF00)
    $hBrush2 = _GDIPlus_BrushCreateSolid(0xFF004400)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)

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

    For $i = 0 To 19
    $ahButton[$i] = GUICtrlCreateButton('Programm "' & $i+1 & '" starten', 30, 23 + $i * 30, 130, 22)
    GUICtrlSetOnEvent(-1, '_ButtonKlick')
    $abOnOff[$i] = False
    _GDIPlus_GraphicsFillEllipse($hGraphic, 180, 20 + $i * 30, 25, 25, $hBrush2)
    Next

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

    While True
    Sleep(20)
    WEnd

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

    Func _ButtonKlick()
    Local $i = @GUI_CtrlId - $ahButton[0]
    $abOnOff[$i] = Not $abOnOff[$i]
    Switch $abOnOff[$i]
    Case True
    _GDIPlus_GraphicsFillEllipse($hGraphic, 180, 20 + $i * 30, 25, 25, $hBrush1)
    GUICtrlSetData($ahButton[$i], 'Programm "' & $i+1 & '" stoppen')
    $aPID[$i] = Run($aProg[$i])
    Case False
    _GDIPlus_GraphicsFillEllipse($hGraphic, 180, 20 + $i * 30, 25, 25, $hBrush2)
    GUICtrlSetData($ahButton[$i], 'Programm "' & $i+1 & '" starten')
    ProcessClose($aPID[$i])
    EndSwitch
    EndFunc

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

    Func _End()
    _GDIPlus_BrushDispose($hBrush1)
    _GDIPlus_BrushDispose($hBrush2)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]
  • Pic wechseln und Prozess über einen Button starten/beenden

    • Oscar
    • 21. Dezember 2008 um 00:21

    Nur einen Zweiten oder sollen es noch mehr werden?
    Weil, dann kann man gleich mit Arrays arbeiten...

  • Pic wechseln und Prozess über einen Button starten/beenden

    • Oscar
    • 20. Dezember 2008 um 23:44

    Ich wollte gerade mal etwas mit GDI+ rumspielen, deshalb habe ich Dir dieses Beispielscript geschrieben:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

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

    $hGUI = GUICreate("GDI+", 400, 300)
    $hWnd = WinGetHandle("GDI+")
    GUISetBkColor(0x000000)
    GUISetState()
    _GDIPlus_Startup()
    $hBrush1 = _GDIPlus_BrushCreateSolid(0xFF00FF00)
    $hBrush2 = _GDIPlus_BrushCreateSolid(0xFF004400)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)
    $hButton = GUICtrlCreateButton('Programm starten', 60, 23, 100, 22)
    $bOnOff = False
    _GDIPlus_GraphicsFillEllipse($hGraphic, 180, 20, 25, 25, $hBrush2)

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    case $hButton
    $bOnOff = Not $bOnOff
    Switch $bOnOff
    Case True
    _GDIPlus_GraphicsFillEllipse($hGraphic, 180, 20, 25, 25, $hBrush1)
    GUICtrlSetData($hButton, 'Programm stoppen')
    $PID = Run('Calc.exe')
    Case False
    _GDIPlus_GraphicsFillEllipse($hGraphic, 180, 20, 25, 25, $hBrush2)
    GUICtrlSetData($hButton, 'Programm starten')
    ProcessClose($PID)
    EndSwitch
    EndSwitch
    WEnd
    _GDIPlus_BrushDispose($hBrush1)
    _GDIPlus_BrushDispose($hBrush2)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit]
  • Frage zu Gui

    • Oscar
    • 20. Dezember 2008 um 23:08

    Achso, das ist für eine eigene GUI!

    Bei dem ersten Beispiel von mir war noch ein Fehler drin: Alle GUI-Elemente müssen zu dem Classnamen noch eine Zahl bekommen, auch wenn es nur ein einziges davon gibt.

    So geht es jetzt mit Deinem Beispiel-Script:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form2 = GUICreate("Beispiel-GUI", 633, 447, 400, 400)
    $Input2 = GUICtrlCreateInput("Input1", 120, 32, 385, 21)
    $Buttonx = GUICtrlCreateButton("Bla", 16, 24, 73, 33, 0)
    $Buttony = GUICtrlCreateButton("Blub ", 16, 64, 73, 33, 0)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Buttonz = GUICtrlCreateButton("BlaBla ", 16, 104, 73, 33, 0)
    $List1 = GUICtrlCreateList("", 528, 40, 81, 71)
    $Progress1 = GUICtrlCreateProgress(64, 320, 521, 49)
    $TreeView1 = GUICtrlCreateTreeView(24, 168, 73, 129)
    ;WinSetTrans($Form2, "", 200)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $GUI_EVENT_CLOSE ;Schließenbutton abfrage
    Exit
    Case $msg = $Buttonx
    Test()
    EndSelect
    WEnd

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

    Func Test()
    $aList = StringSplit(StringTrimRight(WinGetClassList($Form2), 1), @LF)
    _ArraySort($aList)
    $oDictTable = ObjCreate('Scripting.Dictionary')
    $oDictTable.CompareMode = 1
    $j = 1
    For $i = 1 To $aList[0]
    If Not $oDictTable.Exists($aList[$i]) Then
    $oDictTable.Add($aList[$i], '')
    $j = 1
    $aList[$i] &= $j
    Else
    $j += 1
    $aList[$i] &= $j
    EndIf
    Next
    ;~ _ArrayDisplay($aList)
    MsgBox(0, 0, 'Nach klick auf "ok" verschwinden die GUI-Elemente')
    For $i = 1 To $aList[0]
    ControlHide($Form2, '', $aList[$i])
    Next
    EndFunc ;==>Test

    [/autoit]
  • Frage zu Gui

    • Oscar
    • 20. Dezember 2008 um 22:40

    Versuch mal den Classnamen von Deiner GUI rauszukriegen, dann kannst Du das auch so lösen:

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    Run('calc.exe')
    If Not WinWait('[CLASS:SciCalc]', '', 5) Then Exit MsgBox(0, 0, 'error') ; Nach "CLASS:" muss der Name Deiner GUI stehen
    $hwnd = WinGetHandle('[CLASS:SciCalc]', '')
    $aList = StringSplit(StringTrimRight(WinGetClassList($hwnd), 1), @LF)
    _ArraySort($aList)
    $oDictTable = ObjCreate('Scripting.Dictionary')
    $oDictTable.CompareMode = 1
    $j = 1
    For $i = 1 To $aList[0]
    If Not $oDictTable.Exists($aList[$i]) Then
    $oDictTable.Add($aList[$i], $aList[$i])
    $j = 1
    $aList[$i] &= $j
    Else
    $j += 1
    $aList[$i] &= $j
    EndIf
    Next
    ;~ _ArrayDisplay($aList)
    MsgBox(0, 0, 'Nach klick auf "ok" verschwinden die GUI-Elemente')
    For $i = 1 To $aList[0]
    ControlHide($hwnd, '', $aList[$i])
    Next

    [/autoit]
  • Frage zu Gui

    • Oscar
    • 20. Dezember 2008 um 22:26

    Nein, die Classnamen reichen auch. Füge mal am Ende meines Beispielscripts noch die folgenden Zeilen ein:

    [autoit]


    For $i = 1 To $aList[0]
    ControlHide('Rechner', '', $aList[$i])
    Next

    [/autoit]
  • Frage zu Gui

    • Oscar
    • 20. Dezember 2008 um 22:11

    Ja, aber mit der Funktion bekommst Du doch alle Controls der GUI geliefert.

    eukalyptus: mit einem "Scripting.Dictionary"-Objekt wird es kürzer und ohne ReDim:

    [autoit]


    #include<Array.au3>
    Run('calc.exe')
    WinWait('Rechner', '')
    $aList = StringSplit(StringTrimRight(WinGetClassList('Rechner', ''), 1), @LF)
    _ArraySort($aList)
    $oDictTable = ObjCreate('Scripting.Dictionary')
    $oDictTable.CompareMode = 1
    $j = 1
    For $i = 1 To $aList[0]
    If Not $oDictTable.Exists($aList[$i]) Then
    $oDictTable.Add($aList[$i], $aList[$i])
    $j = 1
    Else
    If $j = 1 Then $aList[$i-1] &= $j
    $j += 1
    $aList[$i] &= $j
    EndIf
    Next
    _ArrayDisplay($aList)

    [/autoit]

    Edit: Da musste noch ein _ArraySort rein.

  • Frage zu Gui

    • Oscar
    • 20. Dezember 2008 um 21:20

    Ich verstehe zwar nicht den Sinn, aber vielleicht meinst Du ja WinGetClassList ?!

    [autoit]


    #include<Array.au3>
    Run("notepad.exe")
    WinWait("Unbenannt -", "")
    $aList = StringSplit(WinGetClassList("Unbenannt -", ""), @LF)
    _ArrayDisplay($aList)

    [/autoit]
  • "Spezial Effekt" will nicht richtig funtzen

    • Oscar
    • 20. Dezember 2008 um 00:51

    @r1fLeX: Du solltest Dir mal einen anderen Umgangston angewöhnen.
    Funkey hat Dir Dein Script doch korrigiert. Ein "Danke" wäre da wohl angebrachter.
    Und wenn Du Ironie nur erkennst, wenn ein Smilie dahintersteht, dann bist Du eindeutig zu oft am Computer. ;)

  • Wie online/offline gehen bzw. Stand überprüfen

    • Oscar
    • 20. Dezember 2008 um 00:37

    Frage 1 verstehe ich nicht. Was willst Du da automatisieren?

    Frage 2: Wenn Du wirklich die ganze Systempartition durchsuchen willst, musst Du Dir aber darüber im klaren sein, dass das einige Zeit dauert. Am besten ist dann, dass Du alle Dateien in ein Array einliest und dieses dann nach den Programmen durchsuchst. Dafür würde ich die Funktion "_GetFilesFolder_Rekursiv" von BugFix empfehlen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Global $aFiles = _GetFilesFolder_Rekursiv('c:\', -1, 0)

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

    Global $iIndex = _ArraySearch($aFiles, 'spybotsd.exe', 0, 0, 0, 1)
    If $iIndex <> -1 Then MsgBox(0,0, 'Spybot = ' & $aFiles[$iIndex])

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

    Global $iIndex = _ArraySearch($aFiles, 'avcenter.exe', 0, 0, 0, 1)
    If $iIndex <> -1 Then MsgBox(0,0, 'Antivir = ' & $aFiles[$iIndex])

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

    Global $iIndex = _ArraySearch($aFiles, 'autoit3.exe', 0, 0, 0, 1)
    If $iIndex <> -1 Then MsgBox(0,0, 'AutoIt = ' & $aFiles[$iIndex])

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case '3'
    $sDelim = ';'
    Case '4'
    $sDelim = '|'
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared('strFiles') Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    Und die anderen Fragen:
    "Wie bekommt man den Autoit-Text so super in seinen Beitrag? "
    Im Editor den AutoIt-Button anklicken und das Script zwischen die "Tags" einfügen [ autoit]hier das Script[ /autoit]

    "wie finde ich meinen Beitrag eigentlich SCHNELL wieder?"
    Bei Deinem eigenen Beitrag solltest Du die Überschrift ja noch kennen. ;)
    Ansonsten ist hinter einem Thema, das Beiträge von Dir enthält, ein "Personen"-Icon zu sehen (dazu musst Du eingeloggt sein).

  • Für Anfänger: Countdown-Timer

    • Oscar
    • 18. Dezember 2008 um 09:43

    Ich dachte mir, wir könnten ja mal ein paar kleine Scripte speziell für die AutoIt-Anfänger schreiben. Diese sollten möglichst gut kommentiert sein, um es den Anfängern leichter zu machen.
    Hier also ein Countdown-Timer:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Global $iCounterStart = 60 ; hier den Startwert in Sekunden angeben
    $iCounterStart *= 10 ; zum anzeigen der Zehntelsekunden mit 10 multiplizieren
    Global $iCounter = $iCounterStart ; der Countervariable den Startwert zuweisen
    Global $bStartStop = False ; boolesche Variable für Start/Stop Abfrage

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

    Global $hGui = GUICreate('Countdown-Timer', 600, 100) ; Fenster erstellen (Größe = 600x100 Pixel)
    Global $hProgressbar = GUICtrlCreateProgress(10, 10, 580, 20) ; Progressbar erstellen
    GUICtrlSetData(-1, 100) ; den Wert für die Progressbar auf 100% setzen
    Global $hDisplay = GUICtrlCreateLabel(StringFormat('%.1f', $iCounter / 10) & ' sek.', 20, 40, 60, 20) ; die Sekundenanzeige erstellen
    Global $hReset = GUICtrlCreateButton('Reset', 10, 70, 70, 20) ; "Reset"-Button erstellen
    Global $hStart = GUICtrlCreateButton('Start', 90, 70, 70, 20) ; "Start"-Button erstellen
    GUISetState() ; das Fenster anzeigen
    While True ; Endlosschleife starten
    Switch GUIGetMsg() ; abfragen, ob eine Benutzereingabe erfolgte
    Case $hReset ; wenn der Reset-Button angeklickt wurde
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    $iCounter = $iCounterStart ; den Counter wieder auf den Startwert setzen
    $bStartStop = False ; die Start/Stop-Variable zurücksetzen
    GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; die Sekundenanzeige stellen
    GUICtrlSetData($hProgressbar, 100) ; Progressbar wieder auf 100%
    GUICtrlSetData($hStart, 'Start') ; den Start-Button wieder mit dem Text "Start" belegen
    GUICtrlSetState($hStart, $GUI_ENABLE) ; den Start-Button wieder freigeben
    Case $hStart ; wenn der Start-Button angeklickt wurde
    $bStartStop = Not $bStartStop ; Start/Stop-Variable invertieren (aus False wird True und umgekehrt)
    Switch $bStartStop ; wenn der Wert der Start/Stop-Variablen...
    Case True ; =True, dann...
    GUICtrlSetData($hStart, 'Pause') ; den Start-Button mit dem Text "Pause" belegen
    AdlibEnable('_Countdown', 100) ; die Funktion "_Countdown" alle 100ms aufrufen
    Case False ; =False, dann...
    GUICtrlSetData($hStart, 'Weiter') ; den Start-Button mit dem Text "Weiter" belegen
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    EndSwitch
    Case $GUI_EVENT_CLOSE ; wenn der Schließen-Button angeklickt oder [ESC] gedrückt wurde
    Exit ; Programm verlassen
    EndSwitch
    If $iCounter <= 0 Then ; wenn der Counter Null erreicht hat, dann...
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    $iCounter = 1 ; den Counter auf 1 setzen, damit diese If...Then-Anweisung nur einmal ausgeführt wird
    GUICtrlSetState($hStart, $GUI_DISABLE) ; den Start-Button sperren (reagiert nicht mehr auf Mausklicks)
    MsgBox(0, 'Countdown-Timer', 'Zeit um!') ; Eine Meldung ausgeben
    EndIf
    WEnd

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

    Func _Countdown()
    $iCounter -= 1 ; den Counterwert um 1 verringern
    GUICtrlSetData($hProgressbar, Int(100 / $iCounterStart * $iCounter)) ; den neuen Wert in der Progressbar anzeigen
    GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; und als Sekundenwert darstellen
    EndFunc ;==>_Countdown

    [/autoit]
  • Prozess von meinem Programm im TaskManager sperren

    • Oscar
    • 18. Dezember 2008 um 00:03

    Zum einen ist AutoIt dafür nicht unbedingt die geeignete Programmiersprache. Zum anderen können und wollen wir dazu keinen Support leisten, weil so etwas viel zu leicht missbraucht werden kann.
    Ich glaube Dir, dass Deine Absichten ehrlicher Natur sind, aber das könnte von anderen missbräuchlich genutzt werden. Deshalb: Thread closed!

  • Antwortzeitenmessung mittels Autoskript

    • Oscar
    • 17. Dezember 2008 um 16:36

    Kann man denn diese Seite ("/ksc/Vorgaenge.do") direkt aufrufen?

  • Antwortzeitenmessung mittels Autoskript

    • Oscar
    • 17. Dezember 2008 um 15:52

    Jetzt wird's schwierig! :)
    Wie werden denn die Karteikarten-Reiter abgefragt? Und wie wird dann der Inhalt aktualisiert?
    Hier fließt jetzt u.U. viel zusammen (HTML, Javascript, evtl. noch CSS)...

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™