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

  • Farbverlauf in Autoit

    • Oscar
    • 1. August 2009 um 21:08

    Von schwarz nach orange:

    [autoit]


    $hGui = GUICreate('test', 400, 330)
    For $i = 0 To 165
    GUICtrlCreateLabel('', 0, $i * 2, 400, 2)
    $sColor = '0x' & Hex(90 + $i, 2) & Hex($i, 2) & '00'
    GUICtrlSetBkColor(-1, $sColor)
    Next
    GUISetState()
    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Farbverlauf in Autoit

    • Oscar
    • 1. August 2009 um 17:08

    Die Farbverwaltung bei AutoIt entspricht einem 24bit RGB-Farbraum. Für jede der drei Grundfarben stehen 8bit zur Verfügung. Mit 8bit kann man 256 verschiedene Zustände speichern (siehe Dualsystem). Jede der drei Grundfarben kann also einen Wert von 0...255 (dezimal) oder 00...FF (hexadezimal) annehmen. Je höher der Wert, umso heller wird die Farbe.
    Ein Farbwert von 0x000000 (hexadezimal) entspricht der Farbe Schwarz, 0xFFFFFF hingegen repräsentiert die Farbe Weiß. Verändert man nur eine der Grundfarben erhält man Rot (0xFF0000), Grün (0x00FF00) oder Blau (0x0000FF).
    Dabei kann man die drei Grundfarben beliebig mischen. Bei einem Farbverlauf von Dunkel nach Hell verändert man die Werte der drei Grundfarben gleichmäßig (z.B. indem man für jede Abstufung jeweils einen bestimmten Wert addiert).
    Ein Farbverlauf zwischen zwei, drei oder mehreren Farben ist hingegen abhängig vom Programmierer. Dabei kann man die Werte ganz unterschiedlich verändern, sodass es am Ende einen schönen Übergang ergibt. Was "schön" ist, liegt dann im Auge des Betrachters. ;)

  • Fenster nicht weg klickbar und nich in der Taskleiste.

    • Oscar
    • 31. Juli 2009 um 18:54

    Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $hGui = GUICreate('Test', 800, 600)
    $hButton = GUICtrlCreateButton('Open Child', 20, 20, 100, 25)
    GUISetState()
    $hChild = GUICreate('Child', 160, 120, -1, -1, Default, $WS_EX_TOPMOST, $hGui)
    While True
    $aMsg = GUIGetMsg(1)
    Switch $aMsg[0]
    Case $GUI_EVENT_CLOSE
    Switch $aMsg[1]
    Case $hGui
    Exit
    Case $hChild
    GUISetState(@SW_HIDE, $hChild)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    EndSwitch
    Case $hButton
    GUISetState(@SW_SHOW, $hChild)
    GUISetState(@SW_DISABLE, $hGui)
    EndSwitch
    WEnd

    [/autoit]
  • Array logisch sortieren BugFix hier was für dich ;)

    • Oscar
    • 30. Juli 2009 um 18:34

    Cool! Jetzt gibt's eine QuickSort-Version davon. :thumbup:
    Gleich mal ins private Archiv packen...

  • Array logisch sortieren BugFix hier was für dich ;)

    • Oscar
    • 30. Juli 2009 um 17:35

    Eine kleine Änderung der Funktion:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Global $array[8] = ['acd1','abc1','hallo ich bin doof','abc12','fsdfd fdsf','abc3','abc4','acf2']
    _ArraySort($array)
    _ArrayDisplay($array, 'Array mit _ArraySort')
    _NumArraySort($array)
    _ArrayDisplay($array, 'Array mit _NumArraySort')

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

    Func _NumArraySort(ByRef $array)
    _ArraySort($array)
    Local $tmp
    For $i = 0 To UBound($array) - 2
    For $j = $i + 1 To UBound($array) - 1
    If StringRegExpReplace($array[$j], '(\D*)\d*\D*', '$1') = StringRegExpReplace($array[$i], '(\D*)\d*\D*', '$1') Then
    If Number(StringRegExpReplace($array[$j], '\D*(\d*)\D*', '$1')) < Number(StringRegExpReplace($array[$i], '\D*(\d*)\D*', '$1')) Then
    $tmp = $array[$i]
    $array[$i] = $array[$j]
    $array[$j] = $tmp
    EndIf
    EndIf
    Next
    Next
    EndFunc

    [/autoit]
  • While , IF Problem

    • Oscar
    • 30. Juli 2009 um 17:15

    Versuch's mal mit dieser Version von _reg():

    Spoiler anzeigen
    [autoit]


    Func _reg()
    Local $icount = _GUICtrlListView_GetItemCount($hListViewon)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($hListViewon, $i)
    Local $line
    While 1
    If FileExists('\\server\share\' & $ListViewText[1] & '.log') Then
    $line = FileRead('\\server\share\' & $ListViewText[1] & '.log')
    If StringInStr($line, "Flag ") Then
    MsgBox(0, "", "String in Log vorhanden")
    Else
    MsgBox(0, "", "String in log nicht vorhanden")
    ExitLoop
    EndIf
    Else
    Ping($ListViewText[1], 1) ; Host anpingen
    If @error Then
    MsgBox(0, 0, "Ping auf " & $ListViewText[1] & " nicht erfolgreich!")
    ExitLoop
    Else
    RegRead("\\" & $ListViewText[1] & "\HKEY_LOCAL_MACHINE\SOFTWARE\x32\Flag", "ProductName")
    If @error = 0 Then
    MsgBox(0, "", "Flag eintrag x32 vorhanden")
    ExitLoop
    Else
    RegRead("\\" & $ListViewText[1] & "\HKEY_LOCAL_MACHINE\SOFTWARE\x64\\Flag", "ProductName")
    If @error = 0 Then
    MsgBox(0, "", "Flag eintrag x64 vorhanden")
    ExitLoop
    Else
    ExitLoop
    EndIf
    EndIf
    EndIf
    EndIf
    WEnd
    _count()
    Next
    EndFunc ;==>_reg

    [/autoit]
  • Array logisch sortieren BugFix hier was für dich ;)

    • Oscar
    • 30. Juli 2009 um 17:05
    Zitat von Gummibaer

    nur ist durch den _NumArraySort die Alphabetische reinfolge zerstört *kopfKratz*

    Äh, Du musst Dich schon entscheiden. Du wolltest doch eine numerische Sortierung.
    Gib mal Beispiele, wie das vorher/nachher aussehen soll.

  • While , IF Problem

    • Oscar
    • 30. Juli 2009 um 15:14

    Wenn das Script "hängt" nachdem die Pings durch sind, dann vermutlich in der While...WEnd-Schleife in der Funktion "_reg()".
    Die wird vermutlich ewig durchlaufen, weil "ExitLoop" nie erreicht wird. Irgend ein If...Then führt nie zum "ExitLoop".
    Schonmal die Pfade von RegRead überprüft?

  • Array logisch sortieren BugFix hier was für dich ;)

    • Oscar
    • 30. Juli 2009 um 14:35

    Manchmal ist die Logik halt auch relativ. ;)
    Sagen wir mal: Du möchtest das Array numerisch (statt alphanumerisch) sortieren.
    Mit nur 40 Einträgen ist das SimpleSort-Verfahren kein Problem. Ich hab's jetzt nicht ausgiebig getestet, aber ich würde sagen, so bis ca. 1000 Array-Elemente sollte das noch ganz akzeptabel laufen.
    Darüber sollte man lieber ein QuickSort benutzen.

    Ein Problem könnte mit meiner Funktion auftreten, wenn die Array-Elemente mehrere Zahlen enthalten (z.B. "Beispiel 12 blabla 45").
    Falls das bei Dir der Fall ist, melde Dich nochmal, dann kann man das RegExp-Pattern vielleicht noch verfeinern.

  • Lock

    • Oscar
    • 30. Juli 2009 um 04:48

    RechterWinkel: Was soll dieses rumgepushe bei einem Thread der schon Monate alt ist und dessen Threadopener seitdem nicht mehr online war? X(

  • Array logisch sortieren BugFix hier was für dich ;)

    • Oscar
    • 30. Juli 2009 um 04:34

    _ArraySort sortiert schon "richtig", denn es handelt sich bei Deinem Array ja um Strings und nicht um Zahlen.
    Willst Du eine andere Sortierung musst Du Deine eigene Sortierroutine schreiben. Dabei kommt es dann darauf an, was sich in dem Array für Daten befinden. Für Dein Beispiel funktioniert diese Routine:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Global $array[20]
    For $i = 0 To 19
    $array[$i] = 'Beispiel ' & $i
    Next
    _ArraySort($array)
    _ArrayDisplay($array, 'Array mit _ArraySort')
    _NumArraySort($array)
    _ArrayDisplay($array, 'Array mit _NumArraySort')

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

    Func _NumArraySort(ByRef $array)
    Local $tmp
    For $i = 0 To UBound($array) - 2
    For $j = $i + 1 To UBound($array) - 1
    If Number(StringRegExpReplace($array[$j], '\D*(\d*)\D*', '$1')) < Number(StringRegExpReplace($array[$i], '\D*(\d*)\D*', '$1')) Then
    $tmp = $array[$i]
    $array[$i] = $array[$j]
    $array[$j] = $tmp
    EndIf
    Next
    Next
    EndFunc

    [/autoit]


    Das ist jetzt nur ein SimpleSort-Verfahren, eignet sich also nicht so sehr für große Arrays (langsam).

  • Touch-me

    • Oscar
    • 29. Juli 2009 um 20:25

    Version 1.0 ( 29.07.09 )

    "Touch-me" ist ein Spiel, bei dem man sich eine Folge von Farbkombinationen merken muss. Der Computer spielt einem die richtige Reihenfolge vor und man muss diese korrekt wiederholen.
    Das Spiel ist wohl besser unter dem Namen "Senso" oder "Simon" bekannt. Ich wollte diese Namen aber nicht verwenden, um möglichen Ärger aus dem Weg zu gehen.
    Hier ist jedenfalls meine AutoIt-Version von dem Spiel (Script, Grafiken und Exedatei befinden sich im ZIP-Archiv).
    Kritik, Verbesserungsvorschläge und Fehlermeldungen sind immer willkommen. :)

    Screenshot:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Edit: Mein Rekord liegt bisher bei 22 Punkten.

  • GUICtrl neu einlesen

    • Oscar
    • 29. Juli 2009 um 13:30

    Du musst die Berechnung mit den neuen Werten auch durchführen.
    Außerdem brauchst Du in dem Fall gar kein GuiRegisterMsg:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <Date.au3>
    $mCount = 12
    Opt('MustDeclareVars', 1)
    Dim $Form1, $Date1, $Radio1, $Radio2, $Radio3, $nMsg, $mCount
    $Form1 = GUICreate("test", 633, 454)

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

    $Radio1 = GUICtrlCreateRadio("12", 40, 190, 113, 17)
    $Radio2 = GUICtrlCreateRadio("6", 40, 230, 113, 17)
    $Radio3 = GUICtrlCreateRadio("3", 40, 280, 113, 17)

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

    $Date1 = GUICtrlCreateDate(_DateSum($mCount), 40, 144, 217, 25)
    GUICtrlSetState($Radio1, $BST_CHECKED)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    $mCount = 12
    GUICtrlSetData($Date1, _DateSum($mCount))
    Case $Radio2
    $mCount = 6
    GUICtrlSetData($Date1, _DateSum($mCount))
    Case $Radio3
    $mCount = 3
    GUICtrlSetData($Date1, _DateSum($mCount))
    EndSwitch
    WEnd

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

    Func _DateSum($cMonth)
    Local $iDays, $sNewDate, $aDate
    $sNewDate = _DateAdd('M', $cMonth, _NowCalcDate()) ;** Monatsdifferenz
    $aDate = StringSplit($sNewDate, "/")
    $iDays = _DateDaysInMonth($aDate[1], $aDate[2]) ;** Anzahl der Monatstage
    Return $aDate[1] & "/" & $aDate[2] & "/" & $iDays
    EndFunc ;==>_DateSum

    [/autoit]
  • Laufwerk versteken und mit Kennwort schützen, aber wie?

    • Oscar
    • 29. Juli 2009 um 08:39

    TrueCrypt kann doch das, was Du willst. Du erstellst einen "Datei-Container" und erst beim mounten (inkl. Passworteingabe) erscheint der Laufwerksbuchstabe.

  • Start-Liste

    • Oscar
    • 27. Juli 2009 um 15:19

    Alina: Zum Problem mit dem VLC-Player und ShellExecute: Ist bekannt, aber ich kenne keine Abhilfe, außer einen anderen Player verwenden. Mit z.B. WinAmp oder auch dem WMP funktioniert es. Und: "Logik" schreibt sich hinten mit "k". ;)

    @tuttifrutti: Ich übergebe beim ShellExecute jetzt auch das WorkingDir. Sollte dann funktionieren. Neue Version siehe Post #1.

  • Zeit gesteuert eine Funktion aufrufen

    • Oscar
    • 27. Juli 2009 um 10:06
    Zitat von subzero007

    Und Hilfreiche Tipps Für mich ?

    Jetzt schon: http://www.autoit.de/index.php?page=Thread&postID=105421#post105421 ;)

  • Start-Liste

    • Oscar
    • 27. Juli 2009 um 09:59

    Version: 1.1 ( 27.07.09 )
    Hier mal ein Script zum zeitgesteuerten aufrufen von Dateien.
    Man kann eine Datei und dazu eine Zeit (Datum/Uhrzeit) auswählen und einer Liste hinzufügen. Zur angegeben Zeit wird die Datei dann mit ShellExecute aufgerufen. Somit kann man also nicht nur Exedateien, sondern auch z.B. MP3s oder Bilder in die Liste aufnehmen, solange diese mit einem ausführbaren Programm verknüpft sind.
    - Neue Einträge werden automatisch einsortiert (anhand der Startzeit).
    - Alle Einträge werden abgespeichert (bleiben also auch bei einem Programmneustart erhalten)
    - Man kann bestehende Einträge vorzeitig entfernen (Kontextmenü)
    - Beim starten wird jetzt auch das WorkingDir übergeben

    Screenshot:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    P.S.: Das Script habe ich kommentiert. Sollte also auch für Anfänger ganz brauchbar sein.

  • Inhalt tXt Prüfen und in Listview darstellen

    • Oscar
    • 25. Juli 2009 um 21:07

    Zum einlesen der Dateien kannst Du _FileListToArray verwenden:

    [autoit]


    #include <Array.au3>
    #include <File.au3>
    $array = _FileListToArray('\\server\share\', '*.log', 1)
    _ArrayDisplay($array)

    [/autoit]
  • AutoIt-Aufgaben

    • Oscar
    • 25. Juli 2009 um 21:01

    [Thread verschoben]

  • GUICtrlCreateInput Frage

    • Oscar
    • 25. Juli 2009 um 20:25

    Mit GuiRegisterMsg kann man sowas realisieren:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    GUICreate('test', 400, 300)
    $hInput = GUICtrlCreateInput('', 10, 10, 280, 20)
    GUICtrlSetLimit(-1, 20)
    $hCount = GUICtrlCreateLabel('20', 300, 12, 60, 20)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $hInput Then GUICtrlSetData($hCount, 20 - StringLen(GUICtrlRead($hInput)))
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]

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™