Erfasse die Logs mit Delimiter (z.B. "|") in der Form:
DATUM|ABSENDER|EMPFÄNGER|OBJEKT
(wenn die vorhandenen Leerzeichen garantiert nur als Trenner auftauchen, kannst du auch diese verwenden)
Dann kannst du mit StringSplit( ) die Zeile in ein Array auslesen und dann umsortieren.
Beiträge von BugFix
-
-
Fragen zu ListBox?
Guckst du hier: http://autoit.aufwaerts.de/thread.php?postid=5214#post5214
-
Hi Dustin,
du bist immer etwas geizig mit deinen Angaben.
Etwas fiktiv zu erklären ist nicht so toll. Bring doch mal eine Beispielseite (bzw. deren Quellcode), die du ansprechen möchtest (evtl. accountbezogene Angaben einfache x-en).
Mit Beispiel arbeitet sich's viel besser.
-
Gib doch mal die Adresse der Web-Site an. Dann kann man sich selbst ein Bild machen.
-
Oder so, schließt auch nach OK-Button.
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Dim $key = "HKEY_LOCAL_MACHINE\SOFTWARE\Vitalwerks\DUC", $val = "xxxx.no-ip.org"
[/autoit] [autoit][/autoit] [autoit]$gui = GUICreate("test")
[/autoit] [autoit][/autoit] [autoit]
$input = GUICtrlCreateInput($val, 20, 20)
$OK = GUICtrlCreateButton("OK", 20, 60, 60, 21)
GUISetState()While 1
[/autoit]
$msg = GUIGetMsg()
Select
Case $msg = $OK
$key = GUICtrlRead($input)
RegWrite($key, "Checked", "REG_SZ", $val &"|")
ExitLoop
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
Exit -
Eigene Abkürzungen in SciTE
SciTE verfügt über eine Liste von Abkürzungen (zu finden in der Datei "abbrev.properties"), die das Codieren sehr vereinfachen.
Durch Eingabe der Abkürzung + Leertaste wird der hinterlegte Code eingefügt.
In einem vorigen Beitrag hatte ich bereits zur Änderung bestehender Abkürzungen geschrieben. Zu den bestehenden Abkürzungen lassen sich auch ganz einfach eigene hinzufügen.Code
Alles anzeigenDie Syntax ist folgende: Abkürzung=Code Zeilenumbruch: \n Tabulatorschritt: \t Cursorposition: | Alle Anweisungen müssen innerhalb einer Zeile geschrieben werden. Um z.B. einen Scriptheader zu erstellen der so aussieht: #cs ---------------------------------------------------------------------------- AutoIt Version: 3.2.1.14 (beta) Author: Dein Name Script Function: hier soll der Cursor stehen #ce ---------------------------------------------------------------------------- mußt du diese Zeile erstellen: scriptheader=#cs ----------------------------------------------------------------------------\n\n AutoIt Version: 3.2.1.14 (beta)\n Author: Dein Name\n Script Function: |\n\n#ce ----------------------------------------------------------------------------\nDie Datei "abbrev.properties" kannst du direkt über SciTE -> Optionen -> Abkürzungsdatei öffnen.
Füge einfach die neue Zeile in die Dateie ein (Position ist eigentlich egal - Hauptsache vor der Markierung [#-#-#-#..]) - aber für eine bessere Übersicht macht es vielleicht Sinn, eine eigene Sektion (#; -- Eigene Abkürzungen --) einzufügen.
Damit das Kürzel auch aktiv wird, mußt du es in der "au3.keywords.properties" (SciTE -> Optionen -> Öffnen au3.keywords.properties) eintragen.
Füge das Kürzel an das Ende der Sektion: ".keywords.abbrev=..." an. Hier aufpassen, dass als letztes immer ein Zeilenumbruch in der Datei bleibt - gibt sonst 'nen Fehler.
Ab sofort steht die neue Abkürzung zur Verfügung. -
Habs grad mal bei mir getestet, "FileDelete(@DesktopDir & "\blabla.lnk")" funktioniert 100 %.
[autoit]
MitMsgBox(0, '', FileDelete(@DesktopDir & "\blabla.lnk"))
[/autoit]kannst du dir gleich den Rückgabewert ausgeben lassen. 1-Erfolg, 0-Pech gehabt.

Wenn es also bei dir nicht funzt, liegt es nicht an Autoit.
-
[autoit]
$arNoMoveCustom = IniReadSection(@Scriptdir & "\modmove.ini", "NoMoveCustom")
[/autoit]
$arNoMove = IniReadSection($INIPfad, "NoMove")Wenn ich das richtig verstehe, beziehst du dich auf dieselbe INI. Dann verwende besser auch gleichen Code:
[autoit]$arNoMoveCustom = IniReadSection($INIPfad, "NoMoveCustom")
[/autoit]
$arNoMove = IniReadSection($INIPfad, "NoMove")
[autoit]
Und wenn$AllCustomModFiles = _FileListToArray($QuellPfad, "*.iwd")
[/autoit]
; ==
$AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
dann verwende besser nur "$AllModFiles", das ist eindeutig und erspart dir eine Variable.EDIT:
So, habs mal geändert und vereinfacht:Spoiler anzeigen
[autoit]
[/autoit]
$arNoMoveCustom = IniReadSection(@Scriptdir & "\modmove.ini", "NoMoveCustom")
;~ $arNoMoveCustom = IniReadSection($INIPfad, "NoMoveCustom") falls dieselbe INI, dieses hier
$arNoMove = IniReadSection($INIPfad, "NoMove")
;~ $AllCustomModFiles = _FileListToArray($QuellPfad, "*.iwd") weglassen, spart 'ne Menge Code
$AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
For $i = 1 To $AllModFiles[0]
For $k = 1 To $arNoMoveCustom[0][0]
;Custom Dateien markieren, die nicht verschoben werden sollen
If $AllModFiles[$i] = $arNoMoveCustom[$k][1] Then $AllModFiles[$i] &= "|"
Next
For $k = 1 To $arNoMove[0][0]
; Dateien markieren, die nicht verschoben werden sollen
If $AllModFiles[$i] = $arNoMove[$k][1] Then $AllModFiles[$i] &= "|"
Next
Next
For $i = 1 To $AllModFiles[0]
; nicht markierte Dateien verschieben
If StringRight($AllModFiles[$i], 1) <> "|" Then FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad)
Next
;counter
Select
Case $devmapsaveposmod = "yes"
FileMove($filepath & "modmove\zzz_Save_position_mod_V1.0.iwd", $filepath)
FileMove($filepath & "modmove\zzz_999_nades.iwd", $filepath)
$iextra = $counterextra + 1
IniWrite(@ScriptDir & "\modmove.ini", "Programminfo", "counterextra", $iextra)
Case Else
;counting the amount of movements
$icounter = $counter + 1
IniWrite(@ScriptDir & "\modmove.ini", "Programminfo", "counter", $icounter)
EndSelect
[autoit]
Nun noch zu deiner "Func _nomovelist()".
Ist$werteanzahl = IniReadSection($INIPfad, "NoMoveCustom")
[/autoit]nicht dieselbe Sektion derselben INI, wie hier:
[autoit]$arNoMoveCustom = IniReadSection(@Scriptdir & "\modmove.ini", "NoMoveCustom")
[/autoit]?
Und das Sortieren brauchst du nur einmal ausführen, nicht in einer Schleife. Somit wird die ganze Funktion hinfällig. Du solltest aber angeben, welche Dimension du sortieren möchtest.So, ich denke das wars erst mal.
-
Ja, stimmt,. Mit _ArraySort( ) war ich auf dem falschen Dampfer - sorry. Werde wohl doch langsam senil

Das andere schau ich mir nochmal an. Für schnelle Zwischenfragen, wärs nicht schlecht, falls du per Messsenger erreichbar wärst. Falls ja kannst du mich ja anklingeln. Steht alles in meinem Profil
-
[autoit]
$AllCustomModFiles = _FileListToArray($QuellPfad, "*.iwd")
[/autoit]
; identisch mit:
$AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
[autoit]
Ist das Absicht?For $icustom = 1 To $AllCustomModFiles[0]
[/autoit]
For $kcustom = 1 To $arNoMoveCustom[0][0]
Macht den Code etwas unübersichtlich, verwende lieber $i , $k usw. für einfache Zählvariablen.EDIT:
[autoit]
nochwas entdeckt:For $i = 1 To $AllModFiles[0]
[/autoit]
; nicht markierte Dateien verschieben
If StringRight($AllModFiles[$i], 1) <> "|" OR StringRight($AllCustomModFiles[$icustom], 1) <> "|" Then FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad) AND FileMove($QuellPfad & $AllCustomModFiles[$icustom], $ZielPfad)
Nextgeht nicht
ich denke, du meinst sowas:
[autoit]For $i = 1 To $AllModFiles[0]
[/autoit]
; nicht markierte Dateien verschieben
If StringRight($AllModFiles[$i], 1) <> "|" Then
FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad)
ElseIf StringRight($AllCustomModFiles[$icustom], 1) <> "|" Then
FileMove($QuellPfad & $AllCustomModFiles[$icustom], $ZielPfad)
EndIf
Next -
IniReadSection gibt ein Array das im Index $array[0][0] die Anzahl der Elemente führt.
-
Einiges kannst du mit ControlClick( ) oder ControlCommand( ) ausführen. Wie du die Controls ansprichst, erfährst du mit dem Tool: AutoIt Window Info.
Es gibt auch die Möglichkeit mit WinApi zu arbeiten, aber da hab ich wenig Erfahrung mit.
Eine gute Infoquelle ist auf jeden Fall das englische Forum. Die haben schon fast alles mal gemacht.
-
Guckst du hier:
Spoiler anzeigen
ZitatAlles anzeigenFunction Reference
GUIGetMsg
--------------------------------------------------------------------------------Polls the GUI to see if any events have occurred.
GUIGetMsg ( [advanced] )
Parameters
advanced [optional] return extended information in an array.
0 = (default) Returns a single event.
1 = returns an array containing the event and extended information.Return Value
Returns an event, or an array depending on the "advanced" parameter.
The "event" returned is the control ID of the control sending the message, or it is a special event (like the window is closing, minimizing). Or if there is no message, the event is 0.Event ID the ID of the control sending the message
0 No event
$GUI_EVENT_CLOSE dialog box being closed (either by defined button or system menu).
$GUI_EVENT_MINIMIZE dialog box minimized with Windows title bar button.
$GUI_EVENT_RESTORE dialog box restored by click on task bar icon.
$GUI_EVENT_MAXIMIZE dialog box maximized with Windows title bar button.
$GUI_EVENT_MOUSEMOVE the mouse cursor has moved.
$GUI_EVENT_PRIMARYDOWN the primary mouse button was pressed.
$GUI_EVENT_PRIMARYUP the primary mouse button was released.
$GUI_EVENT_SECONDARYDOWN the secondary mouse button was pressed.
$GUI_EVENT_SECONDARYUP the secondary mouse button was released.
$GUI_EVENT_RESIZED dialog box has been resized.
$GUI_EVENT_DROPPED End of a Drag&Drop action @GUI_DRAGID, @GUI_DRAGFILE and @GUI_DROPID will be used to retrieve the ID's/file corresponding to the involve control.When using the "advanced" parameter the information is returned in an array with extended information:
$array[0] = 0 or Event ID or Control ID
$array[1] = The window handle the event is from
$array[2] = The control handle the event is from (if applicable)
$array[3] = The current X position of the mouse cursor (relative to the GUI window)
$array[4] = The current Y position of the mouse cursor (relative to the GUI window)If the GUIOnEventMode option is set to 1 then the return from GUIGetMsg is always 0 and the @error is set to 1.
If the option GUIEventOptions is set to 1 the minimize, restore and maximize button will not do any action on the window just a simple notification.Remarks
This function automatically idles the CPU when required so that it can be safely used in tight loops without hogging all the CPU.
Information about the mouse position and the hovering control can be retrieved with GUIGetCursorInfo. No event is fired when the mouse is over a control so GUIGetCursorInfo must be called to retrieve the ControlID.
-
Zitat aus der Hilfe:
[autoit]#include <Inet.au3>
[/autoit]
$PublicIP = _GetIP()
MsgBox(0, "IP Address", "Your IP Address is: " & $PublicIP)
Bringt dir deine öffentliche IP -
Erstelle das kleine Fenster mit Style: $WS_EX_TOPMOST
Aufruf großes Fenster, dann Aufruf kleines Fenster ( GUISetState(@SW_SHOW, $Fensterhandle) ) - nun bleibt das kleine Fenster immer im Vordergrund. -
Habe gerade die Ermittlung der Position der TrayBar benötigt und das ganze gleich in eine Funktion gepackt.
[autoit];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[/autoit]
; Funktion _GetTrayBarPos()
;
; Beschreibung gibt die Position der TrayBar zurück
; 1 = rechts
; 2 = unten
; 3 = links
; 4 = oben
;
; Autor BugFix ( [email='bugfix@autoit.de'][/email] )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _GetTrayBarPos()
$TrayBarPos = WinGetPos("", "Notification Area" )
Select
Case $TrayBarPos[0] = -4
If $TrayBarPos[1] = -4 And $TrayBarPos[2] = (@DesktopWidth +8) Then
; Position = "unten"
Return 2
ElseIf $TrayBarPos[1] = -4 And $TrayBarPos[3] = (@DesktopHeight +8) Then
; Position = "rechts"
Return 1
Else
; Position = "oben"
Return 4
EndIf
Case Else
; Position = "links"
Return 3
EndSelect
EndFunc ; ==> _GetTrayBarPos() -
Zitat
Wenn sie aber nicht angehakt war, dann hake ich sie damit auch noch an

Ja, das stimmt leider. Momentan sehe ich aber keine Möglichkeit abzufragen, ob die Symbolleiste aktiviert oder deaktiviert ist. Vielleicht geht sowas durch Verwendung der WinAPI. Aber da bin ich nicht firm.Edit:
Ich habe dir mal eine Möglichkeit mit Ermittlung der Taskbar-Position erstellt. Dann bist du zumindest dabei unabhängig.Spoiler anzeigen
[autoit]$TrayBarPos = WinGetPos("", "Notification Area" )
[/autoit]
Select
Case $TrayBarPos[0] = -4
If $TrayBarPos[1] = -4 And $TrayBarPos[2] = (@DesktopWidth +8) Then
; Position = "unten"
$x=0
$y=@DesktopHeight
ElseIf $TrayBarPos[1] = -4 And $TrayBarPos[3] = (@DesktopHeight +8) Then
; Position = "rechts"
$x=@DesktopWidth
$y=0
Else
; Position = "oben"
$x=0
$y=0
EndIf
Case Else
; Position = "links"
$x=0
$y=0
EndSelect
MouseClick("right", $x, $y, 1, 0)
Send("y") ; Aufruf Menü Symbolleisten
Sleep(100)
Send("c") ; deaktiviert Schnellstart
MouseClick("right", $x, $y, 1, 0)
Send("y") ; Aufruf Menü Symbolleisten
Sleep(100)
Send("f") ; aktiviert FreeLaunchBar -
Ja Bernd, da hast du natürlich recht.
[autoit]
ich habe noch etwas rumprobiert. Sollte aber die Taskbar unten sein, ist folgende Variante schneller und darüber lässt sich auch die FreeLaunchBar aktivieren.Dim $x = 0, $y = @DesktopHeight
[/autoit]
MouseClick("right", $x, $y, 1, 0)
Send("y") ; Aufruf Menü Symbolleisten
Sleep(100)
Send("c") ; deaktiviert Schnellstart
MouseClick("right", $x, $y, 1, 0)
Send("y") ; Aufruf Menü Symbolleisten
Sleep(100)
Send("f") ; aktiviert FreeLaunchBarIdeal wäre natürlich, wenn per RunDLL32 auch dieses Menü direkt aufgerufen werden könnte. Hab aber k.P. ob das geht.
-
Hier eine Lösung, die funktioniert. Leider dauert das Eintragen der Änderung bei Windows recht lang, sodass das Eigenschaftsfenster noch 4-5 Sekunden sichtbar ist.
[autoit]AutoItSetOption("WinTitleMatchMode", 4)
[/autoit]
Dim $x = 0, $y = @DesktopHeight
MouseClick("right", $x, $y, 1, 0) ; Rechtsklick in unterste linke Ecke
Send("i") ; Aufruf Kontextmenü Eigenschaften
WinWaitActive("Eigenschaften von Taskleiste und Startmenü")
ControlClick("Eigenschaften von Taskleiste und Startmenü", "", 1107) ; egal welcher Tab gerade sichtbar, das Control wird direkt angesprochen
Send("{ENTER}") ; dauert etwas -
Die Einstellungen für die Taskbar findest du im Registry-Schlüssel: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\
Im Schlüssel "TaskbarWinXP" sind alle Informationen als Binärwert abgelegt. Du kannst also nicht gezielt einzelne Einstellungen verändern, sondern müsstest vorher wissen, wie sich dabei der Binärwert ändert.
Ist also z.B. für unattended installation interessant, dass gleich die Voreinstellungen für die Taskbar wieder installiert werden.Bleibt also nur der Mausklick in den Taskbareigenschaften zum Deaktivieren der Schnellstartleiste.