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. BugFix

Beiträge von BugFix

  • Schreibschutz von kopierten Dateien automatisch entfernen

    • BugFix
    • 10. Juni 2008 um 11:04
    [autoit]

    FileSetAttrib($OrdnerPfad & '\*.*', '+A-R', 1)

    [/autoit]

    Archiv muß nicht unbedingt gesetzt werden, also '-R' reicht auch.

  • Ordner suchen und löschen

    • BugFix
    • 10. Juni 2008 um 09:59

    Warum das Programm abbricht, ist mir nicht ganz klar.
    Edit: Habs gefunden - die Auflistung enthält ja alle Pfadangaben einzeln, somit wird ein Parent-Folder bereits gelöscht und anschließend folgt der Verweis auf einen Subfolder (der jetzt nicht mehr existiert). Einfach eine FolderExists-Abfrage einbauen - dann läuft es.

    Spoiler anzeigen
    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'D:\Profile\Dokumente und Einstellungen'
    Dim $str = ''
    _ShowSubFolders($oFSO.GetFolder($Path))

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

    Func _ShowSubFolders($Folder)
    For $Subfolder in $Folder.SubFolders
    $str &= $Subfolder.Path & @LF
    _ShowSubFolders($Subfolder)
    Next
    EndFunc
    $aAllFolder = StringSplit($str, @LF)
    For $i = 1 To UBound($aAllFolder) -1
    If StringInStr($aAllFolder[$i], 'gotomaxx') And $oFSO.FolderExists($aAllFolder[$i]) Then _
    $oFSO.DeleteFolder($aAllFolder[$i])
    Next

    [/autoit]

    FireFlyer
    Woher man das weiß? :D
    Ein Großteil von Skripten, die in VBS erstellt sind kann man 1:1 in AutoIt umsetzen. Auch VB-Code läßt sich als Grundlage verwenden. Also fleißig in VB-Archiven stöbern und vor allem sehr zu empfehlen: MSDN - Objektmodelle
    Hier mal der Link zum FSO

  • Einstellungen von Programm speichern?!

    • BugFix
    • 10. Juni 2008 um 09:43

    Der Speicherort der INI-Datei wird bei der Variablendeklaration festgelegt:

    [autoit]

    Global $INI = @ScriptDir & '\Meine.ini'

    [/autoit]

    In diesem Fall wird das Makro @ScriptDir verwendet, also das Verzeichnis, indem sich auch das Skript selbst befindet.

    Global legt in der Variablendeklaration den Gültigkeitsbereich der Variablen fest. Näheres findest du in der Hilfe unter Variablen.

    Das Bsp. mit der Case-Abfrage:
    Ja, jedem Font wird eine Ziffer zugeordnet und diese wird in der INI eingetragen. (Macht ja wenig Sinn, für jede Schriftart einen eigenen Schlüssel in der INI anzulegen)

    Oh man, du "Siezt" mich. Hast wohl in mein Profil geschaut und gesehen, wie alt ich bin ;( . Da fühle ich mich gleich noch älter :rofl:
    Also, wir duzen uns hier alle ;)

  • Visual IDE for AutoIt

    • BugFix
    • 9. Juni 2008 um 22:57

    Danke Tam0r für die hoffnungsvollen Aussichten.
    Wünsche dir viel Erfolg bei den Prüfungen. Toi, Toi, Toi. :thumbup:

  • Einstellungen von Programm speichern?!

    • BugFix
    • 9. Juni 2008 um 22:53

    Das geht so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $INI = @ScriptDir & '\Meine.ini'
    If Not FileExists($INI) Then IniWrite($INI, 'font', 'Arial', 1) ; wenn nicht vorhanden, wird INI erstellt
    Global $font = IniRead($INI, 'font', 'Arial', 1)

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

    GUICreate("Test", 150, 100)
    $menu2 = GUICtrlCreateMenu("Schriftart")
    $item4 = GUICtrlCreateMenuItem("Arial", $menu2)
    $item5 = GUICtrlCreateMenuItem("Arial Black", $menu2)

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

    If $font = 1 Then
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    GUICtrlSetState($item5, $GUI_CHECKED)
    EndIf

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $item4
    $arial = "Arial"
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    IniWrite($INI, 'font', 'Arial', 1)
    Case $item5
    $arialblack = "Arial Black"
    GUICtrlSetState($item5, $GUI_CHECKED)
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    IniWrite($INI, 'font', 'Arial', 0)
    EndSwitch
    WEnd

    [/autoit]

    Edit:
    Falls du mehrere Schriftarten einbinden willst würde ich so vorgehen:
    Je Font eine Ziffer vergeben und die aktuelle Ziffer in der INI speichern.

    Spoiler anzeigen
    [autoit]

    ;~ beim Laden den zugehörigen Font markieren
    $font = IniRead($INI, 'font', 'type', 1)
    Switch $font
    Case 1 ; Arial
    ; Code zum Check des Eintrags
    Case 2 ; Arial Black
    ; Code zum Check des Eintrags
    Case 3 ; Arial Narrow
    ; Code zum Check des Eintrags
    Case 4 ; Comic Sans Serife
    ; Code zum Check des Eintrags
    Case 5 ; Courier New
    ; Code zum Check des Eintrags
    Case 6 ; TimesNewRoman
    ; Code zum Check des Eintrags
    EndSwitch

    [/autoit]
  • Ordner suchen und löschen

    • BugFix
    • 9. Juni 2008 um 20:30

    Vielleicht gefällt dir diese Lösung?

    [autoit]

    Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
    Dim $Path = 'D:\Profile\Dokumente und Einstellungen'
    Dim $str = ''
    _ShowSubFolders($oFSO.GetFolder($Path))

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

    Func _ShowSubFolders($Folder)
    For $Subfolder in $Folder.SubFolders
    $str &= $Subfolder.Path & @LF
    _ShowSubFolders($Subfolder)
    Next
    EndFunc
    $aAllFolder = StringSplit($str, @LF)
    For $i = 1 To UBound($aAllFolder) -1
    If StringInStr($aAllFolder[$i], 'gotomaxx') Then $oFSO.DeleteFolder($aAllFolder[$i])
    Next

    [/autoit]

    Edit: Hatte die Rekursion vergessen, nun passt es.

  • Einstellungen von Programm speichern?!

    • BugFix
    • 9. Juni 2008 um 20:04

    Ja, INI ist am einfachsten, schau mal die Bsp. in der Hilfe zu INIWrite(), INIRead(), usw. an.
    Eine andere Variante ist die Verwendung von Registryeinträgen. Mag ich persönlich gar nicht, das müllt einen Rechner zu schnell zu.

  • daten aus einem 2-D-Array vergleichen

    • BugFix
    • 9. Juni 2008 um 16:51

    Mal als Anregung, versuche es dann umzusetzen:
    - Gehe durch das Ergebnis-Array
    - Schreibe Wert 1 in ein Temporäres Array (hat jetzt kleinstes X)
    - Solange Y gleich ist tue nichts
    - Wenn Y den nächsten Wert annnimmt wird auch dieser Wert in Tmp-Array geschrieben
    - der vorhergehende Wert ist dann der letzte und somit mit größtem X für das vorige Y (auch in Tmp-Array schreiben)
    - der letzte Eintrag im Array ist auch der mit größtem X für das letzte Y
    so weiter bis zum Ende
    Analog vorgehen nach dem Umsortieren (des Ergebnisarray, nicht des Tmp-Array) für X und zugehörige Y

    Am Ende sind nur die größten und kleinsten Werte im Tmp-Array.

    Edit: Ich habs mal auf die Schnelle gemacht, ungetestet. Befehlszeile für Sortieren mußt du noch einfügen.

    Spoiler anzeigen
    [autoit]

    $aErgebnisse[100][2] ; Ergebnisse sortiert nach Y fallend, X steigend ; [n][0] = X, [n][1] = Y
    $aTmp[1][2] ; leer, zum Aufnehmen der begrenzenden Koordinaten

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

    $aTmp[0][0] = $aErgebnisse[0][0] ; vorbelegen mit erstem Eintrag
    $aTmp[0][1] = $aErgebnisse[0][1]

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

    For $i = 1 To UBound($aErgebnisse) -1
    If $aTmp[UBound($aTmp)-1][1] <> $aErgebnisse[$i][1] Then ; Y hat neuen Wert
    ReDim $aTmp[UBound($aTmp)+2][2]
    $aTmp[UBound($aTmp)-2][0] = $aErgebnisse[$i-1][0] ; vorhergehenden Wert als größten Wert übernehmem
    $aTmp[UBound($aTmp)-2][1] = $aErgebnisse[$i-1][1] ; falls nur einer ist der doppelt (min u. max) wird später gelöscht
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[$i][0] ; aktueller Wert als neuer kleinster Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[$i][1]
    EndIf
    Next
    ReDim $aTmp[UBound($aTmp)+1][2]
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[UBound($aErgebnisse)-1][0] ; letzter Wert ist letzter größter Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[UBound($aErgebnisse)-1][1]

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

    ;=========================================
    ; HIER NOCH DAS $aErgebnisse UMSORTIEREN!!
    ;=========================================

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

    ; jetzt mit umsortiertem Array alles wie gehabt aber für X
    ReDim $aTmp[UBound($aTmp)+1][2]
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[0][0] ; vorbelegen mit erstem Eintrag
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[0][1]

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

    For $i = 1 To UBound($aErgebnisse) -1
    If $aTmp[UBound($aTmp)-1][0] <> $aErgebnisse[$i][0] Then ; X hat neuen Wert
    ReDim $aTmp[UBound($aTmp)+2][2]
    $aTmp[UBound($aTmp)-2][0] = $aErgebnisse[$i-1][0] ; vorhergehenden Wert als größten Wert übernehmem
    $aTmp[UBound($aTmp)-2][1] = $aErgebnisse[$i-1][1] ; falls nur einer ist der doppelt (min u. max) wird später gelöscht
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[$i][0] ; aktueller Wert als neuer kleinster Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[$i][1]
    EndIf
    Next
    ReDim $aTmp[UBound($aTmp)+1][2]
    $aTmp[UBound($aTmp)-1][0] = $aErgebnisse[UBound($aErgebnisse)-1][0] ; letzter Wert ist letzter größter Wert
    $aTmp[UBound($aTmp)-1][1] = $aErgebnisse[UBound($aErgebnisse)-1][1]

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

    ; jetzt doppelte Einträge entfernen
    _Array2DDblDel($aTmp)

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

    Func _Array2DDblDel(ByRef $ARRAY, $CASESENS=0)
    Local $arTmp[1] = [''], $dbl = 0, $count = 0, $x, $l, $val, $valTmp, $i, $k
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $Ubound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    For $i = 0 To UBound($ARRAY)-1
    $dbl = 0
    For $k = 0 To UBound($arTmp)-1
    Switch $CASESENS
    Case 0
    If $arTmp[$k] = $ARRAY[$i] Then
    $dbl = 1
    $count += 1
    EndIf
    Case 1
    If $arTmp[$k] == $ARRAY[$i] Then
    $dbl = 1
    $count += 1
    EndIf
    EndSwitch
    Next
    If $dbl = 0 Then
    If $arTmp[0] = "" Then
    $arTmp[0] = $ARRAY[$i]
    Else
    ReDim $arTmp[UBound($arTmp)+1]
    $arTmp[UBound($arTmp)-1] = $ARRAY[$i]
    EndIf
    Else
    $dbl = 0
    EndIf
    Next
    Else
    ReDim $arTmp[1][$Ubound2nd]
    $arTmp[0][0] = ''
    $x = 0
    For $i = 0 To UBound($ARRAY)-1
    $dbl = 0
    $val = ''
    $valTmp = ''
    For $l = 0 To $Ubound2nd-1
    $val &= $ARRAY[$i][$l]
    Next
    For $k = 0 To UBound($arTmp)-1
    For $l = 0 To $Ubound2nd-1
    $valTmp &= $arTmp[$k][$l]
    Next
    Switch $CASESENS
    Case 0
    If $valTmp = $val Then
    $dbl = 1
    $count += 1
    EndIf
    Case 1
    If $valTmp == $val Then
    $dbl = 1
    $count += 1
    EndIf
    EndSwitch
    $valTmp = ''
    Next
    If $dbl = 0 Then
    If $x = 1 Then ReDim $arTmp[UBound($arTmp)+1][$Ubound2nd]
    For $l = 0 To $Ubound2nd-1
    If $arTmp[0][0] = '' Or $x = 0 Then
    $arTmp[0][$l] = $ARRAY[0][$l]
    If $l = $Ubound2nd-1 Then $x = 1
    Else
    $arTmp[UBound($arTmp)-1][$l] = $ARRAY[$i][$l]
    $x = 2
    If $l = $Ubound2nd-1 Then $x = 1
    EndIf
    Next
    Else
    $dbl = 0
    EndIf
    Next
    EndIf
    $ARRAY = $arTmp
    Return $count
    EndFunc ; ==>_Array2DDblDel

    [/autoit]
  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 15:23

    Also ich weise dir gerne den Weg, aber ich bin kein Taxifahrer, der dich auch noch fährt, weil du nicht laufen möchtest. :P

  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 15:01
    [autoit]

    #Include <GuiComboBox.au3>
    $Text = ''
    $index = _GUICtrlComboBox_GetCurSel($hComboBox) ; Index der aktuellen Auswahl
    _GUICtrlComboBox_GetLBText($hComboBox, $index, $Text) ; Text der aktuellen Auswahl wird in $Text geschrieben

    [/autoit]
  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 14:52

    Na dann könnte dir das weiterhelfen: http://www.autoitscript.com/forum/index.php?showtopic=65027&hl=embedded++flash

    (Allerdings sind die von dir angegebenen SWF-Links wohl nicht verfügbar, ich kann mit keinem Player unter Angabe des Links darauf zugreifen)

  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 14:37

    Machst du keinen Syntax-Check?
    Dann würdest du sofort die Fehlermeldung bekommen, dass "_FileWriteLog()" eine unbekannte Funktion ist.
    Weil: #include <file.au3> fehlt ;)

  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 14:32

    Ja, das Bsp. aus der Hilfe etwas abgewandelt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>

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

    _IEErrorHandlerRegister ()

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

    $oIE = _IECreateEmbedded ()
    GUICreate("Embedded Web control Test", 640, 580, (@DesktopWidth - 640) / 2, _
    (@DesktopHeight - 580) / 2, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    $GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 600, 360)
    $GUI_Button_Start = GUICtrlCreateButton("Start", 10, 420, 100, 30)

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $GUI_Button_Start
    _IENavigate ($oIE, "http://de.sevenload.com/videos/KzvjaXn-Book-1-04")
    EndSelect
    WEnd

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

    GUIDelete()
    Exit

    [/autoit]
  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 14:20

    Ja klar. Da muß der Pfad für die Datei rein :)
    z.B.:

    [autoit]

    Global $LogFilePath = @ScriptDir & '\MeineUser.log'

    [/autoit]
  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 14:17

    Ah, Problem erkannt. Das wird wohl nicht gehen, da kein Link zum Video selber existiert, sondern nur zur Website mit eingebettetem Video. Die Website kpl. kannst du natürlich in eine Oberfläche einbetten, aber ich denke, das ist nicht was du willst.

  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 14:02

    Was geht denn nicht?
    Im LogFile sollte in etwa erscheinen:

    DATUM ZEIT: AccountType: .......
    Caption: .....
    Description: .....
    Domain: .....
    FullName: .....

  • Flash Videos einbinden?

    • BugFix
    • 9. Juni 2008 um 13:55
    Zitat von slash

    gibt es eine möglichkeit flashvideos einzubinden


    Wo möchtest du das Video einbinden?

  • Benutzer suchen

    • BugFix
    • 9. Juni 2008 um 13:53

    In der Schleife einfach vor die Zeile mit der MsgBox:

    [autoit]

    _FileWriteLog($LogFilePath, $Output)

    [/autoit]

    Aber warum in ein LogFile? Die Abfrage machst du doch einmal und dann weißt du Bescheid. Da kommt es doch sicher nicht auf Datum und Zeit der Abfrage an - oder?

  • .Png in Guictrlcreatepic verwenden ?

    • BugFix
    • 9. Juni 2008 um 13:45

    Mein letzter Post dazu, Ausschnitt aus der Hilfe:

    Spoiler anzeigen
    Code
    GUI Controls
    All users will be familiar with controls - anything you click on or interact with in a window is a type of control. 
    The types of controls that can be created with AutoIt are listed below - you will have used most of them in other Windows programs. 
    
    
    Label		A plain piece of text. 
    Button		A simple button. 
    Input		A single line control that you can enter text into. 
    Edit		A multi-line control that you can enter text into. 
    Checkbox	A box that can be "checked" or "unchecked". 
    Radio		A set of circular buttons - only one can be active at once. 
    Combo		A list with a dropdown box.  
    List		A list.  
    Date		A date picker. 
    Pic		A picture.  
    Icon		An icon.  
    Progress	A progress bar.  
    Tab		A group of controls that are contained in tabs.  
    UpDown		A control that can be added to input controls. 
    Avi		Display an AVI format clip. 
    Menu		A menu across the top of the window. 
    ContextMenu	A menu that appears when you right click inside the window.  
    TreeView	A control similar to the windows file-explorer.  
    Slider		A control similar to the windows sound volume control.  
    ListView	A control displaying columns information.  
    ListViewItem	A control displaying item in a listview control. 
    Graphic		A control displaying graphics drawn with GUICtrlSetGraphic. 
    Dummy		A dummy user control.
    Alles anzeigen
  • .Png in Guictrlcreatepic verwenden ?

    • BugFix
    • 9. Juni 2008 um 13:15
    Zitat von Eistee

    ich denke nicht jemals welche benutzt zu haben


    Nur mal hier ein Verweis auf dein eigenes Skript:
    $Pic2 = GUICtrlCreatePic(@TempDir & "\Start.jpg", 38, 265, 130, 30, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic3 = GUICtrlCreatePic(@TempDir & "\Options.jpg", 212, 265, 130, 30, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic4 = GUICtrlCreatePic(@TempDir & "\Website.jpg", 382, 265, 130, 30, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic5 = GUICtrlCreatePic(@TempDir & "\Close.jpg", 532, 0, 20, 20, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic1 = GUICtrlCreatePic(@TempDir & "\BG1.jpg", 0, 0, 550, 300, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$Ws_Disabled))
    $Edit1 = GUICtrlCreateEdit("", 38, 168, 474, 89)

    Sind das Melonen oder Zuckerstangen? - NEIN, das sind von dir noch nie benutzte Controls. :rofl:

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™