funktion durch drücken einer beliebigen taste/mausaktion aufrufen?

  • hallo,
    ich möchte in einem die funktion einbauen, dass es bei jeglicher benutzerinteraktion eine funktion aufruft. also vergleichbar mit einem bildschirmschoner. gibts es da eine HotKeySet("all", "funktion") funktion oder so?

    danke im vorraus

    moschieee

    Einmal editiert, zuletzt von moschieee (28. Oktober 2008 um 22:19)

  • Aus dem englischen Forum:

    [autoit]

    #include <misc.au3>
    $dll = DllOpen("user32.dll")

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

    Func _IsAnyKeyPressed($start = 0, $end = 255)
    For $i = $start to $end
    if (_IsPressed(Hex($i), $dll)) Then return $i
    Next
    return -1
    EndFunc

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

    while(true)
    Local $val
    $val = _IsAnyKeyPressed()
    if ( $val > -1 ) Then
    MsgBox(0, "", "You press the " & Chr($val) & " key.")
    EndIf
    WEnd

    [/autoit]
  • von der grundfunktion ist es dem was ich haben möchte schon recht ähnlich. aber das problem ist, dass mein skript verschiedene aktionen ausführen soll und erst wenn eine benutzerinteraktion stattfindet soll eine besondere funktion ausgeführt werden.
    bei dem von dir geposteten code hängt er ja die ganze zeit in einer schleife. :(

    kennt da jemand eine möglichkeit, wie ich dieses problem lösen kann?

  • Wo ist da das Problem?

    [autoit]

    #include <misc.au3>
    $dll = DllOpen("user32.dll")
    Sleep(1000)

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

    Func _IsAnyKeyPressed($start = 0, $end = 255)
    For $i = $start to $end
    if (_IsPressed(Hex($i), $dll)) Then return $i
    Next
    return -1
    EndFunc

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

    while(true)
    Local $val
    $val = _IsAnyKeyPressed()
    if ( $val > -1 ) Then
    Do_something()
    EndIf
    WEnd

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

    Func Do_something()
    MsgBox(0,"","Irgendetwas wurde gedrückt, sonst wäre dieses Fenster nicht zu sehen!")
    ;Installiere 20 Programme
    Exit
    EndFunc

    [/autoit]
  • hmmm...
    habe ich jetzt einen denkfehler drin!? :)

    aaalso:
    mein skript macht seine arbeit. sobald eine taste gedrückt oder die maus bewegt wird soll eine andere funktion aufgerufen werden.

    bei deinem code hängt er doch die ganze zeit im einer schleife, sodass mein skript nebenbei nichts anderes erledigen kann.
    hoffe mein problem wird ersichtlich ;)

  • Aha, jetzt hab ich dich verstanden. Mein Beispiel führt das Skript aus, dann wartet es auf eine Eingabe, dann macht es weiter.

    Noch ein Beispiel:

    [autoit]

    #include <misc.au3>
    $dll = DllOpen("user32.dll")

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

    For $i = 5 To 1 Step -1
    ToolTip("In "&$i&" Sekunden geht's weiter")
    Sleep(1000)
    Next
    ToolTip("Ich, das Skript, warte bis du irgendetwas drückst, bevor ich weitermache")

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

    While 1
    Local $val
    $val = _IsAnyKeyPressed()
    if ( $val > -1 ) Then
    Do_something()
    EndIf
    WEnd

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

    Func Do_something()
    ToolTip("So hier geht das Skript weiter!")
    MsgBox(0,"","Irgendetwas wurde gedrückt, sonst wäre dieses Fenster nicht zu sehen!")
    ;Also alles hier rein was noch zu erledigen ist!
    Exit
    EndFunc

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

    Func _IsAnyKeyPressed($start = 0, $end = 255)
    For $i = $start to $end
    if (_IsPressed(Hex($i), $dll)) Then return $i
    Next
    return -1
    EndFunc

    [/autoit]


    Du musst aber etwas mit Hotkeyset basteln und zyklisch die Mausposition abfragen. Das ist jetzt ein klein wenig schwieriger, aber auch zu schaffen. Ich habe jetzt leider keine Zeit, dir ein solches Beispiel zu basteln, vllt später oder jemand anderes!?

    mfg funkey

  • Da gibt's ja die super Funktion AdLibEnable, hatte ich ja ganz vergessen, damit kann das Programm normal ablaufen und zyklisch überprüft werden, ob ein Key gedrückt wurde.

    [autoit]

    #include <misc.au3>
    Global $dll = DllOpen("user32.dll")

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

    AdlibEnable("_IsAnyKeyPressed",100)

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

    $j = 99
    While 1
    ToolTip("In "&$j&" Sekunden ist das Skript aus!")
    Sleep(1000)
    $j -= 1
    ;Also alles hier rein was noch zu erledigen ist!
    WEnd

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

    AdlibDisable()
    DllClose($dll)

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

    Func _IsAnyKeyPressed()
    For $i = 0 to 255
    if (_IsPressed(Hex($i), $dll)) Then Do_something()
    Next
    EndFunc

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

    Func Do_something()
    MsgBox(0,"","Irgendetwas wurde gedrückt, sonst wäre dieses Fenster nicht zu sehen!")
    EndFunc

    [/autoit]
  • dankeschön. hat funktioniert!
    seh bei dem aufbau noch nich ganz durch. aber es geht. werd mich mal mit dem skript mal auseinandersetzen, damit ich es auch verstehe und nicht nur nutze ;)