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

Beiträge von opaed

  • Hilfe zum CountdownTimer

    • opaed
    • 3. November 2009 um 21:47
    Zitat


    SEuBo


    Danke für deine Mithilfe.
    Den Tip mit DO :: Until merke ich mir, habe die Zeile ausgetauscht aber etwas unangenehmes bemerkt. Habe den Taskmanager gestartet und mir die CPU Auslastung angeschaut. Während der Counter lief sprang die Auslastung auf 50%.
    Wenn ich das Skript ohne die DLL ausführe, liegt die Auslastung beim laufenden Counter bei 1%.
    Werde mir das Morgen noch genauer anschauen.
    MfG OpaEd

    Zitat


    @kleiner27


    :thumbup: Hammer Engagement von dir, solltest dich mal etwas bremsen, weil das Tempo kann ich nicht mithalten :D
    Deine erste Lösung hatte ich bereits heute Morgen gesehen, aber ein mieser Tag hat mich der Freude an deine Mithilfe beraubt.
    Sorry für das späte Feedback.
    Habe jetzt auch dein drittes Skript im Test, super auskommentiert. Der este Eindruck sieht nach erfolgreicher Operation aus.
    Werde mir das morgen in Ruhe anschauen und mich nochmals melden. Heute gehts in Richtung :sleeping:
    MfG OpaEd

  • Hilfe zum CountdownTimer

    • opaed
    • 2. November 2009 um 19:22

    Hi Kleiner,
    danke dir fuer deine Muehe. Es hat mir grosse Freude zubereitet, weil du dich so aktiv an meinem Problem mitbeteiligt hast.
    Leider habe ich wohl eine schlechte retorische Ausdrucksweise und so wurde mein Problem nicht ganz verstanden.
    Inzwischen koennte ich die Simulation fuer die Events vervollstaendigen um besser auf das eigentliche Problem aufzuzeigen.
    Im Spoiler ist das ergaenzte Skript.
    Wenn man das Skript startet, passiert genau das was ich moechte, ausser eine Moeglichkeit und zwar, wenn der Counter bereits laeuft und ein Event auftritt, dann wird die Zeit nicht hinzugerechnet.
    Also zum probieren, Skript starten Button druecken, CountDown beginnt, nochmal Button waehrend die Zeit runterrechnet und genau hier ist dann mein Trouble.
    Ich hoffe das war verstaendlich genug.

    Spoiler anzeigen
    [autoit]


    #include <date.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=

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

    ;Form1 ist nur fuer den Button und dient nur fuer den Test der Simulation
    ;ueber den Button generiere ich die Events, welche normaleweise von der DLL generiert,

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

    $Form1 = GUICreate("Form1", 180, 419, 192, 124)
    $Input1 = GUICtrlCreateInput("", 19, 259, 143, 21, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_READONLY, $ES_NUMBER), BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
    $Button1 = GUICtrlCreateButton("Button1", 47, 28, 80, 46, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    ; Fenster1 ist zu Beginn geoeffnet
    ; SplashText ist nur Beispiel
    SplashTextOn("", "Das ist Fenster 1" & @CRLF & "Test hat noch nicht begonnen", "-1", "100", "-1", "-1", 3, "Courier New", "20", "400")
    #EndRegion ### END Koda GUI section ###

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

    Global $GeheZumEnde, $lh, $lm, $ls
    Global $zeit1 = 10000
    Global $zeit2 = 40000
    Global $zeit3 = 20000000

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1

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

    _ZeitADD1()

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

    EndSwitch
    WEnd

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

    Func _ZeitADD1()
    $code = Int(Random(4, 7))

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

    ; Weil ein Event aufgetreten, wird Fenster1 geschlossen,
    ;jetzt wird Fenster2 erstellt, fuer die Simulation ist es $Input1
    ;in $Input1 laeuft die Zeit, wenn Zeit abgelaufen, wieder zum Fenster1 zurueck

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

    SplashOff()
    If $code == 4 Then
    $code = $zeit1
    ElseIf $code == 5 Then
    $code = $zeit2
    ElseIf $code == 6 Then
    $code = $zeit3
    EndIf

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

    $code = $code
    $GeheZumEnde = $code
    $start = TimerInit()

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

    While $GeheZumEnde > 0
    $GeheZumEnde = $code - TimerDiff($start)
    _RechneRunter()
    Sleep(1000)
    WEnd
    If TimerDiff($start) Then
    ;Timer ist bei 0 angekommen, oeffne wieder Fenster1 und warte auf Events
    SplashTextOn("", "Das ist Fenster 1" & @CRLF & "Test hat noch nicht begonnen", "-1", "100", "-1", "-1", 3, "Courier New", "20", "400")

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

    EndIf

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

    EndFunc ;==>_ZeitADD1

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

    Func _RechneRunter()
    Local $iHours, $iMins, $iSecs
    _TicksToTime($GeheZumEnde, $iHours, $iMins, $iSecs)
    If $lh <> $iHours Or $lm <> $iMins Or $ls <> $iSecs Then

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

    ;Die Imputbox (Fenster2 in unserem Beispiel) war ja schon erstellt, jetzt werden die Zeitdaten an diese uebertragen
    GUICtrlSetData($Input1, StringFormat("%02i", $iHours) & ":" & StringFormat("%02i", $iMins) & ":" & StringFormat("%02i", $iSecs))
    $lh = $iHours
    $lm = $iMins
    $ls = $iSecs
    EndIf
    EndFunc ;==>_RechneRunter

    [/autoit]


    -Mfg OpaEd

  • Hilfe zum CountdownTimer

    • opaed
    • 2. November 2009 um 13:43

    Hi,
    Ups, ich dachte eine gute Beschreibung des Problems geliefert zu haben.
    Mit dem Sleep werde ich das ändern.

    Zitat

    gggrr .. was n des für n code ?!

    sag doch gleich, dass du noch keinen ansatz hast , und jemand sucht, der die deinen code schreibt ..

    .. ich würde sagen das hört sich nach nem dllcall an .. guck dir mal die hilfe dazu an .. .. weil infos zu der dll kann dir da keiner helfen ..
    zu : ; Start(); hier wurde start eingeleitet und ab jetzt sollen die events ausgewertet werden

    ?? hä ? inizialisierungsroutine ?! schrieb sie doch hin , wenn du sie schon hast ..

    .. grrr ..
    while 1
    sleep(50)
    wend


    Es handelt sich um ActiveXDLL
    Ok, da die DLL nicht zu Verfügung steht, simuliere ich diese zum besseren Verständniss.

    Der button soll die Events $code simulieren. Das Inmputfeld soll den Counter simulieren.
    Wann und welcher Code ausgelöst wird, bestimmt die DLL, mit drücken des Buttons können wir ein Event generieren.

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 154, 206, 278, 133)
    $Input1 = GUICtrlCreateInput("", 16, 136, 121, 21, BitOR($ES_CENTER,$ES_READONLY))
    $Button1 = GUICtrlCreateButton("EventSimulation", 24, 24, 105, 57, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $timerAdd1 = 240000; Millisekunden nur als Beispiel
    Global $timerAdd2 = 85000; Millisekunden nur als Beispiel
    Global $timerAdd3 = 1190000; Millisekunden nur als Beispiel

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _TimeADD()
    EndSwitch
    WEnd

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

    Func _TimeADD()
    $Code = int(Random(4,7))

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

    if $Code == 4 then
    $Code = $timerAdd1
    elseif $Code == 5 then
    $Code = $timerAdd2
    elseif $Code == 6 then
    $Code = $timerAdd3
    endif
    ;hier komme ich nicht weiter.
    GUICtrlSetData ($Input1,$Code)
    EndFunc

    [/autoit]


    Ich drücke den Button, ein Event wird ausgelöst. Schliesse Fenster1 und erstelle Fenster2 (als Beispiel hier das Imputfeld) mit dem Countdown. Zähle runter. Falls die Zeit auf null kommt, schliesse Fenster2 und öffne wieder Fenster1. Ich drücke willkürlich den Button bevor die Zeit abgelaufen ist, in dem Fall sollen die Events auf die Zeit addiert werden.
    Problem 1.
    Keine Ahnung wie man hier die Events aufaddiert.
    Problem 2.
    Keine Ahnung wie ich den CountDown (runterzählend) hier erstellen soll.

  • Hilfe zum CountdownTimer

    • opaed
    • 2. November 2009 um 00:27

    Mojen Leute,
    Komme einfach nicht weiter. Es geht um einen CountdownTimer. Habe zwar recht viele Anregungen hier im Forum gefunden, aber nichts, das mir weiter geholfen hat.
    Und so sieht das Problem aus:
    Die Events werden ueber eine ActiveXDLL uebermittelt. Fuer Anregungen waere ich sehr dankbar, falls ueberhaupt machbar.


    [autoit]


    ;$timerAdd soll dem dll_Event_Code zugeordnet werden um spaeter damit den CountDown zu fuettern
    Global $timerAdd1 = 240000
    Global $timerAdd2 = 85000
    Global $timerAdd3 = 1190000

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

    Start(); hier wurde start eingeleitet und ab jetzt sollen die events ausgewertet werden

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

    While 1 * Sleep(1) ; wird benoetigt wenn Event ausgeloest wird, damit das skript weiter laeuft
    WEnd

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

    Func _Event($Code) ; loest aehnliche Funktion aus wie die hier >>> $Code = int(Random(4,7))

    if $Code == 4 then
    $Code = $timerAdd1
    Starte mit oder addiere $timerAdd1 zum Countdown

    elseif $Code == 5 then
    $Code = $timerAdd2
    Starte mit oder addiere $timerAdd2 zum Countdown

    elseif $Code == 6 then
    $Code = $timerAdd3
    Starte mit oder addiere $timerAdd3 zum Countdown
    endif

    Folgendes soll passieren:
    Wenn Countdown = 0, dann erstelle "Gui Countdown nicht gestartet" und warte bis gestartet
    Wenn Countdown gestartet dann schliesse "Gui Countdown nicht gestartet" und erstelle neue
    Gui fuer die ablaufende Zeit, falls vor Ablauf der Zeit ein weiteres Ereigniss passiert,
    dann verlaengere die Zeit um die Variable.
    Wenn Countdown auf 0, dann schliessen und wieder "Gui Countdown nicht gestartet" erstellen
    und warten bis ein Event passiert

    EndFunc

    [/autoit]

    MfG OpaEd

  • BUG??? GUICtrlSetData mit For To Step

    • opaed
    • 21. Oktober 2009 um 17:03

    Habe den Code nochmal editiert, Zeile 10 rausgenommen, die war ja voellig ueberfluessig.

    Zitat


    Bei mir funktioniert es wunderbar...
    Liegt vieleicht an deinem Rechner !
    Ich sehe so keinen Fehler


    Das ist ja ein Ding ;(
    Soll das etwa heissen, das meine CPU schrott ist. Gibt es eine Moeglichkeit die CPU zu pruefen???

  • BUG??? GUICtrlSetData mit For To Step

    • opaed
    • 21. Oktober 2009 um 16:49

    Hi Leute,
    habe hier ein kleines Problem festgestellt, siehe Beispiel

    Spoiler anzeigen
    [autoit]


    #include
    #include
    #include
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 207, 177, 192, 124)
    $Combo1 = GUICtrlCreateCombo("0.10", 65, 42, 73, 25)
    for $data = 0.2 to 9.90 Step 0.1
    GUICtrlSetData(-1, $data)
    Next
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    Ab dem Wert 5,9 vestehe ich nur noch Bahnhof
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Mfg Eddi

    Bilder

    • combo.jpg
      • 28,29 kB
      • 224 × 221
  • AutoitX dispinterface

    • opaed
    • 13. Oktober 2009 um 15:12

    Danke euch,
    @progandy danke fuer die Hilfe, ich war schon echt am verzweifeln, dabei war es so einfach :thumbup:
    Event_Error in $errorCode laden und ueber MsgBox ausgeben. Koennte echt in die Wand springen.
    Mal sehen ob die anderen Events aus der IDL auch funktionieren.

    Spoiler anzeigen
    [autoit]


    Func _Event_Error($errorCode)
    MsgBox (0,"", $errorCode,3)
    EndFunc

    [/autoit]
  • AutoitX dispinterface

    • opaed
    • 13. Oktober 2009 um 02:23

    Hmmm,
    der Thread wird mal wieder ohne Reaktion in die Ewigkeit durchgereicht,

    Spoiler anzeigen

    :thumbdown:

  • AutoitX dispinterface

    • opaed
    • 11. Oktober 2009 um 21:14

    Halo an Alle,
    brauche bitte Hilfe mit dispinterface, bzw. mit dem Auslesen des Errocodes aus dem Eventobjekt.
    Die MsgBox reagiert auf die Events, aber leider ohne die benoetigten Errocodes.
    Die Suche hat mir keinen entscheidenden Hinweis geboten, daher waere ich fuer ein Tip sehr dankbar.
    MfG Ed


    Spoiler anzeigen
    [autoit]

    ;=======================================================================================
    ;...Auszug aus der IDL
    ;=======================================================================================
    helpstring("_IXDLLEvents-Ereignisschnittstelle")
    ]
    dispinterface _IXDLLEvents {
    properties:
    methods:
    [id(0x00000001), helpstring("method Transfer")]
    HRESULT Transfer([in] VARIANT data);
    [id(0x00000002), helpstring("method Error")]
    HRESULT Error([in] unsigned char ErrorCode);

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

    };
    ;========================================================================================
    ;...Auszug aus VBA(Funktioniert)
    ;========================================================================================
    Private Sub xd_Error(ByVal ErrorCode As Byte)
    MsgBox ErrorCode
    End Sub
    ;========================================================================================
    ;...Hier Schnipsel in Autoit(mit MsgBox gehts, aber ohne ErrorWert)
    ;========================================================================================
    Global $Obj = ObjCreate("XDLL.HauptInterface")
    $evnts=ObjEvent($Obj,"_Event_")

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

    Func _Event_Error()
    MsgBox (0,"", "Error",3)
    EndFunc

    [/autoit]
  • Internet Explorer

    • opaed
    • 19. November 2007 um 15:00

    IE im Kioskmodus

    Eingabeaufforderung(cmd)
    oder
    Auführen(windows+r)

    "C:\Programme\Internet Explorer\IEXPLORE.EXE" -k (deine Seite)

    "C:\Programme\Internet Explorer\IEXPLORE.EXE" -k https://autoit.de/www.google.de

    Funktioniert nicht, wenn ein Link deiner Seite eine weitere Instanz des IE oeffnet.

  • Arbeitsgruppe ändern

    • opaed
    • 14. November 2007 um 13:38

    Tagchen
    GtaSpider

    Netdom Syntax
    netdom join DeinComputerName(Für local ohne UNC-Pfad) /w:NeueArbeitsgruppe(/w: sollte Parameter "Workgroup" definieren, für Domain steht /d:NeueDomain)

    Netdom für W2K(W2K-SupportTools) funktionier nicht mit Parameter /w:, im XP kann nicht das momentan nicht testen.
    ????

  • Regwrite hilfe (Neuling)

    • opaed
    • 6. November 2007 um 12:21

    ;)
    Werde erstmal mit den Beispielen etwas rumspielen und natürlich viel in die Autoit-Hilfe reinschauen. Jedenfalls Danke für die Untzerstützung, Klasse !!!!
    MfG

  • Regwrite hilfe (Neuling)

    • opaed
    • 5. November 2007 um 23:47

    Halo nochmals und Dankeschön, werde mir die Resultate ganz in Ruhe anschauen !!!

    @HUGY, hoffe du bist nicht verärgert, aber es geht wirklich nicht mit deinem Code in dem Regbefehl, habe das am anderen PC ausprobiert, Ergebniss das Selbe. Alle Shlüssel erhalten den Value = WERT3 ??? Ich verstehe nicht warum das in Fensterausgabe richtig abgearbeitet wird, aber nicht in dem Regbefehl.

    Und abgeändert in

    [autoit]

    RegWrite("HKCU\SOFTWARE\Test", "TestKey" & $i, "REG_SZ", _ArrayMax ( $_array [$i]))

    [/autoit]


    erhalten alle Schlüssel den Value = BenutzerName

    BugFix habe Incude aus dem Script entfernt, dein Code eingefügt, leider meldete die Console Fehler ???

    MfG
    opaed

  • Regwrite hilfe (Neuling)

    • opaed
    • 5. November 2007 um 21:07

    Hi nochmal,
    @huggy, erstmal herzlichen Glueckwunsch zu deinem 999 Posting und schon mal zu deinem 1000.
    Ich habe dein Script ausprobiert, mit Ausgabe im Fenster(Msg) funkt das Array ganz gut, in Verbindung mit dem RegCommand scheint es nicht zu laufen. Zwoelf Schluessel mit fortsteigende Zahl wurden geschrieben, aber als "Value" erhalten alle Zwoelf "WERT3".

    @progandy, deine Loesung funktioniert, aber ohne das doppelte Array in Zeile 2.

    Muss mal kurz frische Luft tanken,abschalten, melde mich gleich nochmal um euch zu wuerdigen!!!

  • Regwrite hilfe (Neuling)

    • opaed
    • 5. November 2007 um 19:33

    Hi,
    der dritte Autoit-Musketier im Bunde (grins). Echt cool hier im Forum, schnelle Antworten, Kompliment !!!

    Werte fuer Array

    [autoit]

    $_array = _ArrayCreate ("wert1","wert2","wert3","alo","deo","leo","tude","lude","adeo","supo","meo","kani")

    [/autoit]

    Ok, Progandy, aber auch mit deiner Scriptloesung komme ich als Gruenling nicht weiter. Unter (Valeuname) werden nur Werte von 0-9 ausgegeben, aber eigentlich sollte (Valeuname) bei 1 anfangen und sich fortsteigen zB. bis 12, anschliessend sollen 12x unterschiedliche (value) gesetzt werden. Am aehesten kommt mir bei dieser Aufgabe die Loesung von Westi entgegen, weil (Valeuname) bei 1 anfaengt, aber der Rest mit den Werten dahinter geht nicht mit 12 Werten. Aber auch die anderen Exemplare sind sehr Wilkommen, da hier mehrere Loesungen zur Anschauung entstehen.

    Gott gib mir Durchblick !!! Ja, in zehn Jahren

  • Regwrite hilfe (Neuling)

    • opaed
    • 5. November 2007 um 18:01

    Halo und Ohaha Hammer,
    vielen vielen Dank fuer eure Muehe, das haette ich nie hinbekommen. Heul, ist das schwer.
    Also ohne "_ArrayPop ( $_array )" wird die Variable $_array(value) nur mit dem letztem Wert gefuellt, (im Beispiel ist es der Wert3).
    Wendet man "_ArrayPop ( $_array )" an, so werden max. 10 Werte verschiedene Werte unter "value" geschrieben ???

  • Regwrite hilfe (Neuling)

    • opaed
    • 4. November 2007 um 21:09

    Halo Leute,
    bin neu hier. Mit Programmierung habe ich bisher keine Erfahrung. Wie sollte es auch anders sein, brauche "Erste Hilfe".

    Hatte mir folgende Aufgabe gestellt:

    Primaere Funktion soll "RegWrite ( "keyname" [,"valuename", "type", value] )"sein, es sollen zB. 20 Regschluessel erstellt werden. Der Pfad "Keyname" und "Type" kann in diesem Fall gleich bleiben.

    "valuename" = Name1, wobei nur die Zahl jeweils um 1 steigen soll, also Name2, Name3, Name4,....Name21
    "value" = wird mit unterschiedlichen Werten gefuettert zB. value_name1=value_bla, value_name2=valu_eblabla, value_name3=valu_eblablabla usw..

    Leider haengen fuer mich bei dieser Aufgabe die Trauben zu hoch, es kommt mir vor wie ein Ratespiel. Koennte mich jemand von euch auf den richtigen Weg schupsen um die Funktionen zu verschachteln ???

    Danke fuer Verstaendniss
    MfG Gruenling

    Ps: Das man in diesem Fall Regwrite 20x ausfuehren ist klar !!!

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™