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

  • Array verwenden ohne zu wissen, wieviele Indexnummern benötigt werden?

    • Oscar
    • 6. März 2011 um 10:50

    Generell ist das Vorgehen ok, wenn aber sehr viele neue Elemente erstellt werden, ist dieses Verfahren (ReDim) relativ langsam.
    Es bietet sich dann an, erstmal alles in einen String zu packen und diesen am Ende der Schleife mit StringSplit zu splitten.
    Das hängt aber vom Verwendungszweck ab. Willst Du ein konkretes Problem lösen oder war die Frage allgemein gestellt?

  • String Vergleich anhand von Ähnlichkeiten

    • Oscar
    • 6. März 2011 um 06:00

    Man könnte Dateinamen und Such-Array "auf den gleichen Nenner" bringen und dann per StringInStr suchen lassen:

    Spoiler anzeigen
    [autoit]


    Global $aNames[5] = ['Peter Soundso', 'Gabi von Gestern', 'Michael Mustermann', 'Michael Mittermeier', 'Muster Gestern']

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

    Global $aFilenames[6] = ['mek249ß0320ß-d3.3s22Gabi-von.gestern.i92390dmdmer.doc', 'blaGabi.doc', '4711Gestern.txt', 'michaelmustermann92ß392ß3ß2sallsa.txt', '333wasarmichael-mittermeier.rtf', '0815Peter.exe']

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

    For $i = 0 To UBound($aFilenames) - 1
    For $j = 0 To UBound($aNames) - 1
    If StringInStr(StringRegExpReplace($aFilenames[$i], '[\.,\+-\s]', ''), StringRegExpReplace($aNames[$j], '[\.,\+-\s]', '')) Then
    ConsoleWrite('Treffer: ' & $aFilenames[$i] & @CR)
    ExitLoop
    EndIf
    Next
    Next

    [/autoit]


    Das passt zumindest für die genannten Beispiele. Wenn da noch andere Zeichen zwischen den Namen stehen können, müsste man das RegExp-Pattern entsprechend anpassen.

  • Programm mit AdminRechten automatisch starten

    • Oscar
    • 3. März 2011 um 16:51

    Hmm...Ich habe dort jetzt mal einen DWORD-Schlüssel "Period" erstellt (gab es nicht) und den Wert 65531 eingetragen. Danach einen Neustart durchgeführt.
    Im Einstellungsdialog habe ich dann die Uhrzeit aktualisieren lassen und dann kam das:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Kann es sein, dass das unter Windows7 (64 Bit) nicht funktioniert?

    Dateien

    Screenshot.png 17,07 kB – 0 Downloads
  • Programm mit AdminRechten automatisch starten

    • Oscar
    • 2. März 2011 um 21:32

    Die automatische Aktualisierung von Windows fragt den Zeitserver nur einmal in der Woche ab und da kann es dann schonmal zu ein paar Sekunden Abweichung kommen.
    Ich wollte gern, dass meine Uhren synchron laufen. :D

  • Programm mit AdminRechten automatisch starten

    • Oscar
    • 2. März 2011 um 21:22

    Ja, es wird wohl darauf hinauslaufen. Und alles nur, weil man zum stellen der Uhrzeit AdminRechte benötigt.
    Vielleicht sollte ich mir überlegen, das automatische stellen der Uhr Windows zu überlassen. :rolleyes:
    Ich muss erstmal drüber schlafen...

  • Programm mit AdminRechten automatisch starten

    • Oscar
    • 2. März 2011 um 21:16

    Ok, das ist schonmal nicht schlecht. Obwohl das ja wieder in einer Passwort-Abfrage/-Speicherung mündet.

    Obwohl, dann geht ja auch RunAs mit Eintrag im @StartupDir. :S

  • Musikplayer - Paar Problemchen

    • Oscar
    • 2. März 2011 um 20:58

    volle: Solange Du alles kompatible MP3s abspielst ist auch alles in Ordnung. Es gibt aber verschiedene Arten der Codierung beim MPEG-Format.

    @NoName: Ja, die Fehlermeldung kenne ich. :wacko: Deshalb benutze ich ja beim StarPlayer auch die BASS-UDF. ;)

  • Musikplayer - Paar Problemchen

    • Oscar
    • 2. März 2011 um 20:50

    Die _Sound-Funktionen haben Probleme, wenn es sich nicht um "echte" MP3s handelt. Das heißt, es muss beim erstellen wirklich MPEG1 Layer III (wird als MP3 bezeichnet) verwendet worden sein.
    Wird beispielsweise MPEG1 Layer I verwendet (diese werden oft auch mit der Endung MP3 angelegt), so werden die Zeiten nicht korrekt berechnet.

    Wenn Du das umgehen willst, benutze die BASS-UDF.

  • Programm mit AdminRechten automatisch starten

    • Oscar
    • 2. März 2011 um 20:43

    Bei RunAs müsste ich das Admin-Passwort abfragen und irgendwo speichern. Ungünstig! :huh:
    Ich möchte es dem Benutzer ja möglichst erleichtern, damit er das Programm nicht selbst in die Aufgabenplanung packen muss (ist doch relativ kompliziert).

    Und beim Taskplaner finde ich auch keine Möglichkeit, um das Programm als Admin zu starten. Hmmm...

    Verdammt, das muss doch irgendwie gehen...

  • Programm mit AdminRechten automatisch starten

    • Oscar
    • 2. März 2011 um 20:21

    Ich möchte, dass sich mein Programm in den Windows-Autostart packen kann.
    Dazu rufe ich ein Hilfsprogramm auf:

    Spoiler anzeigen
    [autoit]


    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=gfx\clock.ico
    #AutoIt3Wrapper_outfile=SetAutoStart.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    If Not @Compiled Then Exit 0
    If $CmdLine[0] <> 1 Then Exit 0
    Switch $CmdLine[1]
    Case 1
    RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'Digitaluhr', 'REG_SZ', Chr(34) & @ScriptDir & '\Digitaluhr3.exe' & Chr(34))
    Case 0
    RegDelete('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'Digitaluhr')
    EndSwitch

    [/autoit]


    Dort werden dann AdminRechte angefordert, damit der RegKey erstellt werden kann. Soweit funktioniert das Ganze auch. Allerdings benötigt mein Programm selbst AdminRechte, um die Uhrzeit (bei Bedarf) stellen zu können.
    Ich möchte aber kein #RequireAdmin ins Skript aufnehmen, weil ich dann jedes Mal beim Systemstart dieses bestätigen müsste.

    Also habe ich im Netz gesucht und bin auf die Aufgabenplanung gestossen. Dort kann man ein Programm automatisch mit AdminRechten starten lassen. Ausprobiert -> funktioniert. :)
    Aber...ich möchte das mit AutoIt automatisieren, sodass man als Benutzer nur einen Menüpunkt auswählen muss.
    Meine Frage ist nun:
    Wie kriege ich mein Programm in die Aufgabenplanung und wie kann ich das wieder entfernen?

  • eukalyptus ist 32

    • Oscar
    • 2. März 2011 um 16:06

    Von mir auch die besten Wünsche zum neuen Lebensjahr.

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

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • Oscar
    • 1. März 2011 um 18:33

    Dann so:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    $sFilename = @ScriptDir & '\test.txt'
    $sFile = FileRead($sFilename) ; Datei einlesen
    $array = StringRegExp($sFile, '(?s)\[\d+\](.+?)\[\/\d+\]', 3) ; Array erstellen
    ;~ _ArrayDisplay($array)
    $index = 0
    HotKeySet('{F8}', '_SendText')
    HotKeySet('{ESC}', '_End')

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

    While Sleep(100)
    WEnd

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

    Func _SendText()
    Send($array[$index])
    $index += 1
    If $index = UBound($array) Then $index = 0
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • Oscar
    • 1. März 2011 um 18:16
    Zitat von SmilingStar

    Wie mach ich ihm dann klar, wo ein Textblock endet ?


    Wie können wir das wissen, wenn wir die Textdatei nicht haben? ;)

    Du musst halt in die Textdatei irgendeinen "Trenner" einbauen oder, falls der bereits vorhanden ist, diesen zum splitten benutzen.

  • Textblöcke aus TXT-Datei Auslesen und an Cursorposition ausgeben

    • Oscar
    • 1. März 2011 um 18:00

    Willst Du denn den Text komplett ausgeben?
    Ich vermute mal (Kristallkugel befragt :D ) nur zeilenweise:

    Spoiler anzeigen
    [autoit]


    $sFilename = @ScriptDir & '\dateiname.txt'
    $sFile = FileRead($sFilename) ; Datei einlesen
    $array = StringSplit($sFile, @CRLF, 3) ; am Zeilenende splitten = Array erstellen
    $index = 0
    HotKeySet('{F8}', '_SendText')
    HotKeySet('{ESC}', '_End')

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

    While Sleep(100)
    WEnd

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

    Func _SendText()
    Send($array[$index])
    $index += 1
    If $index = UBound($array) Then $index = 0
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
  • Checkbox aktivieren wenn Textdatei existiert

    • Oscar
    • 1. März 2011 um 17:18

    Wohl eher so:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Global $ini
    $ini = @DesktopDir & "\Test.ini"

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

    GUICreate("GUI", 139, 60, 192, 124)
    $hCheck = GUICtrlCreateCheckbox("Checkbox1", 24, 24, 97, 17)
    GUISetState(@SW_SHOW)

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

    AdlibRegister('_Check')

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    AdlibUnRegister('_Check')
    Exit
    EndSwitch
    WEnd

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

    Func _Check()
    If FileExists($ini) Then
    GUICtrlSetState($hCheck, $GUI_ENABLE)
    Else
    GUICtrlSetState($hCheck, $GUI_DISABLE)
    EndIf
    EndFunc ;==>_Check

    [/autoit]
  • Checkbox aktivieren wenn Textdatei existiert

    • Oscar
    • 1. März 2011 um 17:11
    Zitat von volle

    Das klappt aber nicht so wie ich will.


    Wie willst Du es denn haben? ;)
    Wenn Du willst, dass Dein Skript auch erkennt, wenn erst nach dem Skriptstart die Inidatei auftaucht, dann musst Du das auch regelmäßig abfragen (AdlibRegister wäre hier das Stichwort).

  • Anfänger: Wie kann ich Text ersetzen in einer htm Datei ?

    • Oscar
    • 28. Februar 2011 um 17:38

    Du musst dabei schon Variablen benutzen. ;)

    So geht's:

    Spoiler anzeigen
    [autoit]


    $sHTMLFilename = "c:/Downloads/index.htm"
    $sFile = FileRead ($sHTMLFilename)
    $sFile = StringReplace($sFile, "NVU", "Dreamweaver")
    $hFile = FileOpen($sHTMLFilename, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, $sFile)
    FileClose($hFile)
    EndIf

    [/autoit]
  • Wiedergabelieste erstellen

    • Oscar
    • 27. Februar 2011 um 19:07

    So ein Projekt kann man ohne Arrays doch gar nicht vernünftig aufziehen. Du musst alle Dateinamen aus dem Verzeichnis einlesen (Array), dann die ID3-Tags zu jedem Titel auslesen (Array) und mit diesen Angaben eine Textdatei erstellen.
    BTW: Ich verwende bei meinem Starplayer das m3u-Playlistformat. Das ist in der einfachsten Form nur eine Auflistung der MP3-Dateinamen (ein Titel pro Zeile). Dieses Format wird von den meisten Playern unterstützt.

  • Wiedergabelieste erstellen

    • Oscar
    • 27. Februar 2011 um 08:06

    Hier (ID3Tag.au3) findest Du die UDF einzeln und mit Beispiel.

  • Chatbox-UDF

    • Oscar
    • 25. Februar 2011 um 20:55

    Schwierige Frage... :S
    Also unter IE6.x läuft es jedenfalls. :)
    Ob's auch mit noch älteren Versionen funktioniert weiß ich nicht.

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™