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

Beiträge von merlinuwe

  • HotKeys in SciTE

    • merlinuwe
    • 17. Februar 2014 um 21:17

    Vielleicht ist dieses Tastaturkürzel noch ganz nützlich:

    Auskommentieren von markiertem Quelltext (auch über mehrere Zeilen):
    Ctrl-q oder - auf dem Nummernblock

    Liebe Grüße

    merlinuwe

  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • merlinuwe
    • 31. Dezember 2013 um 18:56

    name22: DANKE, es läuft!

    Habe das Programm ein wenig umgebaut, um es besser zu verstehen. Der Trick liegt anscheinend darin, dass Local Static $iInt = 32 bei jedem erneuten Aufruf der Funktion _AsciiCodeB() um 1 erhöht vorgefunden wird. Man, hat das gebraucht, bis ich es erkannt, nachgeschlagen und kapiert habe ...

    Ich fasse mal zusammen, wie (ich glaube, dass) der Ablauf ist:

    1. Der Anwender wählt im Tray-Menü den Eintrag ASCII aus.
    2. Weil das Script im TrayOnEventMode läuft, hat es schon die ganz Zeit darauf gelauert das ein Menüpunkt ausgewählt wird und ruft _AsciiCodeA() auf.
    3. _AsciiCodeA() sorgt dafür, dass alle 5 Sekunden _GenerateCodeIncrement() aufgerufen wird.
    4. _GenerateCodeIncrement() ruft wiederum _AsciiCodeB() auf, welches die eigentlich gewollte Berechnung (hier: Kodierungen) nur für den Wert 32 durchführt und die Variable für den nächsten Aufruf der Funktion auf 33 erhöht.
    5. AdlibUnRegister("_GenerateCodeIncrement") wird aufgerufen, damit die Berechnung nicht erneut von 32 aus beginnt. (Wie funktioniert das?)
    6. Nun könnte der Anwender im Tray-Menü z. B. den Eintrag Info3 auswählen. Der TryTip wird angezeigt und danach fährt die Berechnung der Kodierungen an der Stelle fort, an der sie ausgesetzt wurde. (Warum?)

    Kannst du mir die Schritte 5 und 6 nochmal genau erklären (sofern ich die Schritte 1- 4 richtig verstanden habe :wacko: )?

    misterspeed:

    Habe den ersten Vorschlag umgesetzt, er funktioniert!
    Aber wenn ich Informationen aus den ausgelagerten .exe-Dateien zurück in das aufrufende Skript zurückbekommen möchte, um sie dort auszuwerten wirft das Folgeprobleme auf, denen ich mich (ggf.: noch) nicht gewachsen fühle.

    Dein zweiter Ansatz ist nachvollziehbar, von mir als Einsteiger jedoch (ggf.: noch) nicht umsetzbar.
    DANKE auch dir!

    Uuups... Dinner 4-1 verpasst... :party:

    Schönen Abend noch und einen guten Rutsch

    Freundliche Grüße

    merlinuwe

  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • merlinuwe
    • 31. Dezember 2013 um 12:42

    Hi Raupi,

    danke für deinen Beitrag.

    Habe das Script mal mit TrayTip statt mit MsgBox versehen. Auch damit funktioniert der Aufruf der Funktionen nicht unabhängig voneinander. Selbst die Funktion ExitScript() wartet schön brav, bis alle anderen angeklickten Funktionen aufgerufen und beendet wurden.

    Freundliche Grüße

    merlinuwe

    Dateien

    TrayItemSetOn_traytip_statt_msgbox.au3 1,52 kB – 483 Downloads
  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • merlinuwe
    • 31. Dezember 2013 um 12:01

    Hi PuReIroNie,

    du bist ja schneller mit deiner Antwort dabei, als ich meinen eigenen Beitrag fertig bearbeitet habe ... ;)

    Heißt das, bei dir laufen die Funktionen völlig unabhängig voneinander?

    Ich habe mit AutoIt 3.3.10.2 gearbeitet, womit hast du es denn laufen lassen?

    Liebe Grüße

    merlinuwe

  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • merlinuwe
    • 31. Dezember 2013 um 11:49

    hi name22,
    hi alpines,

    vielen Dank für eure Tipps.

    Habe das Problem erst einmal vereinfacht, damit man nicht von dem Gesamtskript erschlagen wird und dann versucht, die Lösung mit

    [autoit]


    Opt("TrayOnEventMode", 1)

    [/autoit]


    und der Hilfefunktion umzusetzen:

    [autoit]


    ##NoTrayIcon

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

    Opt("TrayOnEventMode", 1)
    Opt("TrayMenuMode", 11) ; Standard Traymenüeinträge (Skript pausieren/beenden) werden nicht angezeigt.

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

    ;TraySetClick(16) ; Nur wenn die zweite Maustaste gedrückt wird, wird das Traymenü anzeigt.

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

    TrayCreateItem("Info1")
    TrayItemSetOnEvent(-1, "ShowInfo1")

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

    TrayCreateItem("Info2")
    TrayItemSetOnEvent(-1, "ShowInfo2")

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

    TrayCreateItem("")

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

    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "ExitScript")

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

    TraySetState()

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

    While 1
    Sleep(10) ; CPU-Last verhindern
    WEnd

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

    Exit

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

    ; Funktionen
    Func ShowInfo1()
    MsgBox(0, "Info1", "Tray OnEvent Demo")
    EndFunc ;==>ShowInfo

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

    Func ShowInfo2()
    MsgBox(2, "Info2", "Tray OnEvent Demo")
    EndFunc ;==>ShowInfo

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

    Func ExitScript()
    Exit
    EndFunc ;==>ExitScript

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

    Leider ist es immer noch nicht so, dass ich die Funktionen unabhängig voneinander aufrufen kann. Wenn ich Info1 aufrufe, erhalte ich das Messagefenster Info1. Wenn ich danach Info2 aufrufe (ohne das erste Fenster mit OK zu bestätigen) passiert (noch) nichts. Erst dann, wenn ich das Fenster Info1 mit "Ok" schließe, taucht das Fenster Info2 auf.

    Das Fenster Info2 soll aber angezeigt werden, auch wenn das Fenster Info1 noch nicht vom Anwender geschlossen wurde.

    Daraus schließe ich messerscharf, dass ich deine (name22) Problemlösung nicht richtig verstanden/umgesetzt habe.  :S

    Helft ihr mir bitte weiter?

    Freundliche Grüße

    merlinuwe

  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • merlinuwe
    • 30. Dezember 2013 um 23:28

    Hallo liebe Helfer,

    habe soeben ein Skript erstellt, welches ein Tray-Menü anlegt. Das komplette Skript ist auch beigefügt. Unter dem Menüpunkt "Dezimal, ..." kann man eine Funktion _AsciiCode() aufrufen.

    (Codeauszüge entfernt, merlinuwe; vgl. meinen Folgebeitrag)

    Zwei Fragen:

    • Was muss ich tun, damit ich, obwohl diese Funktion _AsciiCode() noch weiterläuft, sofort das Menü "Über" anzeigen kann? (Zurzeit läuft zunächst die Funktion _AsciiCode() weiter. Erst sobald diese beendet ist, erscheint das (zuvor ausgewählte) "Über"-Fenster.)
    • Wie kann ich das gesamte Programm abbrechen, ohne den kompletten Durchlauf der Funktion _AsciiCode() abzuwarten?


    Ich möchte quasi die Menüpunkte (Funktionen) des Tray-Menüs unabhängig voneinander aufrufen können.
    Freue mich auf jede Hilfe (z. B. einen Hinweis auf ein existierendes Tutorial zum Thema TrayMenü).

    Freundliche Grüße

    merlinuwe

    Dateien

    TrayApp0.2.au3 10,28 kB – 473 Downloads
  • sofortiges Beenden des Programms; flackerndes Label

    • merlinuwe
    • 20. August 2013 um 15:46

    Danke für die Hinweise. Hier ist das umgeschriebene, nun zur Zufriedenheit funktionierende Programm:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>

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

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

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

    Opt("GUIOnEventMode", 1) ; OnEvent-Funktionen werden nur aufgerufen, wenn die Option GUIOnEventMode auf 1 gesetzt ist
    Opt("GUICoordMode", 1) ; 1 = absolute Koordinaten (Standard) relativ zur Dialog Box.

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

    geschaeftsfaehigkeit()

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

    Func geschaeftsfaehigkeit()
    Global $nMsg, $newtext
    Global $radio1a, $radio1b, $radio1c, $radio2a, $radio2b, $radio2c ; Radio-Buttons
    Global $label1 ; Textfeld mit Ergebnis
    Local $r1a, $r1b, $r1c, $r2a, $r2b ; Handles der Radiobuttons
    Global $beendenbutton ; Handle des Beenden-Buttons

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

    GUICreate("Geschäftsfähigkeit ermitteln", 560, 240, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX)) ;

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

    GUICtrlCreateGroup("Alter eingrenzen" , 5, 5, 140, 100)
    $radio1a = GUICtrlCreateRadio("< 7 Jahre" , 10, 30, 120, 20)
    $radio1b = GUICtrlCreateRadio(">= 7 UND < 18 Jahre" , 10, 50, 120, 20)
    $radio1c = GUICtrlCreateRadio(">= 18 Jahre" , 10, 70, 120, 20)
    GUICtrlSetState($radio1b, $GUI_CHECKED) ; Checkbox aktivieren

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

    GUICtrlCreateGroup("Art der Geistestätigkeit", 5, 110, 545, 80)
    $radio2a = GUICtrlCreateRadio("nicht nur vorübergehende krankhafte Störung der Geistestätigkeit, die die freie Willensbestimmung ausschließt", 10, 135, 535, 20)
    $radio2b = GUICtrlCreateRadio("keine Störung der Geistestätigkeit", 10, 155, 535, 20)
    GUICtrlSetState($radio2b, $GUI_CHECKED) ; Checkbox aktivieren

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

    $beendenbutton = GUICtrlCreateButton("&Beenden", 495, 200) ; Beenden-Button
    GUICtrlSetOnEvent($beendenbutton, "_exit") ; Beenden des Programms über den Beenden-Button

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ; Beenden des Programms über das Kreuz oben rechts

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

    HotKeySet("{ESC}", "_exit") ; Damit man das Progamm auch mit ESC sofort beenden kann

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

    $label1 = GUICtrlCreateLabel($newtext, 10, 200, 145, 40) ; Das Textfeld, in dem das Ergebnis angezeigt wird

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

    GUISetState(@SW_SHOW) ; Anzeige der Dialogbox mit allen GUICtrlCreate ...

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

    While 1
    logik()
    UpdateTextControl($label1, $newtext)
    WEnd
    EndFunc ;==>geschaeftsfaehigkeit

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

    Func UpdateTextControl($label1, $newtext) ; damit das Label nicht flimmert wird die Variable $newtext nur bei einer tatsächlichen Änderung neu beschrieben
    If GUICtrlRead($label1) <> $newtext Then
    GUICtrlSetData($label1, $newtext)
    EndIf
    EndFunc ;==>UpdateTextControl

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

    Func _exit() ; Für das Beenden des Programms
    Exit 0
    EndFunc

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

    Func logik() ; hier liegt die juristische Logik des Problems

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

    $r1a = GUICtrlRead($radio1a) ; < 7
    $r1b = GUICtrlRead($radio1b) ; >=7 < 18
    $r1c = GUICtrlRead($radio1c) ; >= 18
    $r2a = GUICtrlRead($radio2a) ; krankhafte Störung der Geistestätigkeit
    $r2b = GUICtrlRead($radio2b) ; keine krankhafte Störung der Geistestätigkeit

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

    ;If (($r1a = 1 Or $r1b = 1 Or $r1c = 1) And $r2a = 1) Or ($r1a = 1) Then ; kompliziertere Lösung ...
    If $r1a = 1 Or $r2a = 1 Then ; einfachere Lösung
    $newtext = "geschäftsunfähig"

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

    ElseIf $r1b = 1 And $r2b = 1 Then
    $newtext = "beschränkt geschäftsfähig"

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

    ElseIf $r1c = 1 And $r2b = 1 Then
    $newtext = "geschäftsfähig"

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

    EndIf
    EndFunc

    [/autoit]

    Edit Oscar: Bitte bei längeren Scripten immer auch den Spoiler-Tag benutzen. Habe ich hier mal eingefügt.

  • sofortiges Beenden des Programms; flackerndes Label

    • merlinuwe
    • 20. August 2013 um 11:06

    Habe ein kleines Programm zum Thema Geschäftsfähigkeit gebastelt. Einige Aspekte bekomme ich nicht in den Griff:

    • Warum flackert der unten angezeigte Text (= das label)?
    • Warum funktioniert <Alt-e> nicht zum Beenden des Programms?
    • Warum dauert es so lange, bis ein Mausklick auf Beenden bzw. auf den Schließen-Button (x) das Programm beendet?
    • Warum sieht man beim Start den Text des Labels über dem Button?
    [autoit]

    #include <ButtonConstants.au3>#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>
    geschaeftsfaehigkeit()
    Func geschaeftsfaehigkeit() Global $nMsg, $newtext Local $radio1a, $radio1b, $radio1c, $radio2a, $radio2b, $radio2c ; Radio-Buttons Local $label1 ; Textfeld mit Ergebnis Local $r1a, $r1b, $r1c, $r2a, $r2b ; Handles der Radiobuttons Global $beendenbutton ; Handle des Beenden-Buttons
    GUICreate("Geschäftsfähigkeit", 560, 240, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX)) ; GUISetState(@SW_SHOW) ; Anzeige der leeren Dialogbox
    GUICtrlCreateGroup("Alter eingrenzen", 5, 5, 140, 100) $radio1a = GUICtrlCreateRadio("< 7 Jahre", 10, 30, 120, 20) $radio1b = GUICtrlCreateRadio(">= 7 UND < 18 Jahre", 10, 50, 120, 20) $radio1c = GUICtrlCreateRadio(">= 18 Jahre", 10, 70, 120, 20) GUICtrlSetState($radio1b, $GUI_CHECKED) ; Checkbox aktivieren
    GUICtrlCreateGroup("Art der Geistestätigkeit", 5, 110, 545, 80) $radio2a = GUICtrlCreateRadio("nicht nur vorübergehende krankhafte Störung der Geistestätigkeit, die die freie Willensbestimmung ausschließt", 10, 135, 535, 20) $radio2b = GUICtrlCreateRadio("keine Störung der Geistestätigkeit", 10, 155, 535, 20) GUICtrlSetState($radio2b, $GUI_CHECKED) ; Checkbox aktivieren
    $beendenbutton = GUICtrlCreateButton("B&eenden", 495, 200) ; Beenden-Button
    While 1 $iOldOpt = Opt("GUICoordMode", 1) Sleep(800) beenden()
    $r1a = GUICtrlRead($radio1a) ; < 7 $r1b = GUICtrlRead($radio1b) ; >=7 < 18 $r1c = GUICtrlRead($radio1c) ; >= 18 $r2a = GUICtrlRead($radio2a) ; krankhafte Störung der Geistestätigkeit $r2b = GUICtrlRead($radio2b) ; keine krankhafte Störung der Geistestätigkeit

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

    If (($r1a = 1 Or $r1b = 1 Or $r1c = 1) And $r2a = 1) Or ($r1a = 1) Then $newtext = "geschäftsunfähig"
    ElseIf $r1b = 1 And $r2b = 1 Then $newtext = "beschränkt geschäftsfähig"
    ElseIf $r1c = 1 And $r2b = 1 Then $newtext = "geschäftsfähig"
    EndIf
    GUICtrlSetPos($label1, 20, 200) ;UpdateTextControl($label1, $newtext) $label1 = GUICtrlCreateLabel($newtext, -1, -1, 145, 40) ; ;GUISetState(@SW_UNLOCK) WEnd ExitEndFunc ;==>geschaeftsfaehigkeit

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

    Func UpdateTextControl($label1, $newtext) If GUICtrlRead($label1) <> $newtext Then GUICtrlSetData($label1, $newtext) EndIfEndFunc ;==>UpdateTextControl

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

    Func beenden()
    $nMsg = GUIGetMsg() ; Aktuelles GUI Event abfragen Switch $nMsg ; Welches Event ist eingetreten? Case $GUI_EVENT_CLOSE ; Schließen-Button (X oben rechts) Exit ; Beenden Case $beendenbutton ; Klick auf Beenden-Button? Dann... Exit ; Beenden Case Else ; do nothing ... EndSwitchEndFunc ;==>beenden

    [/autoit]
  • Einfache Lösung für das Abspielen eines mp4-Videos

    • merlinuwe
    • 23. Juli 2013 um 20:32

    Liebe Helfer,

    gerade versuche ich eine Videodatei aus einem autoit Skript aufzurufen.

    Dieser cmd-Aufruf funktioniert:

    C:\Program Files\VideoLAN\VLC>vlc -vvv "C:\Users\User\Dropbox\Scriptprogrammierung\AutoIt0.1\AlterBerechnen\video\For_hes_a_jolly_good_fellow.mp4

    Aber dieser Aufruf unter autoit3 nicht:

    [autoit]


    $film=@ScriptDir&"\video\For_hes_a_jolly_good_fellow.mp4"
    $parameter=" - vvv "

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

    ShellExecuteWait(@ProgramFilesDir & "\VideoLAN\VLC\vlc" &'"'&$parameter & $film&'"') ; funktioniert nicht
    ShellExecuteWait("C:\Program Files\VideoLAN\VLC\vlc -vvv" & "C:\Users\User\Dropbox\Scriptprogrammierung\AutoIt0.1\AlterBerechnen\video\For_hes_a_jolly_good_fellow.mp4") ; funktioniert auch nicht

    [/autoit]

    Hat vielleicht jemand eine möglichst einfache Lösung zur Umsetzung? Das Video soll (möglichst) im Fullscreen Modus ausgeführt werden. Danach kann das Fenster geschlossen werden und das autoit Skript soll weiterlaufen.

    -merlinuwe

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™