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

Beiträge von Schnuffel

  • Habe ein Problem mit Buttons

    • Schnuffel
    • 22. Mai 2008 um 18:27

    ich denke, jetzt macht es nur noch Sinn, wenn Du uns den ganzen Code postest.

  • Habe ein Problem mit Buttons

    • Schnuffel
    • 22. Mai 2008 um 18:19

    nun mal langsam mit den wilden Pferden... :rolleyes:

    zu Deinem Problem:
    Du versuchst mit der style $BS_ICON ein Bitmap zu zuweisen. Das wird nicht funken.
    siehe Hilfe:

    Zitat

    A Button control can display an icon or image by using the $BS_ICON or $BS_BITMAP style.
    Use GUICtrlSetImage to specify the picture to use.

    versuch's mal mit $BS_BITMAP

    so long...

    (jetzt wollt ich mal schneller sein... 8) )

  • Button Funktion ausführen mit "onClick"

    • Schnuffel
    • 22. Mai 2008 um 14:49

    @ Doc,

    vielleicht hab ich mich etwas ungeschickt ausgedrückt.

    Ich möchte nur, das die Funktion hinter dem Button schon beim anklicken ausgeführt wird, damit der Effekt des
    (ich ziehe die Maus vom Button, bevor ich loslasse und dann passiert nichts...) nicht eintreten kann,

    so wie eben auch der Button selbst schon (beim drücken der Maustaste ;) ) den Focus erhält.

  • Button Funktion ausführen mit "onClick"

    • Schnuffel
    • 22. Mai 2008 um 14:17

    Hallo zusammen,

    wenn ich in dem Beispiel-Script den Button mit der linken Maustaste drücke und gedrückt den Button verlasse, wird die Funktion "hinter" dem Button nicht ausgeführt.
    Kann man das ändern , das die Funktion mit "onClick" ausgeführt wird?
    Ich kann mir vorstellen, das das an der grundsätzlichen Programmierung der GuiCtrlCreateButton-Funktion liegt und die Funktion erst mit "OnRelease" ausgeführt wird.
    Gibt es dafür einen einfachen workaround?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("My GUI Button") ; will create a dialog box that when displayed is centered

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

    Opt("GUICoordMode",2)
    $Button_1 = GUICtrlCreateButton ("Run Notepad", 10, 30, 100)
    $Button_2 = GUICtrlCreateButton ( "Button Test", 0, -1)

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

    GUISetState () ; will display an dialog box with 2 button

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button_1
    Run('Notepad.exe') ; Will Run/Open Notepad
    Case $msg = $Button_2
    MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
    EndSelect
    Wend

    [/autoit]
  • Digitaluhr

    • Schnuffel
    • 20. Mai 2008 um 23:08

    Hallo Oscar,

    hab noch einen Verbesserungsvorschlag.
    Du kannst die .gif-Dateien doch includieren ohne FileInstall und Ablage auf der HDD:
    Hab ich aus einem Post von progandy:

    http://www.autoitscript.com/forum/index.php?showtopic=51103

    hab ich hier gefunden:
    [ offen ] GUI - frage zum editfeld!

    vielleicht kannst Du das ja brauchen :)

  • Input während der Eingabe überprüfen???

    • Schnuffel
    • 20. Mai 2008 um 16:34

    ihr seid wirklich gut :thumbup: ,

    da bastel ich mir die Finger wund, dabei gibt es das alles schon. :whistling:

    Eine Frage hab ich aber doch noch.
    Gibt es eine Möglichkeit mit dem GuiCtrlSendMsg Hexcode die Pull-up/-down Pfeile noch zu "eliminieren"?
    siehe Script:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    GUICreate ( "My GUI get date", 200,200,800,200)
    $date = GUICtrlCreateDate ("00:00", 10,10,60,20, $DTS_TIMEFORMAT )
    $date1 = GUICtrlCreateDate ("00:00", 10,40,60,20, $DTS_TIMEFORMAT )
    $date2 = GUICtrlCreateDate ("00:00", 10,70,60,20, $DTS_TIMEFORMAT )
    $style = "HH:mm"

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

    GuiCtrlSendMsg($date, 0x1032, 0, $style)
    GuiCtrlSendMsg($date1, 0x1032, 0, $style)
    GuiCtrlSendMsg($date2, 0x1032, 0, $style)
    GuiSetState()

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

    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

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

    MsgBox(0,"Time", GUICtrlRead($date)&@CR&GUICtrlRead($date1)&@CR&GUICtrlRead($date2))

    [/autoit]
  • Input während der Eingabe überprüfen???

    • Schnuffel
    • 20. Mai 2008 um 13:58

    danke für die zahlreichen Tipps,

    die On-the-Fly Prüfung wäre schon ein gewisses "Feature" für mich.
    Vielleicht kann ich mein "Problem" verdeutlichen...
    Ich bastle an einer Zeiterfassungs-Software.
    In dieser sollen die User Ihre Zeiten eintragen.
    Damit es "schön" aussieht und zur Sicherheit der Eingaben (dann brauche ich nicht hinterher alle Daten prüfen) möchte ich diese Prüfung.
    Ich speichere die Zeitdaten in einer SQLite-DB pro User. Dafür hab ich eine kleine Funktion geschrieben, die mir die Zeiten in Minuten umrechnet und gleichzeitig auch mit Vorzeichen umgehen kann. Damit kann ich dann auch die Überstunden berechnen etc...

    hier ein Screenshot von der Sache.
    Ich denk mir halt bei der Vielzahl von Input's :)
    [Blockierte Grafik: http://www.pc-wizards.de/Bild.jpg]

    Ach ja, wer es brauchen kann:
    Ich hänge die Funktion mal mit an...

    @Mega: Du hast Recht, ich hatte in einer ersten Version noch einePrüfung drin, hatte ich wohl beim umstrukturieren "verloren".
    Hab ich jetzt wieder eingebaut. Ich denke jetzt ist die Eingabe fast Idiotensicher. Wenn noch einer einen Bug findet würde ich mich freuen.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <Array.au3>

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

    ;Global $changed = False

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

    GUICreate("My GUI Zeiteingabe",200,100) ; will create a dialog box that when displayed is centered

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

    $edit = GUICtrlCreateInput(" :", 10, 30, 52, 20,$ES_NUMBER) ; Eingabebox
    GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
    GUICtrlSetLimit(-1,5)
    $edit1 = GUICtrlCreateInput(" :", 75, 30, 52, 20,$ES_NUMBER) ; Eingabebox
    GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
    GUICtrlSetLimit(-1,5)
    $edit2 = GUICtrlCreateInput(" :", 140, 30, 52, 20,$ES_NUMBER) ; Eingabebox
    GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
    GUICtrlSetLimit(-1,5)
    $btn = GUICtrlCreateButton("Ohne Funktion", 50, 70, 100, 20)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    Send("{LEFT 3}")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $backspc = 0
    Local $nNotifyCode = _HiWord($wParam)
    Local $nID = _LoWord($wParam)
    Local $hCtrl = $lParam
    Switch $nID ; aktuelle Inputbox
    Case $edit Or $edit1 Or $edit2
    Switch $nNotifyCode
    Case $EN_CHANGE
    $temp = StringSplit(GUICtrlRead($nID),":")
    If @error Then
    _ArrayAdd($temp,"")
    EndIf
    $temp[1] = StringReplace($temp[1]," ","")
    If $temp[0] = 1 Then
    $temp[1] = StringLeft($temp[1],1)&" "
    GUICtrlSetData($nID,$temp[1]&":")
    Send("{LEFT 2}")
    EndIf
    Switch StringLen($temp[2])
    Case 2
    Send("{TAB}")
    Case 1
    If NOT StringIsDigit($temp[1]) Then
    GuiCtrlSetData($nID," :")
    Send ("{LEFT 3}")
    EndIf
    If $temp[2] > 5 Then
    $temp[2]=""
    GuiCtrlSetData($nID,$temp[1]&":"&$temp[2])
    EndIf
    Case 0
    Switch StringLen($temp[1])
    Case 2
    Switch StringLeft($temp[1],1)
    Case 2
    If $temp[1] > 23 Then
    $temp[1] = "2 "
    GuiCtrlSetData($nID,$temp[1]&":")
    send ("{LEFT 2}")
    Else
    GuiCtrlSetData($nID,$temp[1]&":")
    EndIf
    Case 1
    GuiCtrlSetData($nID,$temp[1]&":")
    Case 0
    GuiCtrlSetData($nID,$temp[1]&":")
    EndSwitch
    Case 1
    Switch $temp[1]
    Case 3 to 9
    $temp[1] = "0"&$temp[1]
    GuiCtrlSetData($nID,$temp[1]&":")
    Case 0 to 2
    GuiCtrlSetData($nID,$temp[1]&" :")
    send ("{LEFT 2}")
    EndSwitch
    Case 0
    GuiCtrlSetData($nID," :")
    send ("{LEFT 3}")
    EndSwitch
    EndSwitch
    Case $EN_SETFOCUS
    GuiCtrlSetData($nID," :")
    Send("{LEFT 3}")
    Case $EN_KILLFOCUS
    $temp = StringSplit(GUICtrlRead($nID),":")
    $temp[1] = StringReplace($temp[1]," ","")
    If $temp[0] = 1 Then _ArrayAdd($temp,"")
    If StringLen($temp[2]) = 2 Then
    If StringLen($temp[1]) = 2 Then
    Return
    Else
    GUICtrlSetData($nID," :")
    Return
    EndIf
    EndIf
    Switch StringisDigit($temp[1])
    Case True
    Switch StringLen($temp[1])
    Case 1
    If $temp[1] > 2 Then $temp[1] = "0"&$temp[1]
    If $temp[1] <= 2 Then $temp[1] = " "
    Case 2
    If $temp[2] > "" Then
    $temp[2] = $temp[2]&"0"
    GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
    EndIf
    EndSwitch
    If $temp[2] = "" Or $temp[2] = 0 Then
    $temp[2] = "00"
    GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
    EndIf
    Case False
    GUICtrlSetData($nID," :")
    EndSwitch
    EndSwitch
    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

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

    Func _HiWord($x)
    Return BitShift($x, 16)
    EndFunc ;==>_HiWord

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

    Func _LoWord($x)
    Return BitAND($x, 0xFFFF)
    EndFunc ;==>_LoWord

    [/autoit]
    Spoiler anzeigen
    [autoit]

    #include-once
    ; #INDEX# =======================================================================================================================
    ; Title .........: TimeMin
    ; AutoIt Version: 3.2.3++
    ; Language: English
    ; Description: Functions that assist with Time calculation.
    ; ===============================================================================================================================
    ; ------------------------------------------------------------------------------
    ; AutoIt Version: 3.0
    ; Language: English
    ; Description: Functions that assist with Time management.
    ; ------------------------------------------------------------------------------

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _TimetoMin()
    ; Description ...: Change the format from Time to Minutes like: 08:45 --> 525
    ; Syntax.........: _TimetoMin($msg)
    ; Parameters ....: $msg - Time to convert in format "(+/-)05:04" Returns(+/-) only if it comes with $msg!
    ; Return values .: Success - Time in minutes with "+/-mmmmm"
    ; Failure: @error - 1 = Function called with wrong Parameter (not in format (+/-)hhhh:mm)
    ; Failure: @error - 2 = Function called with wrong Parameter (hhhh/mm are no Digits)
    ; Failure: @error - 3 = Function called with wrong Parameter (mm > 59)
    ; Author ........: Oliver Zimmermann <o_z at gmx dot net> (Schnuffel)
    ; Modified.......:
    ; Remarks .......:
    ; Related .......: _MintoTime()
    ; Link ..........;
    ; Example .......; No
    ; ===============================================================================================================================
    Func _TimetoMin($msg)
    Local $vz="", $Mins1, $Mins2, $sumtoMin
    If StringLeft($msg,1)="+" Then
    $vz="+"
    $msg=StringTrimLeft($msg,1)
    ElseIf StringLeft($msg,1)="-" Then
    $vz="-"
    $msg=StringTrimLeft($msg,1)
    EndIf
    $msg=StringSplit($msg,":")
    If @error=1 Then
    setError(1)
    Return 0
    EndIf
    If StringIsDigit($msg[1])=0 Or StringIsDigit($msg[2])=0 Then
    setError(2)
    Return 0
    EndIf
    If $msg[2]>59 Then
    setError(3)
    Return 0
    EndIf
    $msg[1]=$msg[1]*60
    $sumtoMin=$msg[1]+$msg[2]
    $msg=0
    setError(0)
    Return($vz&$sumtoMin)
    EndFunc
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _MintoTime()
    ; Description ...: Change the format from minutes to Time format like: 08:45 --> +525
    ; Syntax.........: _MintoTime($msg)
    ; Parameters ....: $msg - Minutes to convert in format "+/-mmmmmm" Returns(+/-) only if it comes with $msg!
    ; Return values .: Success - Time in format "+/-hh:mm"
    ; Failure: @error - 1 = Function called with wrong Parameter (not in format (+/-)mmmmm; 'mmmm' are no Digits)
    ; Author ........: Oliver Zimmermann <o_z at gmx dot net> (Schnuffel)
    ; Modified.......:
    ; Remarks .......:
    ; Related .......: _TimetoMin()
    ; Link ..........;
    ; Example .......; No
    ; ===============================================================================================================================
    Func _MintoTime($msg)
    Local $Hours, $Mins, $vz=""
    If StringLeft($msg,1)="+" Then
    $msg=StringTrimLeft($msg,1)
    $vz="+"
    ElseIf StringLeft($msg,1)="-" Then
    $vz="-"
    $msg=StringTrimLeft($msg,1)
    EndIf
    If StringIsDigit($msg)=0 Then
    SetError(1)
    Return(0)
    EndIf
    $Hours=StringSplit($msg/60,".")
    $Mins=$msg-($Hours[1]*60)
    If $Mins<10 Then $Mins="0"&$Mins
    If $Hours[1]<10 Then $Hours[1]="0"&$Hours[1]
    $msg=0
    setError(0)
    Return ($vz&$Hours[1]&":"&$Mins)
    EndFunc

    [/autoit]

    Dateien

    TimeMin.au3 3,79 kB – 613 Downloads
  • Input während der Eingabe überprüfen???

    • Schnuffel
    • 19. Mai 2008 um 20:18

    Hallo zusammen,

    hab jetzt mal eine Funktion auf Grundlage der bisherigen Tipps erstellt.
    Vielleicht hat ja jemand Lust und/oder Zeit da mal drüber zu schauen.
    Mir wäre sehr an einer Optimierung gelegen. Verstanden wie es geht hab ich ja jetzt. :whistling:

    Spoiler anzeigen

    #include <GuiConstants.au3>
    #include <Array.au3>

    ;Global $changed = False

    GUICreate("My GUI Zeiteingabe",200,100) ; will create a dialog box that when displayed is centered

    $edit = GUICtrlCreateInput(" :", 10, 30, 52, 20,$ES_NUMBER) ; Eingabebox
    GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
    GUICtrlSetLimit(-1,5)
    $edit1 = GUICtrlCreateInput(" :", 75, 30, 52, 20,$ES_NUMBER) ; Eingabebox
    GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
    GUICtrlSetLimit(-1,5)
    $edit2 = GUICtrlCreateInput(" :", 140, 30, 52, 20,$ES_NUMBER) ; Eingabebox
    GUICtrlSetFont(-1,10,600,0,"Courier New") ; nichtproportionale Schrift gewählt, für die Optik des gleichbleibenden Abstandes vor dem ":" mit Leerzeichen
    GUICtrlSetLimit(-1,5)
    $btn = GUICtrlCreateButton("Ohne Funktion", 50, 70, 100, 20)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    Send("{LEFT 3}")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $backspc = 0
    Local $nNotifyCode = _HiWord($wParam)
    Local $nID = _LoWord($wParam)
    Local $hCtrl = $lParam
    Switch $nID ; aktuelle Inputbox
    Case $edit Or $edit1 Or $edit2
    Switch $nNotifyCode
    Case $EN_CHANGE
    $temp = StringSplit(GUICtrlRead($nID),":")
    $temp[1] = StringReplace($temp[1]," ","")
    If $temp[0] = 1 Then
    $temp[1] = StringLeft($temp[1],1)&" "
    GUICtrlSetData($nID,$temp[1]&":")
    Send("{LEFT 2}")
    EndIf
    Switch StringLen($temp[2])
    Case 2
    Send("{TAB}")
    Case 1
    If NOT StringIsDigit($temp[1]) Then
    GuiCtrlSetData($nID," :")
    Send ("{LEFT 3}")
    EndIf
    If $temp[2] > 5 Then
    $temp[2]=""
    GuiCtrlSetData($nID,$temp[1]&":"&$temp[2])
    EndIf
    Case 0
    Switch StringLen($temp[1])
    Case 2
    Switch StringLeft($temp[1],1)
    Case 2
    If $temp[1] > 23 Then
    $temp[1] = "2 "
    GuiCtrlSetData($nID,$temp[1]&":")
    send ("{LEFT 2}")
    Else
    GuiCtrlSetData($nID,$temp[1]&":")
    EndIf
    Case 1
    GuiCtrlSetData($nID,$temp[1]&":")
    Case 0
    GuiCtrlSetData($nID,$temp[1]&":")
    EndSwitch
    Case 1
    Switch $temp[1]
    Case 3 to 9
    $temp[1] = "0"&$temp[1]
    GuiCtrlSetData($nID,$temp[1]&":")
    Case 0 to 2
    GuiCtrlSetData($nID,$temp[1]&" :")
    send ("{LEFT 2}")
    EndSwitch
    Case 0
    GuiCtrlSetData($nID," :")
    send ("{LEFT 3}")
    EndSwitch
    EndSwitch
    Case $EN_SETFOCUS
    GuiCtrlSetData($nID," :")
    Send("{LEFT 3}")
    Case $EN_KILLFOCUS
    $temp = StringSplit(GUICtrlRead($nID),":")
    $temp[1] = StringReplace($temp[1]," ","")
    If $temp[0] = 1 Then _ArrayAdd($temp,"")
    If StringLen($temp[2]) = 2 Then
    If StringLen($temp[1]) = 2 Then
    Return
    Else
    GUICtrlSetData($nID," :")
    Return
    EndIf
    EndIf
    Switch StringisDigit($temp[1])
    Case True
    Switch StringLen($temp[1])
    Case 1
    If $temp[1] > 2 Then $temp[1] = "0"&$temp[1]
    If $temp[1] <= 2 Then $temp[1] = " "
    Case 2
    If $temp[2] > "" Then
    $temp[2] = $temp[2]&"0"
    GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
    EndIf
    EndSwitch
    If $temp[2] = "" Or $temp[2] = 0 Then
    $temp[2] = "00"
    GUICtrlSetData($nID,$temp[1]&":"&$temp[2])
    EndIf
    Case False
    GUICtrlSetData($nID," :")
    EndSwitch
    EndSwitch
    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

    Func _HiWord($x)
    Return BitShift($x, 16)
    EndFunc ;==>_HiWord

    Func _LoWord($x)
    Return BitAND($x, 0xFFFF)
    EndFunc ;==>_LoWord


    vielleicht kannn das ja der Ein oder Andere auch gebrauchen.

    Wäre für jeden Tip dankbar...

  • Input während der Eingabe überprüfen???

    • Schnuffel
    • 18. Mai 2008 um 18:10

    @ Bernd
    Danke für den Tip, bin schon ganz verzweifelt gewesen.
    Schau ich mir gleich mal an.

    @ prizma
    Danke auch für deinen Tip, aber das war nicht mein Problem.
    Arbeite an einer Zeiterfassungssoftware auf Basis von AutoIt incl. SQLite und so ...

    Auf jeden Fall finde ich das Forum echt gut.
    Da bekommt man innerhalb von Minuten gute Tipps :P

  • Input während der Eingabe überprüfen???

    • Schnuffel
    • 18. Mai 2008 um 17:57

    Hallo zusammen,

    ich möchte gern über ein GUICtrlCreateInput eine Uhrzeit eintragen.
    Meine Vorstellung: ein Input Control mit vorgegebenem ":".
    Während der Eingabe soll dann bei jedem Tastendruck eine Funktion aufgerufen werden,
    damit die Eingabe auf Korrektheit überprüft und der Cursor automatisch gesetzt werden kann.
    (Stundenzeiten vor dem ":", nach Eingabe von zwei Zahlen Sprung auf die rechte Seite des ":" für die Minuteneingabe)

    Hab sowas in unserem Spesenabrechnungsprogramm gesehen und weiß jetzt nicht, wie ich am Besten Focus und Tasteneingabe "abfangen" kann.

    Ich hoffe, ich hab mich verständlich ausgedrückt.
    Ansonsten bastle ich zur Veranschaulichung ein kleines Script...

    Danke schon mal im voraus

  • Script mit Tastenenkombination Text Erstellen?

    • Schnuffel
    • 18. Mai 2008 um 14:08

    BugFix ,

    [autoit]

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

    [/autoit]


    hast natürlich Recht, hab das unbedacht nur so schnell dahinter geschrieben...
    wollte nur eine Erklärung liefern, warum ich den Befehl verwendet habe.
    Wie du sagst werde auch ich die Hilfe nächstesmal etwas genauer lesen...

    [autoit]

    Send("#r")
    WinWaitActive("Ausführen")
    Send("notepad.exe{Enter}")

    [/autoit]


    den Code hab ich aus der Original engl. Hilfe kopiert (Send) und nur die Befehle für Notepad (deutsch) angepasst,
    um den Send-Befehl zu verdeutlichen. ;)

  • Script mit Tastenenkombination Text Erstellen?

    • Schnuffel
    • 18. Mai 2008 um 10:40

    Hallo td1000,

    ich hab das mal schnell hingebastelt. Denke das hilft dir weiter.

    [autoit]

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

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

    Send("#r")
    WinWaitActive("Ausführen")
    Send("notepad.exe{Enter}")
    WinWaitActive("Unbenannt -")
    Send("Today's time/date is {F5}")

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

    HotKeySet ("^1","meine_funktion" ) ; mit strg + 1 soll der text 99000 da stehen
    While 1 ; Schleife die wartet, damit Programm nicht beendet wird
    Sleep(1)
    WEnd
    Func meine_funktion()
    ;~ Send("{down}") ;taste drücken ????? unnötig
    ;~ Send("{up}") ; taste loslassen ????? unnötig
    ;~ Sleep(1) ; text wird in 1 milsec eingegeben ????? unnötig
    send ("{ENTER}99000") ; text bzw zahlen die geschreiben werden sollen
    EndFunc

    [/autoit]

    Wie McPoldy schon sagt, kräftig die Hilfe lesen....

  • Digitaluhr

    • Schnuffel
    • 18. Mai 2008 um 10:10

    Hallo Oscar,

    du hast Recht.
    bringt wirklich nichts. Hab ich ausprobiert.

    Gibt es eigentlich eine Möglichkeit, die gif-Dateien beim Start in den Speicher zu laden und von dort auszutauschen?
    Ich denke die 3% CPU-Last auf meiner Maschine gehen zu Lasten des ständigen Bilder neu ladens von HDD.

    PS: Das Script ist echt gut.
    Hab gar nicht gewusst, das man so "fensterlose" Sachen machen kann :)

  • Digitaluhr

    • Schnuffel
    • 17. Mai 2008 um 19:21

    Hallo Oscar,

    macht es vielleicht Sinn, wenn Du die Zeitdifferenz-Abfrage nicht über If-Abfragen ausführst, sondern einfach einmal/Sek.
    z.B. mit:

    AdlibEnable("_SetClock", 1000) einsetzt?

    Vielleicht kann ich ja ein wenig zum Optimieren des Codes beitragen :)
    ( oder was lernen :D )

  • Pfad und Dateiname aus String extrahieren

    • Schnuffel
    • 17. Mai 2008 um 18:10

    hab auch einen Ansatz.....

    [autoit]

    $datei_splitten= FileOpenDialog("Datei zum Splitten auswählen", "", "MP3-Dateien (*.mp3)", 1 )
    $datei_splitten_array = StringSplit($datei_splitten,"\")
    msgbox(0,"",StringRegExpReplace($datei_splitten,$datei_splitten_array[$datei_splitten_array[0]]," ",0))
    msgbox(0,"",$datei_splitten_array[$datei_splitten_array[0]])

    [/autoit]
  • String (Zeit) bearbeiten

    • Schnuffel
    • 17. Mai 2008 um 15:55

    hab mir mal den Spass gemacht und die Ergebnisse verglichen :)

    [autoit]

    #include <Array.au3>

    $N = 1000

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str1[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str1) - 1
    $str1[$i] = StringRegExpReplace($str1[$i], '\b\d:\d\d', 0 & '\0')
    Next

    Next

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

    $EinsTime = TimerDiff($Zeit) / $N

    ;_ArrayDisplay($str, "RegExp")

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str2[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str2) - 1
    $str2[$i] = StringFormat("%02u", $str2[$i]) & StringRight($str2[$i], 3)
    Next
    Next
    $ZweiTime = TimerDiff($Zeit) / $N

    ;_ArrayDisplay($str, "StringFormat")

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str3[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str3) - 1
    $time = StringSplit($str3[$i], ":")
    If $time[0] <= 9 AND StringLen($time[0]) = 1 Then $time[0]="0"&$time[0]
    If $time[1] <= 9 AND StringLen($time[1]) = 1 Then $time[1]="0"&$time[1]
    $str3[$i] = $time[0]&":"&$time[1]
    Next
    Next
    $DreiTime = TimerDiff($Zeit) / $N

    ;_ArrayDisplay($str, "Leviathan")

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str4[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str4) - 1
    If StringLen($str4[$i]) < 5 Then $str4[$i] = '0' & $str4[$i]
    Next
    Next
    $VierTime = TimerDiff($Zeit) / $N

    ;_ArrayDisplay($str, "StringLen")

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str5[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str5) - 1
    If StringInStr($str5[$i], ':') = 2 Then $str5[$i] = '0' & $str5[$i]
    Next
    Next
    $FuenfTime = TimerDiff($Zeit) / $N

    ;_ArrayDisplay($str, "BugFix")

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str6[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str6) - 1
    If $str6[$i] < 10 Then $str6[$i] = '0' & $str6[$i]
    Next
    Next
    $SechsTime = TimerDiff($Zeit) / $N

    ;_ArrayDisplay($str, "kleiner 10-Methode")

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

    $Zeit = TimerInit()
    for $r = 1 To $N
    Dim $str7[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str7) - 1
    $str7[$i] = StringRight('0' & $str7[$i],5)
    Next
    Next
    $SiebenTime = TimerDiff($Zeit) / $N

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

    ;_ArrayDisplay($str, "Bernd")

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

    MsgBox(0,"", "RegExp:" &@TAB&@TAB& Round($EinsTime, 3) & ' ms ' &@TAB&@TAB& $str1[0]&" "&$str1[1]&" "&$str1[2]& @CRLF & "StringFormat:" &@TAB& Round($ZweiTime, 3) & ' ms' &@TAB&@TAB&$str2[0]&" "&$str2[1]&" "&$str2[2]& @CRLF & "Leviathan:" &@TAB& Round($DreiTime, 3) & ' ms' &@TAB&@TAB&$str3[0]&" "&$str3[1]&" "&$str3[2]& @CRLF & "StringLen:" &@TAB& Round($VierTime, 3) & ' ms' &@TAB&@TAB&$str4[0]&" "&$str4[1]&" "&$str4[2]&@CRLF & "BugFix:" &@TAB&@TAB& Round($FuenfTime, 3) & ' ms' &@TAB&@TAB&$str5[0]&" "&$str5[1]&" "&$str5[2]& @CRLF & "<10-Methode:" &@TAB& Round($SechsTime, 3) & ' ms' &@TAB&@TAB&$str6[0]&" "&$str6[1]&" "&$str6[2]&@CRLF & "Bernd:" &@TAB&@TAB& Round($SiebenTime, 3) & ' ms'&@TAB&@TAB&$str7[0]&" "&$str7[1]&" "&$str7[2])

    [/autoit]
  • Uhrzeit Berechnungen ?!??

    • Schnuffel
    • 2. Februar 2007 um 19:47

    @ peethebee

    hey, super schnelle Antwort.

    Ich glaube, ich hab den Wald vor lauter Bäumen nicht gesehen.
    Werd das mal ausprobieren.

    thnx

  • Uhrzeit Berechnungen ?!??

    • Schnuffel
    • 2. Februar 2007 um 19:12

    Hallo zusammen,
    ich möchte mit Autoit so eine Art Stempeluhr bastel.
    Ich bin auch schon recht weit gekommen mit sqlite und so.
    Ich schlage mich nur immer noch mit der sehr lästigen Rechnerei der Uhrzeiten herum.
    Gibt es nicht irgend eine Funktion, der ich einfach zwei Uhrzeiten übergebe, und die errechnet dann die Differenz? (vielleicht inkl. + und - Zeiten!)
    Bin weder auf der amerik. AutoIt Forum-Seite noch im Help-File auf grundlegende Erkenntnisse gestossen.
    Daher rechne ich alles in getrennten Stunden und Minuten. Wäre ja alles nicht so dramatisch, wenn es das "-" Zeichen nicht gäbe.
    Ich möchte das Ding halt richtig programmieren, und da sind dann so Sachen wie Zeitkonten, Minusstunden, Arbeitszeiten/Tag und so weiter.

    Vielleicht weiss einer von Euch Rat.

    PS: AutoIt Version 3.2.2.0

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™