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. nuts

Beiträge von nuts

  • HELP GUI Funktionen zuweisen...2. button=abbrechen verliert nach 1. button=Start funktion

    • nuts
    • 28. Mai 2009 um 16:23
    [autoit]


    While 1
    Dim $pixl=PixelSearch ( 25, 260, 133, 301, 0xDD5404, 10,0)
    If not @error Then
    sleep (1000)
    MouseClick("left",30,355) ; auf das eingabefeld wo ich was geschrieben haben möchte
    Sleep (1000)
    send(GuiCtrlRead ($input1)) ; $input ist meine inputbox..
    sleep (100)
    Send ("{ENTER}") ; Abschicken
    EndIf
    WEnd

    [/autoit]


    Weil diese Schleife nicht mehr verlassen wird. 8o

  • regwirte geht nicht

    • nuts
    • 28. Mai 2009 um 16:15
    [autoit]


    RegWrite("HKEY_CLASSES_ROOT\Lnkfile", "IsShortcut", "REG_SZ")
    RegWrite("HKEY_CLASSES_ROOT\Piffile", "IsShortcut", "REG_SZ")

    [/autoit]

    Ich vermute mal es fehlt der Wert (Value)?

  • Sleeptimer - Gute Idee gesucht.

    • nuts
    • 28. Mai 2009 um 15:56

    Hey,

    deine Antwort habe ich gar nicht gesehen :(


    Wollte das Problem nochmal aufgreifen, da ich es leider immernoch nicht zufriedenstellend gelöst habe.

    Im Prinzip lässt sich die Aufgabenstellung darauf reduzieren, dass ein gestartetes Skript über einen Kommandoparameter Befehle annimmt.

    Beispiel:
    test.exe -e startet den Countdown und setzt ein flag gestartet;
    wird test.exe -e erneut gestartet soll nicht das ganze Programm neugestartet werden, sondern das laufende Programm eine Funktion aufrufen (entsprechendes flag kann man davor überprüfen).

    Beispielprogramme die einen Funktionsaufruf über Kommandoparamter erlauben: DVBViewer, Eventghost (mehr fallen mir grad nicht ein :D)

    edit\ wenn es unklar ist was ich meine - bitte melden ;)

  • .ini in ListView einlesen [Problem]

    • nuts
    • 27. Mai 2009 um 00:37

    Hey,

    würde mich jetzt schon interessieren wie du das genau gelöst hast.
    Gerade die Verbindung zwischen einem angelegten User und den Terminen?

    Ich würde wahrscheinlich eine .txt Datei für alle User anlegen und eine .txt Datei pro User für die jeweiligen Termine. Die Verknüpfung ergäbe sich das aus dem User Namen und der ID (automatisch fortlaufend wäre wohl sinnvoll).
    Ist zumindest mein Konzept für ein ähnliche Skript, aber vielleicht hast du ja was besseres auf Lager?

  • Click n' Play - List

    • nuts
    • 26. Mai 2009 um 00:35

    Oder an der Neuanlage jedes Schlüssel / Wert Paares? Naja große Reden zur Laufzeitoptimierung will ich jetzt auch nicht schwingen - sonst wirds bei meinem begrenzten Wissen vielleicht auch peinlich ;)

    Für mich brauchst du keine Variante mit .txt Datenbank erstellen.
    Dank Oscars Listviewbeispiel ist mir die Vorgehensweise klar und meine Listviewanwendungen sind alle so aufgebaut.


    P.S. Interessant wäre eine Lösung mit SQLite 8)

  • Click n' Play - List

    • nuts
    • 25. Mai 2009 um 23:59

    Hey,

    na z.B. eine .txt Datei.

    nach meiner Hochrechnung ist doch bei ca. 1000 Einträge in der .ini Schluss?
    Spielt jetzt für dein Programm nicht die Rolle - nur da du im Anfangspost erwähnt hast dein Programm auch als Art Beispiel fürs Listview-Handling (dafür ists ja auch mehr als brauchbar) zu sehen ist.

    2. Punkt: Laufzeit beim Speichern?
    Wirkt nicht so schnell auf mich, müsste man mal mit einer .txt Datei überprüfen.

  • Click n' Play - List

    • nuts
    • 25. Mai 2009 um 22:32

    Ich verstehe zwar nicht so ganz den Sinn des Skript, allerdings sind da ne Menge interessanter Dinge drin. Vielen dank dafür - ich hoffe es wird noch etwas kommentiert?

    Wenn dich meine Laienmeinung interessiert - zum Speichern der Hauptinfos (Prog. pfade) aus dem Listview finde ich eine .ini nicht so geeignet.

  • ListView Probleme

    • nuts
    • 22. Mai 2009 um 13:52

    1. _GUICtrlListView_GetSelectionMark()

    2. Du willst den ganzen Inhalt in eine Datenbankspeichern? Oder nur den inhalt des markierten Items?
    _GUICtrlListView_GetItemTextArray sollte fürs Item helfen - für eine .txt Datenbank würde ich dir empfehlen nach Oscars Listviewbeispiel zu suchen.

  • Inhalt einer listview in txt o. csv exportieren

    • nuts
    • 18. Mai 2009 um 13:25

    Listview-Datenbank-Beispiel

    Einfach und sehr gut erklärt.

  • Euro Editor 2.4

    • nuts
    • 16. Mai 2009 um 00:08

    Naja die 5 Zeilen Funktionen und Gui-Elemente wird ja wohl jetzt keiner als sein geistiges Eigentum beanspruchen.

    Lasst ihn doch bissle üben, so hat jeder mal angefangen. ;)

    P.S. drück mal strg+t in scite

  • Sleeptimer - Gute Idee gesucht.

    • nuts
    • 15. Mai 2009 um 22:26

    Hey,

    ich bastle mir gerade einen Sleeptimer für den DVB Viewer (gibts zwar schon einen - der ist aber "komisch" :rolleyes: )

    vorab mal mein Skript

    Spoiler anzeigen
    [autoit]


    Global $iCounter
    Global $dummy = 0
    If $CmdLine[0] = 0 Then Exit ;eigentlich unnötig - ich wollt lieber mit Parameter starten und naja wie gesagt ..

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

    Global $DVBViewer = ObjGet("", "DVBViewerServer.DVBViewer") ;Verbindung zum DVBViewer herstellen
    If $DVBViewer = 0 Then
    MsgBox(1, "", "Keine Verbindung zum DVBViewer möglich")
    Exit
    EndIf
    If $CmdLine[0] > 0 And $CmdLine[1] = "-state" And $iCounter <> "" Then _STOPTimer() ;daran hängts irgendwie :(

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

    Switch $dummy
    Case 0
    $test = $DVBViewer.OSD.showpopup("Sleeptimer", "30min, 60min, 90min, 120min, 180min, Zurück", True) ;OSD um abzufragen wie lange der Sleeptimer laufen soll
    Switch $test
    Case 0
    $iCounter = 30 ;30sek zum testen
    _Timer()
    Case 1
    $iCounter = 60 ;60sek usw.
    _Timer()
    Case 2
    $iCounter = 90
    _Timer()
    Case 3
    $iCounter = 120
    _Timer()
    Case 4
    $iCounter = 180
    _Timer()
    Case 5
    $DVBViewer.SendCommand(82) ;osd zurück
    Exit
    EndSwitch
    EndSwitch

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

    Func _STOPTimer()
    $test = $DVBViewer.OSD.showyesno("Sleeptimer", "Restlaufzeit:" & $iCounter, "Countdown abbrechen?", "", True) ;OSD Fenster mit der verbleibenden Zeit wird und einer Abfrage wird angezeigt
    Switch $test
    Case True
    Exit ;Countdown abbrechen
    Case False
    $dummy = 1 ;blöder Versuch von mir das Problem zu lösen bei $dummy = 1 soll er eben nicht das Auswahlfenster zeigen.
    EndSwitch
    EndFunc ;==>_STOPTimer

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

    Func _Timer() ; Die Timerfunktion
    AdlibEnable('_Countdown', 1000)
    While True
    If $iCounter <= 0 Then
    AdlibDisable()
    _Beenden()
    Exit
    EndIf
    WEnd
    EndFunc ;==>_Timer

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

    Func _Countdown()
    $iCounter -= 1
    EndFunc ;==>_Countdown

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

    Func _Beenden() ; kommt noch - tut auch nichts zur Sache

    EndFunc ;==>_Beenden

    [/autoit]

    Das Skirpt wird vom DVBViewer aus gestartet, danach fängt der Timer mit der ausgewählten Zeit an zu laufen.
    Jetzt kommt der knifflige Teil. Ich möchte das Skript erneut aufrufen (mit dem gleichen Parameter) und nun abfragen wie lange der Timer noch läuft und ob er abgebrochen werden soll.

    Es gelingt mir aber nicht in die entsprechende Funktion zu kommen. D.h. es wird erneut abgefragt mit wieviel Zeiteinheiten der Timer anlaufen soll, obwohl er ja schon läuft.

    Jemand dazu eine gute Idee?

    Gruß nuts

    Edit \ Mit _Singleton würde da was gehen :D nur dann läuft das Skript 2 mal -> wie kille ich ggf. beide Instanzen auf einmal? ;(
    _Singleton Version - wenn ich noch raus kriege wie man die beiden gleichzeitig beenden kann hab ichs!

    Spoiler anzeigen
    [autoit]


    #include <Misc.au3>

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

    Global $iCounter
    If $CmdLine[0] = 0 Then Exit ;eigentlich unnötig - ich wollt lieber mit Parameter starten und naja wie gesagt ..

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

    Global $DVBViewer = ObjGet("", "DVBViewerServer.DVBViewer") ;Verbindung zum DVBViewer herstellen
    If $DVBViewer = 0 Then
    MsgBox(1, "", "Keine Verbindung zum DVBViewer möglich")
    Exit
    EndIf
    Global $sTitle = 'Sleeptimer'
    If _Singleton($sTitle, 1) = 0 Then _STOPTimer()

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

    $test = $DVBViewer.OSD.showpopup("Sleeptimer", "30min, 60min, 90min, 120min, 180min, Zurück", True) ;OSD um abzufragen wie lange der Sleeptimer laufen soll
    Switch $test
    Case 0
    $iCounter = 30
    _Timer()
    Case 1
    $iCounter = 60
    _Timer()
    Case 2
    $iCounter = 90
    _Timer()
    Case 3
    $iCounter = 120
    _Timer()
    Case 4
    $iCounter = 180
    _Timer()
    Case 5
    $DVBViewer.SendCommand(82) ;osd zurück
    Exit
    EndSwitch

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

    Func _STOPTimer()
    $test = $DVBViewer.OSD.showyesno("Sleeptimer", "Restlaufzeit:" & $iCounter, "Countdown abbrechen?", "", True) ;OSD Fenster mit der verbleibenden Zeit wird und einer Abfrage wird angezeigt
    Switch $test
    Case True
    Exit
    EndSwitch
    EndFunc ;==>_STOPTimer

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

    Func _Timer() ; Die Timerfunktion
    AdlibEnable('_Countdown', 1000)
    While True
    If $iCounter <= 0 Then
    AdlibDisable()
    _Beenden()
    Exit
    EndIf
    WEnd
    EndFunc ;==>_Timer

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

    Func _Countdown()
    $iCounter -= 1
    EndFunc ;==>_Countdown

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

    Func _Beenden() ; kommt noch - tut auch nichts zur Sache

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

    EndFunc ;==>_Beenden

    [/autoit]

    edit2 \
    So hab gerade gemerkt, dass meine eingeschlagenen Lösungswege ziemlich ins leere laufen :S
    Das Skript 2 mal starten geht nicht, da sonst keine Restlaufzeit angezeigt werden kann.
    Die Abfrage ob abgebrochen werden soll muss irgendwie anders aufgerufen werden -> Ich versuchs jetzt mal mit _ISPressed :rolleyes:

    Hab ich das Problem halbwegs klar dargestellt?
    Der Sleeptimer soll per Fernbedienung gestartet werden und zwar mit nur einem Knopf. Dieser Knopf kann logischerweise nur eine Aktion aufrufen.
    Gewünscht ist eine unterscheidung zwischen "läuft schon -> Abfrage ob abgebrochen werden soll und die Anzeige der Restlaufzeit" und "läuft nicht -> Einstellen des Countdowns und los gehts".

    Schwierig schwierig ..

  • Ordner mit Unterordner und Dateien auf anderen Rechner kopieren

    • nuts
    • 15. Mai 2009 um 16:12

    Mhm. Leg dir doch testweise einfach 2 Ordner an, trag die Verzeichnisse bei Ziel und Quelle (zwischen die "") ein und probiers mal aus.

    Ist eigentlich ganz simpel und müsste das gewünschte Ergebnis bringen (ich habs oben mal kommentiert).

  • ListBox - Items einfärben

    • nuts
    • 15. Mai 2009 um 14:02

    Jetzt haste dich aber mit einem Listview drumrumgemogelt :D

  • Ordner mit Unterordner und Dateien auf anderen Rechner kopieren

    • nuts
    • 15. Mai 2009 um 12:18
    [autoit]


    $quelle = ""
    $ziel = ""
    $string = Stringsplit($quelle, "\") ;Das Verzeichnis wird nach jedem "\" aufgeteilt, Ergebnis ist ein Array mit den einzelnen Teilstücken
    DirCopy($quelle, $ziel & "\" & $string[$string[0]], 1); Um den Quellordner zu erhalten wird dann dem Zielordner der Ordnername der Quelle angehängt - die 1 setzt Dircopy in den Überschreibmodus

    [/autoit]


    So?

  • ListView und Passwort

    • nuts
    • 8. Mai 2009 um 11:56

    Worin liegt genau der Sinn nur *** anzuzeigen?
    Eine Anzeige ob überhaupt ein Passwort vergeben ist würde den Zweck auch erfüllen oder?
    Dazu könnte man den "Checkboxstyle" (ka ob der wirklich so heisst - ist aber klar was ich meine oder?) verwenden.

  • Teile aus einer .txt Datei löschen

    • nuts
    • 4. Mai 2009 um 17:37

    Hehe mit der .txt Datei kanns ja so nicht klappen.

    Irgendwie ist mir auch nicht klar, was genau zum Namen gehört. Wodurch wird dieser eindeutig getrennt?

  • Teile aus einer .txt Datei löschen

    • nuts
    • 4. Mai 2009 um 16:50

    Poste doch mal dein ganzes Skript.

  • Teile aus einer .txt Datei löschen

    • nuts
    • 4. Mai 2009 um 15:59

    Hey,

    also nur "marius" soll von der Zeile übrig blieben?

    Wenn der Name immer durch ein "_" abgetrennt wird, dann kannst du einfach mit Stringsplit arbeiten.

    [autoit]


    $string = "marius_- [Online] 15 W PM an adii_- PM-Menü Markt Indersdorf"
    $astringsplit = stringsplit($string, "_")
    msgbox(1, "", $astringsplit[1])

    [/autoit]
  • _Stringformat

    • nuts
    • 30. April 2009 um 16:35

    Hey,

    mit folgendem Problem kämpfe ich schon etwas länger.

    Ein ausgelesener Zahlenwert (aus einem Input oder woher auch immer) soll immer auf 2 Dezimalstellen aufgefüllt werden. z.B.

    1000,00 -> bleibt 1000,00
    1000, -> wird zu 1000,00
    1000,0 -> wird zu 1000,00

    Zusatzoption ($auto): Das Dezimaltrennzeichen wird automatisch eingefügt (kennt man von Tippmaschienen)
    1000 -> 10,00

    Hierzu hab ich folgende Funktion gebastelt, es ist etwas an die _StringAddThousandsSep Funktion angelehnt.
    Alle andere Eingaben außer Zahlen und Zahlen mit Dezimaltrennzeichen hab ich als Eingabe ausgeschlossen (ich hoffe erfolgreich)

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    dim $teststring = "1234"

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

    MsgBox(1, "Ergebnis", _StringFormat($teststring))

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

    Func _StringFormat($string, $auto=0)
    ; $auto = 0 -> Automatik an
    ; $auto = 1 -> Automatik aus
    dim $sergebnis, $sDecimal
    Local $rKey = "HKCU\Control Panel\International"
    $sDecimal = RegRead($rKey, "sDecimal") ;zum Auslesen welches Dezimaltrennzeichen verwendet wird
    Local $dummy = 1
    $astring = StringSplit($string, $sDecimal)
    If StringIsInt($string) = 0 then
    $dummy = 0
    Switch $astring[0]
    case 1
    $dummy = 0
    case 2
    $dummy = 1
    case else
    $dummy = 0
    endswitch
    EndIf
    switch $dummy
    case 0
    Return "Ungültiges Format"
    case 1
    Local $sResult = ""
    Local $aNumber = StringRegExp($String, "(\D?\d+)\D?(\d*)", 1)
    If UBound($aNumber) = 2 and $aNumber[1] = "" then
    Local $sleft = $aNumber[0]
    switch $auto
    case 0
    $sResult = $sDecimal & StringRight($sLeft, 2) & $sResult
    $sLeft = StringLeft($sLeft, StringLen($sleft)-2)
    $sergebnis = $sleft & $sResult
    case 1
    $sergebnis = $sleft & ",00"
    EndSwitch
    elseif UBound($aNumber) = 2 and Stringlen($aNumber[1]) = 1 then
    $sergebnis = $aNumber[0] & $sDecimal & $aNumber[1] & "0"
    ElseIf UBound($aNumber) = 2 and Stringlen($aNumber[1]) = 2 then
    $sergebnis = $aNumber[0] & $sDecimal & $aNumber[1]
    ElseIf UBound($aNumber) = 2 and Stringlen($aNumber[1]) > 2 then
    $sergebnis = $aNumber[0] & $sDecimal & StringLeft($aNumber[1],2)
    endif
    endswitch
    Return $sergebnis
    endfunc ; => _StringFormat by Nuts

    [/autoit]

    Ist natürlich ne Menge Code, aber mir ist kein anderer Ansatz eingefallen, da ich mit den Stringfunktionen nicht so vertraut bin.

    Mit Sicherheit nicht die ideale Lösung - Optimierungsvorschläge sind daher erwünscht.

    Gruß nuts

    edit \ habs nochmal etwas umgebaut. Probleme machen noch Eingaben wie ,20 :(

    Spoiler anzeigen
    [autoit]


    dim $teststring = "10,5"

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

    MsgBox(1, "Ergebnis", _StringFormat($teststring))

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

    Func _StringFormat($string, $auto=0)
    ; $auto = 0 -> Automatik an
    ; $auto = 1 -> Automatik aus
    dim $sergebnis, $sDecimal, $sLeft
    Local $sResult = ""
    Local $rKey = "HKCU\Control Panel\International"
    $sDecimal = RegRead($rKey, "sDecimal") ;zum Auslesen welches Dezimaltrennzeichen verwendet wird
    Local $dummy = 1
    local $astring = StringSplit($string, $sDecimal)
    If StringIsInt($string) = 0 then
    $dummy = 0
    Switch $astring[0]
    case 1
    $dummy = 0
    case 2
    $dummy = 1
    case else
    $dummy = 0
    endswitch
    EndIf
    switch $dummy
    case 0
    Return "Ungültiges Format"
    case 1
    Local $aNumber = StringRegExp($String, "(\D?\d+)\D?(\d*)", 1)
    Local $slen = Stringlen($aNumber[1])
    switch $slen
    case 0
    switch $auto
    case 0
    $sResult = $sDecimal & StringRight($aNumber[0], 2)
    $sLeft = StringLeft($aNumber[0], StringLen($aNumber[0])-2)
    if $sleft = "" then $sleft = "0"
    $sergebnis = $sleft & $sResult
    case 1
    $sergebnis = $aNumber[0] & ",00"
    EndSwitch
    case 1
    $sergebnis = $aNumber[0] & $sDecimal & $aNumber[1] & "0"
    case 2
    $sergebnis = $aNumber[0] & $sDecimal & $aNumber[1]
    case Else
    $sergebnis = $aNumber[0] & $sDecimal & StringLeft($aNumber[1],2)
    EndSwitch
    endswitch
    Return $sergebnis
    endfunc ; => _StringFormat by Nuts

    [/autoit]
  • GUI Problem, mal wieder

    • nuts
    • 30. April 2009 um 13:28

    So eine Funktion ist doch im Beispiel vorhanden?

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™