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

  • FileInfo

    • Oscar
    • 2. Juni 2009 um 13:52

    Hallo MehmeX!

    Ist nicht böse gemeint, aber das geht auch kürzer:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $array = _FileGetInfo('C:\Programme\AutoIt3\AutoIt3.exe', 0, 1)
    _ArrayDisplay($array)

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

    Func _FileGetInfo($sPath, $iSizeFormat = 0, $iTimeFormat = 0)
    If Not FileExists($sPath) Then Return SetError(1, 0, 0)
    If $iSizeFormat < 0 Or $iSizeFormat > 3 Then $iSizeFormat = 0
    If $iTimeFormat < 0 Or $iTimeFormat > 2 Then $iTimeFormat = 0
    Local $aSize[4] = [' Byte(s)', ' KByte(s)', ' MByte(s)', ' GByte(s)']
    Local $aOut[5] = [ _
    StringRegExpReplace($sPath, '.*\\(.*)\.*.*', '$1'), _ ; Dateiname
    StringRegExpReplace($sPath, '(.+\\).*\.*.*', '$1'), _ ; Dateipfad
    Round(FileGetSize($sPath) / 1024 ^ $iSizeFormat, 2) & $aSize[$iSizeFormat], _ ; Dateigröße
    FileGetVersion($sPath), _ ; Dateiversion
    StringRegExpReplace(FileGetTime($sPath, $iTimeFormat, 1), '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$3.$2.$1 $4:$5:$6')] ; Dateidatum
    Return $aOut
    EndFunc

    [/autoit]

    Ich will Dir nur mal zeigen, dass man manches vereinfachen kann. :)

  • Verschlüsselung von Strings

    • Oscar
    • 2. Juni 2009 um 13:18

    Schau Dir das Script doch erstmal an. ;)
    Dort gibt es nicht nur das normale _StringEncrypt, sondern zusätzlich noch eine Blowfish-Verschlüsselung.

  • Verschlüsselung von Strings

    • Oscar
    • 2. Juni 2009 um 13:07

    Schau doch mal bei den Scripten:
    LockIT (Verschlüsselt Geheime Texte)

  • MAC Adressen im Array mit if Schlaufe

    • Oscar
    • 2. Juni 2009 um 13:00

    So ist es kürzer und ohne zusätzliche Temp-Datei:

    [autoit]


    MsgBox(0,0,_CheckMAC())

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

    Func _CheckMAC()
    Local $objWMIService, $colItems, $Output, $aMACs
    $objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE Netconnectionstatus = 2', 'WQL', 0x30)
    If Not IsObj($colItems) Then Return SetError(1, 0, 0)
    For $objItem In $colItems
    $Output &= $objItem.MACAddress & '|'
    Next
    $aMACs = IniReadSection('C:\laptop.ini', 'mac')
    If @error Then Return SetError(2, 0, 0)
    For $i = 1 To $aMACs[0][0]
    If StringInStr($Output, StringReplace($aMACs[$i][1], '-', ':')) Then Return True
    Next
    Return False
    EndFunc

    [/autoit]
  • Fehler im Skript [aber wo?]

    • Oscar
    • 2. Juni 2009 um 12:39

    Das Feld wird nicht als Zahl ausgelesen, sondern als String.
    Will man den Zahlwert vergleichen, dann sollte man Number davor setzen:

    [autoit]


    Func test()
    $min = Number(GUICtrlRead($input0))
    $max = Number(GUICtrlRead($input1))
    If $min < 38 Or $min > 11199 Or $min = $max Then $min = 70
    If $max > 11200 Or $max < 39 Or $min = $max Then $max = 11200
    If $min > $max Then
    $x = $max
    $max = $min
    $min = $x
    EndIf
    GUICtrlSetData($input0, $min)
    GUICtrlSetData($input1, $max)
    ;ConsoleWrite("Min: " & $min & " Max: " & $max & @CRLF)
    $min_d = Number(GUICtrlRead($input2))
    $max_d = Number(GUICtrlRead($input3))
    If $min_d > 59999 Or $min_d < 10 Or $min_d = $max_d Then $min_d = 50
    If $max_d > 60000 Or $max_d < 11 Or $min_d = $max_d Then $max_d = 60
    If $min_d > $max_d Then
    $x = $max_d
    $max_d = $min_d
    $min_d = $x
    EndIf
    GUICtrlSetData($input2, $min_d)
    GUICtrlSetData($input3, $max_d)
    ;ConsoleWrite("Min: " & $min_d & " Max: " & $max_d & @CRLF)
    EndFunc

    [/autoit]
  • Kontextmenüeintrag für Fenster auf der Taskleiste hinzufügen

    • Oscar
    • 2. Juni 2009 um 12:26

    Es muss wohl irgendwie gehen (die Windows-Hilfedateien haben ja auch mehr Einträge), aber ich habe bisher noch keine AutoIt-Umsetzung dazu entdecken können.

  • A3LGDIPlus.au3 oder GTASPIDER HILF!!! xD

    • Oscar
    • 2. Juni 2009 um 12:23

    Die Funktion allein reicht nicht. Du müsstest schonmal das gesamte Script posten.
    Oder mir mal als PN schicken, dann kann ich mal schauen, was man da machen kann.

  • Buchstaben in ASCII umwandeln

    • Oscar
    • 2. Juni 2009 um 04:14

    StringToASCIIArray und StringFromASCIIArray gibt es da auch noch. ;)

  • Key down & Key up

    • Oscar
    • 1. Juni 2009 um 18:44

    Ok, das schließen übernehme ich dann mal. Der Rest ist ja bereits gesagt.

  • denkt ihr der Script passt so?

    • Oscar
    • 1. Juni 2009 um 09:46

    Wir unterstützen hier keine Bots! Bitte Forenregeln lesen!
    [Thread closed]

  • _RecursiveFileListToArray (mit StringRegExp)

    • Oscar
    • 1. Juni 2009 um 00:02

    Meine Funktion ist schneller. :P

    Edit: Die großen Unterschiede liegen am Festplatten-Cache. Wenn das Script einmal durchgelaufen ist, dann werden die Daten beim nächsten Durchlauf aus dem Cache geholt.
    Man muss also mehrere Durchläufe machen, bevor man die Werte vergleichen kann.

  • _RecursiveFileListToArray (mit StringRegExp)

    • Oscar
    • 31. Mai 2009 um 23:47

    Wie ich bereits geschrieben habe, war meine Inspiration eine Funktion (Link siehe oben) von bernd670.
    Neu ist hingegen die StringRegExp-Abfrage. Damit kann man nämlich mehr machen als mit den normalen DOS-Pattern.

  • _RecursiveFileListToArray (mit StringRegExp)

    • Oscar
    • 31. Mai 2009 um 23:18

    Inspiration war diese Funktion von bernd670.
    Ich dachte mir, dass es ganz nützlich wäre, wenn man das Suchpattern etwas variabler gestalten könnte, deshalb habe ich diese Funktion hier geschrieben, in der man ein RegExp-Pattern angeben kann.
    Das funktioniert sowohl bei der Suche nach Dateien als auch bei Verzeichnissen. Schaut euch am besten mal die Beispiele an.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3> ; nur für die Beispiele erforderlich
    If @AutoItVersion < '3.3.0.0' Then Exit MsgBox(16, 'Fehler', 'Funktioniert erst ab AutoIt-Version 3.3.0.0')

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

    ; Beispiele
    $timer = TimerInit()
    $aReturn = _RecursiveFileListToArray('C:', '', 2) ; Alle Verzeichnisse auf C:
    ConsoleWrite(@error & @CRLF)
    ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
    _ArrayDisplay($aReturn, 'Alle Verzeichnisse auf C:')

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

    $timer = TimerInit()
    $aReturn = _RecursiveFileListToArray('C:', '\.exe\z', 1) ; Alle Dateien mit der Erweiterung ".exe" (auf C:)
    ConsoleWrite(@error & @CRLF)
    ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
    _ArrayDisplay($aReturn, 'Alle Dateien mit der Erweiterung ".exe"')

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

    $timer = TimerInit()
    $aReturn = _RecursiveFileListToArray('C:', '\.au3\z', 1) ; Alle Dateien mit der Erweiterung ".au3" (auf C:)
    ConsoleWrite(@error & @CRLF)
    ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
    _ArrayDisplay($aReturn, 'Alle Dateien mit der Erweiterung ".au3"')

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

    $timer = TimerInit()
    $aReturn = _RecursiveFileListToArray('C:', 'autoit.*\..+\z', 1) ; Alle Dateien in denen "autoit" im Dateinamen vorkommt (auf C:)
    ConsoleWrite(@error & @CRLF)
    ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
    _ArrayDisplay($aReturn, 'Alle Dateien in denen "autoit" im Dateinamen vorkommt')

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

    ;===============================================================================
    ; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    ; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
    ; einem RegExp-Pattern entsprechen
    ; Parameter(s): $sPath = Startverzeichnis
    ; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
    ; $iFlag = Auswahl
    ; 0 = Dateien & Verzeichnisse
    ; 1 = nur Dateien
    ; 2 = nur Verzeichnisse
    ; $iFormat = Rückgabeformat
    ; 0 = String
    ; 1 = Array mit [0] = Anzahl
    ; 2 = Nullbasiertes Array
    ; $sDelim = Trennzeichen für die String-Rückgabe
    ; Requirement(s): AutoIt 3.3.0.0
    ; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
    ; Author(s): Oscar (http://www.autoit.de)
    ; Anregungen von: bernd670 (http://www.autoit.de)
    ;===============================================================================
    Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc

    [/autoit]

    Edit: Es gab noch einen kleinen Fehler beim einlesen von allen Dateien und Verzeichnissen. Dabei wurden die Verzeichnisse nochmal als Datei eingelesen. Behoben! (1 Zeile eingefügt: ContinueLoop)

  • A3LGDIPlus.au3 oder GTASPIDER HILF!!! xD

    • Oscar
    • 31. Mai 2009 um 22:28

    Bernd hat doch gezeigt, dass es mit den _Timer_SetTimer-Funktionen sehr wohl möglich ist, eine Funktion weiterlaufen zu lassen, obwohl das Traymenü geöffnet ist.
    Vielleicht postest Du mal Dein Script, dann können wir mal gucken, woran es liegt.

  • A3LGDIPlus.au3 oder GTASPIDER HILF!!! xD

    • Oscar
    • 31. Mai 2009 um 22:21

    Oh, das habe ich bisher nicht gewusst. Wieder was dazugelernt. :thumbup:

    Danke, bernd! :)

  • A3LGDIPlus.au3 oder GTASPIDER HILF!!! xD

    • Oscar
    • 31. Mai 2009 um 21:06

    Ich habe mich geirrt!
    Das Script wird tatsächlich angehalten. Hab mir gerade mal ein Testscript erstellt:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Opt("TrayAutoPause",0)
    Opt("TrayOnEventMode",1)
    Opt("GUIOnEventMode",1)
    Opt("TrayMenuMode",1)

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

    $settingsitem = TrayCreateMenu("Settings")
    $displayitem = TrayCreateItem("Display", $settingsitem)
    $printeritem = TrayCreateItem("Printer", $settingsitem)
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1, '_End')

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

    TraySetState()
    $hGui = GUICreate('test', 400, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hLabel = GUICtrlCreateLabel('0', 10, 10, 100, 20)
    GUISetState()
    $count = 0
    AdlibEnable('_Count', 1000)
    While 1
    Sleep(10)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Count()
    $count += 1
    GUICtrlSetData($hLabel, $count)
    EndFunc

    [/autoit]

    Ich hatte das vorher nur mit meinem Starplayer ausprobiert und dort spielte die Musik weiter, deshalb dachte ich, dass das Script nicht pausiert wird, aber scheinbar betrifft das nur den Sound. ?(

  • A3LGDIPlus.au3 oder GTASPIDER HILF!!! xD

    • Oscar
    • 31. Mai 2009 um 20:15

    Das Script läuft schon weiter, nur die GUI wird währenddessen nicht refresht. Das kann man aber nicht ändern, soweit ich weiß.
    Achso, und das liegt nicht am OnEventMode. Ist im MessageLoop-Mode genauso.

  • Ping als signalbalken

    • Oscar
    • 31. Mai 2009 um 16:59

    Achso! Dann würde ich auch lieber den absoluten Wert in ms eintragen.
    Ich dachte, Du willst den Benutzer über die momentane "Verbindungsqualität" unterrichten. Dann hätte man vielleicht noch mit dynamischen Werten arbeiten können. Also den Wert für 0 und 100% erstmal fest vorgeben und dann (nach dem Ping-Befehl) vergleichen, ob die Zeit schlechter ist, als die bisherige schlechteste Zeit und diese dann als schlechtesten Wert nehmen. Das Gleiche dann für die beste Zeit.

  • Ping als signalbalken

    • Oscar
    • 31. Mai 2009 um 16:32

    Natürlich kann man irgendwelche Werte für 0 und 100% festlegen und dann quasi eine Balkenanzeige machen. Die Frage ist, was willst Du damit aussagen?
    Beschreib mal genauer, wofür das sein soll.

  • Ping als signalbalken

    • Oscar
    • 31. Mai 2009 um 05:49

    Eine absolute, allgemeingültige Bewertung läßt sich mit dem Ping-Befehl gar nicht durchführen.
    Zu viele Kriterien spielen da eine Rolle:
    - die "Entfernung" von Deinem Computer zum Ziel-Server (über wie viele Stationen das Ping-Paket geroutet wird)
    - die Auslastung, Geschwindigkeit und Antwort-Priorität der beteiligten Server (bei höherer Auslastung werden die Ping-Befehle später bearbeitet, weil geringere Priorität)
    - die Geschwindigkeit der "letzten Meile" (von Dir zu Deinem INet-Provider)

    All das verhindert, dass man das Ergebnis von User A (Standpunkt A) mit dem Ergebnis von User B (Standpunkt B) vergleichen kann. Die Ergebnisse können je nach Standort und oft je nach Tageszeit völlig unterschiedlich ausfallen.
    Eine Werte-Skala, wie Du Dir das wünschst, ist mit dem Ping-Befehl nicht machbar. Ist IMHO auch mit anderen Mitteln nicht machbar, aufgrund der Struktur des Internets.
    Somit reduziert sich eine "Bewertung" auf einen binären Wert: "True" oder "False". ;)

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™