Trayicon Doppelklick von einfachklick unterscheiden

  • Hallo,
    ich bin gerade dabei, ein kleines Programm für das Backup aller gespeicherten Versionen von Dateien (wie z.B. *.au3) zu schreiben.
    Das klappt auch schon fast wie gewünscht, aber eben nur fast!
    Das Problem:

    Ein einfachklick aufs Trayicon soll einen Backup-Lauf "außer der Reihe" auslösen, ein Doppelklick den letzten Stand markieren.

    Codeausschnitt

    [autoit]


    Opt("TrayMenuMode",1)
    opt("TrayOnEventMode",1)
    .
    .
    $trayeinstellungen = TrayCreateItem("Einstellungen")
    TrayItemSetOnEvent($trayeinstellungen,"einstellungen")
    TrayCreateItem("")

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

    $Trayueber = TrayCreateItem("Über")
    TrayItemSetOnEvent($Trayueber,"ueber")
    TrayCreateItem("")

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

    $traypause = TrayCreateItem("Pause")
    TrayItemSetOnEvent($traypause,"paus")
    TrayCreateItem("")

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

    $trayende = TrayCreateItem("Beenden")
    TrayItemSetOnEvent($trayende,"ende")

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

    TraySetOnEvent(-7,"trayklick")
    TraySetOnEvent(-13,"traydoppelklick")

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

    traySetClick (8)
    TraySetState()
    .
    .
    .
    func traydoppelklick()
    $kennz=1
    MsgBox("","doppelklick",$kennz)
    backupnow()
    $kennz=0
    EndFunc

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

    func trayklick()
    sleep(500)
    MsgBox("","klick",$kennz)
    if $kennz = 1 then Return
    backupnow()
    EndFunc

    [/autoit]

    Nun passiert es aber immer, daß beim Doppelklick zuerst die func des einfachklicks aufgerufen wird und danach die des Doppelklicks.
    Der Einfachklick funtioniert, nur beim Doppelklick erscheint zuerst die MsgBox des E-Klicks mit $kennz = 0, danach die Box des D-klicks mit einer 1.
    Ist ja eigentlich auch logisch, bevor die erste func nicht abgearbeitet ist, wird die zweite nicht aufgerufen. Wie bewerkstellige ich es aber, daß bein D-klick nicht auch der E-klick abgearbeitet wird?
    Vielen Dank schon mal
    Der Hexer

  • also zum Einen ist dein Script-Ausschnitt nicht lauffähig.
    Ich habe keine Lust das erst zurecht zu biegen.

    Zum Anderen ist die Entscheidung über die Ansteuerung vielleicht schon das Problem.
    ich würde nie 2 unterschiedliche Funktionen nur durch die Unterscheidung 1-klick / doppelklick.
    Das ist schon aus Usersicht äußerst fehlerträchtig.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hallo Schnuffel,
    der Schnipsel sollte auch nur einen Versuch darstellen. Das Problem ist ja, daß einem D-klick ja zwangsweise ein E-klick vorausgeht, was von AutoIt offensichtlich nicht berücksichtigt wird. Wozu sonst die Unterscheidung?
    Die eigentliche Erkennung des D-klicks klappt ja. Welche Möglichkeiten bleiben? Wird die mittlere Maustaste irgendwie unterstützt? Wäre eine Alternative. Sonst bleibt wohl doch nur der Weg übers Traymenü.
    MfG
    der Hexer