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

  • Doppelte Zahlen

    • Oscar
    • 21. Oktober 2010 um 15:33
    Zitat von SEuBo


    Hier übrigens nochmal die Funktion als String Variante, die deutlich schneller ist als die Array oder Objekt-Versionen ;)


    Die String-Variante könnte man auch so schreiben:

    Spoiler anzeigen
    [autoit]


    Func FindDoubleNumbers_Str($String)
    Local $sRet, $aA = StringRegExp($String, "(\d+)", 3)
    If @error Or (Not IsArray($aA)) Then Return SetError(1, 0, 0)
    For $i In $aA
    $String = StringReplace($String, $i, '', 0, 2)
    If @extended > 1 Then $sRet &= $i & "|"
    Next
    Return StringSplit(StringTrimRight($sRet, 1), '|', 2)
    EndFunc ;==>FindDoubleNumbers_Str

    [/autoit]
  • [Auswertung läuft...] µitLight September/Oktober

    • Oscar
    • 21. Oktober 2010 um 13:56

    Dann nehme ich auch noch teil. Mir ist gerade noch was eingefallen. :rolleyes:
    Habe auch schon abgegeben.

  • Mauszeiger verstecken / Maus Geschwindigkeit erhöhen

    • Oscar
    • 21. Oktober 2010 um 09:59

    zu 1.) GUISetCursor bzw. _WinAPI_SetCursor

    zu 2.) siehe Hilfe (MouseMove = "A speed of 0 will move the mouse instantly.")

  • Moderation für neue Mitglieder (Shoutbox)

    • Oscar
    • 20. Oktober 2010 um 19:38

    Auf keinen Fall! Wenn in der SB die Bots ausdiskutiert werden, dann bitte eine Meldung machen mit Datum/Uhrzeit.
    Wir schauen dann im Archiv nach und der entsprechende User bekommt eine Verwarnung.

  • Treeview FileExplorer

    • Oscar
    • 19. Oktober 2010 um 15:55

    Nuts, passiert der Fehler bei Dir auch?
    Ok, bei der Tastaturbedienung kann ich das nachvollziehen, aber das ist ja was anderes.

  • progressbar xp style

    • Oscar
    • 18. Oktober 2010 um 13:13

    Ein DLL-Call schaltet aber auch auf den klassischen Stil um.
    Ich hatte dazu mal ein Beispiel erstellt:

    Spoiler anzeigen
    [autoit]


    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>

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

    Global $hGui = GUICreate('Klassische Progressbar', 420, 280, -1, -1)

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

    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0) ; auf den klassischen Style umschalten
    Global $hProgress1 = GUICtrlCreateProgress(15, 20, 384, 20, $PBS_SMOOTH) ; obere Progressbar erstellen
    GUICtrlSetColor(-1, 0x22FF22)
    GUICtrlSetBkColor(-1, 0xEEEEEE)
    GUICtrlCreateLabel('|', 18, 40, 20, 16) ; Anzeige von 0%
    GUICtrlCreateLabel('0%', 11, 56, 25, 16, $SS_CENTER)
    GUICtrlCreateLabel('|', 396, 40, 20, 16) ; Anzeige von 100%
    GUICtrlCreateLabel('100%', 389, 56, 25, 16, $SS_CENTER)

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

    Global $hLabel1 = GUICtrlCreateLabel('0%', 190, 23, 30, 14, $SS_CENTER) ; Prozentanzeige innerhalb der Progressbar
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; Transparenter Hintergrund für das Label

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

    Global $hProgress2 = GUICtrlCreateProgress(15, 160, 384, 20, $PBS_SMOOTH) ; untere Progressbar erstellen
    GUICtrlSetColor(-1, 0xC83131)
    GUICtrlSetBkColor(-1, 0xEEEEEE)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7) ; zurück zum Standard-Windowsstyle

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

    For $i = 0 To 100 Step 10 ; die Anzeige für die Prozentwerte der unteren Progressbar erstellen
    GUICtrlCreateLabel('|', 16 + $i * 3.8, 180, 20, 16)
    GUICtrlCreateLabel($i & '%', 9 + $i * 3.8, 196, 25, 16, $SS_CENTER)
    Next

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

    Global $hSlider = GUICtrlCreateSlider(5, 130, 404, 28, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS))
    GUICtrlSetData(-1, 33) ; Sliderwert auf 33% setzen (als Beispiel)

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

    Global $hClose = GUICtrlCreateButton('Close', 180, 240, 60, 24)
    GUISetState(@SW_SHOW)

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

    Global $iAddend = 1 ; globale Variable (dient als Summand für _SetProgress)
    AdlibRegister('_SetProgress', 50)

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $hClose
    AdlibUnRegister()
    Exit
    EndSwitch
    WEnd

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

    Func _SetProgress()
    Local $iPercent = GUICtrlRead($hProgress1) ; Prozentwert der oberen Progressbar auslesen
    If $iPercent = 100 Or $iPercent = 0 Then $iAddend = -$iAddend ; wenn 100 oder Null, dann den Summand negieren
    GUICtrlSetData($hProgress1, $iPercent + $iAddend) ; neuen Wert der oberen Progressbar schreiben
    GUICtrlSetData($hLabel1, $iPercent + $iAddend & '%') ; neuen Wert für das Label schreiben
    GUICtrlSetData($hProgress2, GUICtrlRead($hSlider)) ; und den Wert vom Slider in die untere Progressbar schreiben
    EndFunc ;==>_SetProgress

    [/autoit]
  • Treeview FileExplorer

    • Oscar
    • 18. Oktober 2010 um 06:55

    Ich habe das gerade mal auf meinem Notebook (WinXP 32 Bit) getestet und auch dort: keinerlei Probleme, alle Verzeichnisse werden eingelesen. :)

    Hast Du es schonmal mit einem Rechner-Neustart versucht?

  • bitte um Hilfe bei Script Umstellung

    • Oscar
    • 18. Oktober 2010 um 05:25

    [verschoben]

  • Treeview FileExplorer

    • Oscar
    • 18. Oktober 2010 um 05:23

    Ja, ich habe ebenfalls Win7, 64 Bit und (wie gesagt) bei mir tritt der Fehler nicht auf. Ich habe mittlerweile schon dutzende Ordner geöffnet, geschlossen und wieder geöffnet.
    Die Ordner, bei denen Windows per UAC den Lesezugriff verhindert, werden natürlich als Leer dargestellt. Das ist ja normal. Ich hoffe, die meinst Du jetzt nicht?!

  • Mathe-Trainer (Grundrechenarten)

    • Oscar
    • 17. Oktober 2010 um 21:59

    So, meine Nichte hat getestet. Die Aufgaben dürfen etwas schwerer sein und sie hätte gern eine Zeitanzeige.
    Neue Version in Post#1.

  • Treeview FileExplorer

    • Oscar
    • 17. Oktober 2010 um 21:10

    Hmm...ich habe jetzt alle meine Platten durchgetestet und sogar noch meinen USB-Stick gecheckt, aber bei mir tritt der Fehler nicht auf. :huh:

    Ich weiss nicht, wo ich da noch suchen soll...

  • Treeview FileExplorer

    • Oscar
    • 17. Oktober 2010 um 20:28

    Welche Verzeichnisse sind das?
    Du weisst aber schon, dass es unter Win7 64 Bit einige "Verzeichnisse" gibt, die in Wirklichkeit nur Links ("C:\Programme", "Documents and Settings", "C:\Dokumente und Einstellungen", etc.) sind?

  • Treeview FileExplorer

    • Oscar
    • 17. Oktober 2010 um 20:13

    Hmm...bei mir passiert das mit dem "nicht einlesen" gar nicht mehr. Gibt's noch andere die Probleme damit haben?

    Kannst Du mal mehr Infos (CPU-Geschwindigkeit, Windowsversion) über Deinen Rechner posten?

  • Treeview FileExplorer

    • Oscar
    • 17. Oktober 2010 um 20:07

    Das ist lediglich eine Präprozessor-Anweisung, dass diese Variablen nicht benutzt werden. Es kommt dann nicht zu einer Warnung, wenn man "MustDeclareVars" benutzt.

  • Treeview FileExplorer

    • Oscar
    • 17. Oktober 2010 um 19:57

    Nein, ich habe das de-registrieren von WM_NOTIFY innerhalb der WM_NOTIFY-Funktion entfernt. Aus irgendeinem Grund gab es bei einer älteren AutoIt-Version sonst Probleme mit dem Skript (ich erinnere mich aber nicht mehr warum).
    In der jetzigen Version von AutoIt funktionierte aber dann die Erkennung des Plus-Button nicht mehr. Ohne das de-registrieren klappt es nun. :)

  • Treeview FileExplorer

    • Oscar
    • 17. Oktober 2010 um 19:32

    Nein, das ist völlig ok, wenn man einen Bug meldet (auch wenn das Skript so alt ist) und Mr_gitarre hat auch recht, dass der Klick auf den Plusbutton nicht richtig erkannt wurde.
    Ich habe das Skript angepasst und jetzt sollte die Erkennung besser funktionieren. Neue Version in Post#1.

  • Icons imGUI mit Mausklick UND HotKey bedienen

    • Oscar
    • 17. Oktober 2010 um 12:46

    Noch nicht Optimum. ;)
    Es geht noch etwas kürzer:

    Spoiler anzeigen
    [autoit]


    Opt('GUIOnEventMode', 1)
    Dim $aIcon[6] = ["save.ico", "save_no.ico", "hide.ico", "hide_no.ico", "readonly.ico", "readonly_no.ico"]
    Dim $pthIco = @ScriptDir & "\ico\" ; <- lieber keinen absoluten Pfad benutzen
    Global $aBlnIco[3] = [True, True, True]

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

    $hGui = GUICreate("Test 1.0")
    GUISetOnEvent(-3, 'Close')

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

    $ok1 = GUICtrlCreateIcon($pthIco & $aIcon[1], -1, 35, 35)
    GUICtrlSetOnEvent($ok1, '_ButtonClicked')
    $ok2 = GUICtrlCreateIcon($pthIco & $aIcon[3], -1, 70, 35)
    GUICtrlSetOnEvent($ok2, '_ButtonClicked')
    $ok3 = GUICtrlCreateIcon($pthIco & $aIcon[5], -1, 105, 35)
    GUICtrlSetOnEvent($ok3, '_ButtonClicked')
    GUISetState()
    Dim $aAccKey[3][2] = [["s", $ok1],["h", $ok2],["r", $ok3]]
    GUISetAccelerators($aAccKey, $hGui) ; <- besser als Hotkeys, weil man die Funktion nicht anpassen muss

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

    While Sleep(1000)
    WEnd

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

    Func Close()
    Exit
    EndFunc ;==>Close

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

    Func _ButtonClicked()
    Local $iIndex = @GUI_CtrlId - $ok1
    $aBlnIco[$iIndex] = Not $aBlnIco[$iIndex]
    GUICtrlSetImage(@GUI_CtrlId, $pthIco & $aIcon[$iIndex * 2 + $aBlnIco[$iIndex]])
    EndFunc

    [/autoit]
  • Icons imGUI mit Mausklick UND HotKey bedienen

    • Oscar
    • 17. Oktober 2010 um 11:41

    Ein anderer Ansatz (GUISetAccelerators statt Hotkey):

    Spoiler anzeigen
    [autoit]


    Opt('GUIOnEventMode', 1)
    Dim $aIcon[6] = ["save.ico", "save_no.ico", "hide.ico", "hide_no.ico", "readonly.ico", "readonly_no.ico"]
    Dim $pthIco = @ScriptDir & "\ico\" ; <- lieber keinen absoluten Pfad benutzen
    Global $aBlnIco[3] = [False, False, False]

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

    $hGui = GUICreate("Test 1.0")
    GUISetOnEvent(-3, 'Close')

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

    $ok1 = GUICtrlCreateIcon($pthIco & $aIcon[1], -1, 35, 35)
    GUICtrlSetOnEvent($ok1, '_ButtonClicked')
    $ok2 = GUICtrlCreateIcon($pthIco & $aIcon[3], -1, 70, 35)
    GUICtrlSetOnEvent($ok2, '_ButtonClicked')
    $ok3 = GUICtrlCreateIcon($pthIco & $aIcon[5], -1, 105, 35)
    GUICtrlSetOnEvent($ok3, '_ButtonClicked')
    GUISetState()
    Dim $aAccKey[3][2] = [["s", $ok1],["h", $ok2],["r", $ok3]]
    GUISetAccelerators($aAccKey, $hGui) ; <- besser als Hotkeys, weil man die Funktion nicht anpassen muss

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

    While 1 * Sleep(1000)
    WEnd

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

    Func Close()
    Exit
    EndFunc ;==>Close

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

    Func _ButtonClicked()
    Switch @GUI_CtrlId ; <- CtrlId liefert gleich die ID
    Case $ok1
    OK($ok1, 0, 0)
    Case $ok2
    OK($ok2, 1, 2)
    Case $ok3
    OK($ok3, 2, 4)
    EndSwitch
    EndFunc ;==>_ButtonClicked

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

    Func OK($hIcon, $blnID, $intIconOn, $intIconOff = "")
    If $intIconOff = "" Then $intIconOff = $intIconOn + 1
    If $aBlnIco[$blnID] Then
    GUICtrlSetImage($hIcon, $pthIco & $aIcon[$intIconOff])
    $aBlnIco[$blnID] = False
    Else
    GUICtrlSetImage($hIcon, $pthIco & $aIcon[$intIconOn])
    $aBlnIco[$blnID] = True
    EndIf
    EndFunc ;==>OK

    [/autoit]

    Edit: Die Funktion "_ButtonClicked" kann man auch noch kürzen:

    [autoit]


    Func _ButtonClicked()
    OK(@GUI_CtrlId, @GUI_CtrlId - $ok1, (@GUI_CtrlId - $ok1) * 2)
    ;~ Switch @GUI_CtrlId ; <- CtrlId liefert gleich die ID
    ;~ Case $ok1
    ;~ OK($ok1, 0, 0)
    ;~ Case $ok2
    ;~ OK($ok2, 1, 2)
    ;~ Case $ok3
    ;~ OK($ok3, 2, 4)
    ;~ EndSwitch
    EndFunc ;==>_ButtonClicked

    [/autoit]
  • cmd Befehl ausführen

    • Oscar
    • 17. Oktober 2010 um 09:45

    Warum holst Du die Informationen nicht aus der Registry?

    Habe mal schnell eine Funktion geschrieben:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $aMouse = _RegGetHIDs('mouse') ; <- mouse or keyboard
    _ArrayDisplay($aMouse)

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

    Func _RegGetHIDs($sClass)
    Local $iInstance1 = 0, $iInstance2 = 0, $sRegPath1, $sRegPath2, $sRegKey, $sRegClass, $sTmp, $aTmp, $aTmpKey
    $sRegPath1 = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID'
    While True
    $iInstance1 += 1
    $sRegPath2 = RegEnumKey($sRegPath1, $iInstance1)
    If @error Then ExitLoop
    $iInstance2 = 0
    While True
    $iInstance2 += 1
    $sRegKey = RegEnumKey($sRegPath1 & '\' & $sRegPath2, $iInstance2)
    If @error Then ExitLoop
    $sRegClass = RegRead($sRegPath1 & '\' & $sRegPath2 & '\' & $sRegKey, 'Class')
    If $sRegClass = $sClass Then $sTmp &= RegRead($sRegPath1 & '\' & $sRegPath2 & '\' & $sRegKey, 'HardwareID') & @CR
    WEnd
    WEnd
    If $sTmp = '' Then Return SetError(1, 0, 0)
    $aTmp = StringSplit($sTmp, @CR)
    Local $aOut[$aTmp[0] - 1][2]
    For $i = 1 To $aTmp[0] - 1
    $aTmpKey = StringSplit($aTmp[$i], @LF)
    If $aTmpKey[0] > UBound($aOut, 2) Then ReDim $aOut[$aTmp[0] - 1][$aTmpKey[0]]
    For $j = 1 To $aTmpKey[0]
    $aOut[$i - 1][$j - 1] = $aTmpKey[$j]
    Next
    Next
    Return $aOut
    EndFunc

    [/autoit]
  • Was ist schneller ? Hex-Codes generieren oder auslesen und im Programm speichern

    • Oscar
    • 16. Oktober 2010 um 14:22

    Cheaten kommt gleich nach boten. :thumbdown:
    Spiel doch zur Abwechslung einfach mal ehrlich. :huh:

    Jedenfalls supporten wir sowas nicht.
    [Thread closed]

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™