WM_MAXIMIZE - Message abfangen und dann die Fenster mit WinMove auf die reduzierte Größe anpassen. Bleibt die Abwägung von Aufwand (groß) und Nutzen (??).
Beiträge von BugFix
-
-
Guckst du hier: IntelliSenseBox
-
Man kann es auch noch etwas kürzen, die Prüfung auf Dateityp und evtl. vorzeitiges Verlassen der Schleife bringt eigentlich keinen Vorteil:
Spoiler anzeigen
[autoit]Func _GetHighestVer(ByRef $a)
[/autoit]
Local $name, $ver
Local $oFileVer = ObjCreate('Scripting.Dictionary')
For $i = 1 To $a[0]
$name = StringLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
$ver = StringTrimLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
If $oFileVer.Exists($name) Then
If $ver > $oFileVer.Item($name) Then $oFileVer.Item($name) = $ver
Else
$oFileVer.Add($name, $ver)
EndIf
Next
If $oFileVer.Count > 0 Then
Local $aOut[$oFileVer.Count]
Local $strKey, $colKeys = $oFileVer.Keys, $i = 0
For $strKey In $colKeys
$aOut[$i] = $strKey & $oFileVer.Item($strKey)
$i += 1
Next
Return $aOut
EndIf
EndFunc -
Dann sollte das hier passen:
Spoiler anzeigen
[autoit]; == das hier simuliert ein mit _FileReadToArray eingelesenes Verzeichnis
[/autoit] [autoit][/autoit] [autoit]
Local $aRead[12] = [11, _
'7777_0000.asm.1', _
'7777_0000.asm.2', _
'7777_0000.asm.3', _
'7777_0016.prt.29', _
'7777_0016.prt.30', _
'7777_0016.prt.31', _
'7777_0016.drw.55', _
'7777_0016.drw.56', _
'7777_0016.drw.57', _
'7777_0017.drw.11', _
'7777_0018.drw.12']$aRet = _GetHighestVer($aRead)
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aRet) -1
ConsoleWrite($aRet[$i] & @CRLF)
NextFunc _GetHighestVer(ByRef $a)
[/autoit]
Local $aType[3] = ['asm','prt','drw'], $ver
Local $oFileVer = ObjCreate('Scripting.Dictionary')
For $i = 1 To $a[0]
For $j = 0 To 2
If StringInStr($a[$i], $aType[$j]) Then
$name = StringLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
$ver = StringTrimLeft($a[$i], StringInStr($a[$i], '.', 1, -1))
If $oFileVer.Exists($name) Then
If $ver > $oFileVer.Item($name) Then $oFileVer.Item($name) = $ver
Else
$oFileVer.Add($name, $ver)
EndIf
ExitLoop
EndIf
Next
Next
If $oFileVer.Count > 0 Then
Local $aOut[$oFileVer.Count]
Local $strKey, $colKeys = $oFileVer.Keys, $i = 0
For $strKey In $colKeys
$aOut[$i] = $strKey & $oFileVer.Item($strKey)
$i += 1
Next
Return $aOut
EndIf
EndFunc -
Das stellt sicher kein großes Problem dar und ist in AutoIt lösbar. Aber um dir helfen zu können, solltest du angeben, welche Dateien denn übrig bleiben sollen, bzw. welches die Löschkriterien sind.
-
was ist UAC?
User Account Control (Benutzkontensteuerung)
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Ich kanns einfach nicht lassen - immer wieder überkommen mich neue Ideen.

Also, grundsätzlich kann man das Folgende natürlich mit einer Globalen Variablen im Skript genausogut erledigen.
Folgende Überlegung:
- eine Berechnung liefert einen Wert
- diesen möchte ich mehrfach nutzen
- in Vergleichsoperationen und/oder Rechenoperationen
Nun kann ich den Wert natürlich in eine Globale Variable packen und dann skriptweit damit weitermachen.
Anstelle der Zuweisung zu einer Variablen rufe ich nun die Funktion _Self() auf.
Der Name ist gut zu merken
und das Speichern erfolgt in einer Lokalen Variable.Und so sieht es aus:
Spoiler anzeigen
[autoit]Local $a = 100, $b = 200, $c = 3
[/autoit] [autoit][/autoit] [autoit]_Self($a + $b) ; == initialisieren
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Wert von _self ' & _Self('', 'val') & @CRLF)
ConsoleWrite('_self < $c ' & _Self($c, '<') & @CRLF)
ConsoleWrite('_self > $c ' & _Self($c, '>') & @CRLF)
ConsoleWrite('_self / $c ' & _Self($c, '/') & @CRLF)
ConsoleWrite('_self * $c ' & _Self($c, '*') & @CRLF)
ConsoleWrite('_self + $c ' & _Self($c, '+') & @CRLF)
ConsoleWrite('_self - $c ' & _Self($c, '-') & @CRLF)
ConsoleWrite('Quadratwurzel aus _self ' & _Self($c, '1/2') & @CRLF)
ConsoleWrite('Kubikwurzel aus _self ' & _Self($c, '1/3') & @CRLF)
ConsoleWrite('_self hoch $c ' & _Self($c, '^') & @CRLF)
_Self(0, 0) ; == entladen (oder mit neuem Wert initialisieren);===============================================================================
[/autoit]
; Function Name....: _Self
; Description......: Statisches Speichern eines numerischen Wertes, Vergleichs- u. Rechenoperationen mehrfach damit
; Parameter(s).....: $iVar Beim Initialisieren der zu speichernde Wert, sonst der Wert für die Operation mit dem hinterlegten Wert
; $sOp String der festlegt, welche Operation ausgeführt wird
; -1 übergebenen Wert initialisieren (Standard)
; 0 Wert entladen
; '< > = <> <= >=' Vergleichsoperationen ausführen
; '+ - * / ^' Rechenoperationen ausführen
; '1/2 1/3' Quadrat-, Kubikwurzel ziehen
; 'val' gespeicherten Wert zurückgeben
; Return Value(s)..: Ergebnis der Operation, gespeicherter Wert, (bei $sOp -1 u. 0 -- nichts)
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _Self($iVar, $sOp=-1)
Local Static $iSelf =''
Switch String($sOp)
Case '-1' ; == $iVar als Basiswert initialisieren
$iSelf = $iVar
Case '0' ; == Basiswert entladen
$iSelf = ''
Case '<', '>', '=', '<>', '<=', '>=' ; == Vergleichsoperation ausführen
Return Execute(String($iSelf & ' ' & $sOP & ' ' & $iVar))
Case '+','-', '*', '/', '^' ; == Rechenoperationen ausführen
Return Execute('(' & $iSelf & ') ' & $sOp & ' (' & $iVar & ')')
Case '1/2', '1/3' ; == Quadrat-, Kubikwurzel
Return Execute('(' & $iSelf & ') ^ (' & $sOp & ')')
Case 'val'
Return $iSelf
EndSwitch
EndFunc ;==>_Self
Inwiefern es tatsächlich sinnvoll einzusetzen ist, mag jeder für sich bewerten. Aber mir ist das grad so durch den Kopf gerauscht und ihr müßt es ertragen.
-
Du bist hier in AutoIt, "&&" gibt es hier nicht.
[autoit]
Das logische und ist: AND und du kannst den Wert nicht fortlaufend vergleichen, sondern mußt diesen explizit jedesmal anführen, z.B. so:If ($a > $b) AND ($a < $x) AND ($a > $y) Then
[/autoit] -
.verstehe noch nicht so ganz was angepasst werden muß
Genau das, was dir die Fehlermeldung sagt. Ich habe dort einfach Variablen erfunden mit verständlichem Namen, damit du verstehst, wozu sie zu verwenden sind. Natürlich mußt du diese im Skript noch deklarieren - warum tust du es nicht, wenn die Fehlermeldung dir sagt, dass die (neu hinzugefügte) Variable nicht deklariert ist?
- Vergleich die von mir eingesetzten ID/Handle, ob es auch das richtige Listview betrifft. Gegebenenfalls halt anpassen.
- Setze für $subItem den korrekten SpaltenIndex ein.
LIES meine Kommentare - da stand das bereits drin. -
BugFix Das soll jetzt nicht beleidigend sein, aber hast du verkrüppelte Hände wenn die so abgewinkelt zum Unterarm sind?
Nein - aber große Hände - und die Maus paßt ergonomisch halt in die Handfläche am Besten diagonal. Sollte das bei dir nicht der Fall sein, wäre es interessant zu wissen, ob deine Anatomie von der menschlichen abweicht (Position Mittelhandknochen). -
erhalte aber Fehler.
Verrätst du auch welcher Fehler kommt?
Hast du die Listviewbezeichnungen korrekt angepaßt? Ich sehe auch nicht, dass du versuchst den ausgelesenen Wert (Variable $inhalt) weiterzuverarbeiten oder zumindest zum Test in die Konsole zu schreiben.
Ich habe dir den Weg gezeigt - anpassen an deine Skripterfordernisse mußt du es schon selbst. -
Möglichkeiten gibt es mehrere, aber ich denke am einfachsten ist folgende Variante (einfach in die Event-Abfrage-Schleife einfügen und anpassen):
[autoit]Case $GUI_EVENT_PRIMARYUP ; == primäre Maustaste losgelassen
[/autoit]
$aCursor = GUIGetCursorInfo()
If $aCursor[4] = $hSearchListView Then ; == ID des Listview in das geklickt wurde
$index = _GUICtrlListView_GetSelectedIndices($hSearchLVHandle)
If $index > -1 Then
; == den inhalt auslesen und weiterverarbeiten
$inhalt = _GUICtrlListView_GetItemText($hSearchLVHandle, $index, $subItem) ; $subItem - die Spalte, deren Wert du willst (0, 1 ...)
EndIf
EndIf -
Auf meinem Win7 Pro 32Bit läuft es anstandslos. Wie sieht es mit UAC aus? Ist das aktiv? (Ist bei mir als erstes rausgeflogen, schließlich muß ich am PC arbeiten und nicht dauernd bestätigen müssen, dass das, was ich gerade aufrufe auch das ist, was ich gerade tun will :pinch: ).
-
Ich denke, ich verschaffe mal etwas Klarheit,mit einem kleinen Bildchen.
Ich kenne keine Maus, die tatsächlich ergonomisch ist. Ich hatte auch schon überlegt, die Maus mal in ein der Handform angepassten Gehäuse unterzubringen. Dadurch kippt aber die X/Y-Achse.
Links im Bild die standardmäßige, nicht der Handform angepaßte Mausführung - rechts, wie es eigentlich sinnvoll wäre.Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Das hat absolut nichts mit Spaßprogramm zu tun, sondern ist ein Problem für alle, die keine Klein-Mädchen-Hände haben.

-
Statt deiner Stringrightbastelei wäre übrigens Stringformat die "normale" Methode gewesen
Also ich würde StringFormat nicht als 'normale' Methode bezeichnen. Aufgrund der nicht gerade angenehmen Syntax setze ich es z.B. nur ein, wenn nicht irgendwie vermeidbar. Btw. ist die "Stringbastelei" auch die schnellere Methode.
-
gewöhne dir doch an, deinen Code IMMER zu kommentieren
Ich habe bereits mehrfach diese Bemerkung von dir gesehen. Grundsätzlich richtig, jedoch sollte man so etwas nur anmahnen, wo es notwendig ist. In einem Skript, dass sich in all seinen Befehlen eindeutig selbst erklärt, ist dieser Hinweis fehl am Platz.
Solltest du Probleme haben, das Skript zu verstehen, bist du möglicherweise noch nicht erfahren genug dabei Hilfe zu leisten.
-
Du kannst doch deine Bedingung an "INSERT OR REPLACE" mit "WHERE" anhängen. In deinem Fall also den TimeStamp vergleichen in der Klausel.
-
"Net use" aus AutoIt aufrufen oder wie?
[autoit]
Genau, und die Rückgabe dann auswerten:#include <Constants.au3>
[/autoit]
Local $foo = Run(@ComSpec & " /c " & 'net use', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $data
While True
$data &= StdoutRead($foo)
If @error Then ExitLoop
Sleep(25)
WEnd
ConsoleWrite($data & @CRLF) -
Wenn es damit nicht klappt, frag doch die Netzlaufwerkverbindungen mit "net use" ab.
-