[autoit]
FileSetAttrib($OrdnerPfad & '\*.*', '+A-R', 1)
[/autoit]Archiv muß nicht unbedingt gesetzt werden, also '-R' reicht auch.
FileSetAttrib($OrdnerPfad & '\*.*', '+A-R', 1)
[/autoit]Archiv muß nicht unbedingt gesetzt werden, also '-R' reicht auch.
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.
Dim $oFSO = ObjCreate('Scripting.FileSystemObject')
Dim $Path = 'D:\Profile\Dokumente und Einstellungen'
Dim $str = ''
_ShowSubFolders($oFSO.GetFolder($Path))
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
FireFlyer
Woher man das weiß?
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
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 ![]()
Also, wir duzen uns hier alle ![]()
Danke Tam0r für die hoffnungsvollen Aussichten.
Wünsche dir viel Erfolg bei den Prüfungen. Toi, Toi, Toi. ![]()
Das geht so:
#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)
GUICreate("Test", 150, 100)
$menu2 = GUICtrlCreateMenu("Schriftart")
$item4 = GUICtrlCreateMenuItem("Arial", $menu2)
$item5 = GUICtrlCreateMenuItem("Arial Black", $menu2)
If $font = 1 Then
GUICtrlSetState($item4, $GUI_CHECKED)
GUICtrlSetState($item5, $GUI_UNCHECKED)
Else
GUICtrlSetState($item4, $GUI_UNCHECKED)
GUICtrlSetState($item5, $GUI_CHECKED)
EndIf
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
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.
;~ 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
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))
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
Edit: Hatte die Rekursion vergessen, nun passt es.
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.
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.
$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
$aTmp[0][0] = $aErgebnisse[0][0] ; vorbelegen mit erstem Eintrag
$aTmp[0][1] = $aErgebnisse[0][1]
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]
;=========================================
; HIER NOCH DAS $aErgebnisse UMSORTIEREN!!
;=========================================
; 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]
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]
; jetzt doppelte Einträge entfernen
_Array2DDblDel($aTmp)
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
Also ich weise dir gerne den Weg, aber ich bin kein Taxifahrer, der dich auch noch fährt, weil du nicht laufen möchtest. ![]()
#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
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)
Machst du keinen Syntax-Check?
Dann würdest du sofort die Fehlermeldung bekommen, dass "_FileWriteLog()" eine unbekannte Funktion ist.
Weil: #include <file.au3> fehlt ![]()
Ja, das Bsp. aus der Hilfe etwas abgewandelt:
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>
_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)
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
GUIDelete()
Exit
Ja klar. Da muß der Pfad für die Datei rein ![]()
z.B.:
Global $LogFilePath = @ScriptDir & '\MeineUser.log'
[/autoit]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.
Was geht denn nicht?
Im LogFile sollte in etwa erscheinen:
DATUM ZEIT: AccountType: .......
Caption: .....
Description: .....
Domain: .....
FullName: .....
gibt es eine möglichkeit flashvideos einzubinden
Wo möchtest du das Video einbinden?
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?
Mein letzter Post dazu, Ausschnitt aus der Hilfe:
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
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. ![]()