Tastenkombination NUR INNERHALB Script abfragen?

  • Hallo, schönen Abend,

    ich habe in einem Skript mehrere Tabs und würde gerne jedes Tab nicht nur mit Maus sondern auch mit Alt + Buchstabe des Tabnamens aufrufen können.

    HotkeySet funktioniert auch wenn das Script nicht aktiv ist - das will ich aber nicht.

    IfPressed geht nicht mit Tastenkombinationen (oder?)

    Was gibt es noch für eine Möglichkeit?


    [autoit]


    ; Hier im Beispiel möchte ich konkret mit Alt-1 / Alt-2 / Alt3 die entsprechenden Tabs aktivieren.

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

    #include <GUIConstants.au3>
    ; == GUI generated with Koda ==
    $Form1 = GUICreate("Testscript", 460, 297, 237, 142)

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

    $Tab1 = GUICtrlCreateTab(16, 24, 425, 257)
    GUICtrlCreateTabItem("1.Tab")

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

    GUICtrlCreateTabItem("2.Tab")

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

    GUICtrlCreateTabItem("3.Tab")

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

    GUISetState(@SW_SHOW)
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;;;;;
    EndSelect
    WEnd
    Exit

    [/autoit]


    Vielen Dank
    viele Grüße
    Carsten

  • sorry das ich nicht helfen kann, jedoch fällt mir bei dieser frage auch was ein, das ich fragen wollte.

    und zwar habe ich in verschiedenen scripten hotkeys gesetzt, zusätzlich ne tastatur mit funktionstasten (F-tasten können doppelt genutzt werden).

    nun hab ich eins meiner tools auf, wo, wie bei vielen programmen, eine aktualisierung per F5 vorgenommen werden soll. geht natürlich wunderbar. wenn das scipt aber nicht aktiv ist, soll das script natürlich nicht auf F5 reagieren ... gibt es dafür eine möglichkeit?

  • Kannst Du nicht in der Func des Hotkeys einfach abfragen ob das Fenster aktiv oder existent ist?

    Das habe ich mir nämlich auch schon überlegt. Doch ist die Tastenkombination dann dennoch für alle Programme reserviert - es passiert halt nur was wenn das gewünschte Fenster aktiv / vorhanden ist.......

    Vielleicht aber eine Lösung für Dich.

    Grüße
    Carsten


    Nachtrag: Da du nur 1 Taste hast, könntest Du mit '_ifpressed' arbeiten. Das ist immer nur bei aktivem Script präsent - Infos gibt es hier im Board dazu genug.......

    Einmal editiert, zuletzt von Carsten (15. August 2007 um 22:59)

  • Hi! Ich kann mich ganz doof anstellen, aber sollte das hier nicht für die Kombination "ALT + 1" gehen?

    [autoit]

    If _IsPressed("12") And _IsPressed("31") Then

    [/autoit]

    Das kann man ja noch um ein WinActive ergänzen.

    Grüße

    Einmal editiert, zuletzt von unearth (15. August 2007 um 23:23)

  • ömmm


    [autoit]


    hotkeyset("deinhotkex","_deinefunktion")

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

    func _deinefunktion()
    if wingettitle("") = "dein guititel" then
    ;hotkey ist bei aktiver gui gedrückt
    else
    hotkeyset("deinhotkey")
    send("deinhotkey")
    hotkeyset("deinhotkey","_deinefunktion")
    endif
    endfunc

    [/autoit]


    hth

  • Hallo,
    danke für die Infos.

    unearth:
    Na das kann meines Erachtes nicht gehen, da ja immer nur ein Wert übermittelt wird. Man müsste sie kurz nacheinander abfragen - aber das ist eine wackelige Geschichte. Probiert habe ich es allerdings nicht.


    @derda:
    Das ist zwar um's Eck gedacht, aber eine gute Idee. Mir wäre es allerdings lieber, wenn es nicht 'um mehrere Ecken' ginge. Allerdings funktioniert mit dieser Technik z.B. in SciTE die Alt-S (Menü Search) nicht mehr - er öffnet das Menü und schließt es gleich wieder, d.h. keine Chance die Untermenüs aufzurufen.


    Ich bin also so weit wie vorher...... schade, wo ich doch so tastaturorientiert bin....


    Nachtrag:
    ICH HABE EINE LÖSUNG...... inspiriert durch 'derda'. Das ein- + ausschalten ist gut, aber etwas anders......

    [autoit]


    ;#Include <GuiList.au3>
    #include <GUIConstants.au3>

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

    $fenstername = "Test"

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

    ;Hotkeys definieren
    $statusfenster = 0
    global $def_taste1 = "!1"
    global $def_taste2 = "!2"
    global $def_taste3 = "!3"
    global $def_taste4 = "!4"
    global $def_eing1 = "!a"
    global $def_eing2 = "!b"
    global $def_eing3 = "!s"
    global $def_eing4 = "!f"

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

    ; GUI erstellen
    $Form1 = GUICreate($fenstername, 600, 458, -1, -1)

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

    $spalte = 50
    $zeile = 20

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

    $knopf1 = GUICtrlCreateButton("Knopf 1 (Alt-1)", $spalte, $zeile, 80, 20 )
    $eingabe1 = GUICtrlCreateInput("", $spalte+150, $zeile, 280, 20)
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUICtrlCreateLabel("(Alt-a)",$spalte+450,$zeile,60,20)

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

    $zeile = $zeile + 40
    $knopf2 = GUICtrlCreateButton("Knopf 2 (Alt-2)", $spalte, $zeile, 80, 20 )
    $eingabe2 = GUICtrlCreateInput("", $spalte+150, $zeile, 280, 20)
    GUICtrlCreateLabel("(Alt-b)",$spalte+450,$zeile,60,20)

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

    $zeile =$zeile+ 40
    $knopf3 = GUICtrlCreateButton("Knopf 3 (Alt-3)", $spalte, $zeile, 80, 20 )
    $eingabe3 = GUICtrlCreateInput("", $spalte+150, $zeile, 280, 20)
    GUICtrlCreateLabel("(Alt-s)",$spalte+450,$zeile,60,20)

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

    $zeile =$zeile+ 40
    $knopf4 = GUICtrlCreateButton("Knopf 4 (Alt-4)", $spalte, $zeile, 80, 20 )
    $eingabe4 = GUICtrlCreateInput("", $spalte+150, $zeile, 280, 20)
    GUICtrlCreateLabel("(Alt-f)",$spalte+450,$zeile,60,20)

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

    GUISetState(@SW_SHOW, $Form1)
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop


    case $msg = $knopf1
    msgbox(4096,"Hinweis "&$fenstername,"Aktiviert wurde Knopf 1")

    case $msg = $knopf2
    msgbox(4096,"Hinweis "&$fenstername,"Aktiviert wurde Knopf 2")

    case $msg = $knopf3
    msgbox(4096,"Hinweis "&$fenstername,"Aktiviert wurde Knopf 3")

    case $msg = $knopf4
    msgbox(4096,"Hinweis "&$fenstername,"Aktiviert wurde Knopf 4")

    EndSelect

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

    ; der Schalter 'Statusfenster' verhindert das ständige durchlaufen (Ressourcenschonung)
    if wingettitle("") = $fenstername and $statusfenster = 0 then ; wenn Fenster aktiv, Tastenkombis AKTIVIEREN
    ToolTip("Tastenkombination ist EIN")
    hotkeyset($def_taste1,"taste_01")
    hotkeyset($def_taste2,"taste_02")
    hotkeyset($def_taste3,"taste_03")
    hotkeyset($def_taste4,"taste_04")
    hotkeyset($def_eing1,"taste_eing01")
    hotkeyset($def_eing2,"taste_eing02")
    hotkeyset($def_eing3,"taste_eing03")
    hotkeyset($def_eing4,"taste_eing04")
    $statusfenster = 1
    EndIf
    if wingettitle("") <> $fenstername and $statusfenster = 1 then ; andernfalls deaktivieren
    ToolTip("Tastenkombination ist AUS")
    hotkeyset($def_taste1)
    hotkeyset($def_taste2)
    hotkeyset($def_taste3)
    hotkeyset($def_taste4)
    hotkeyset($def_eing1)
    hotkeyset($def_eing2)
    hotkeyset($def_eing3)
    hotkeyset($def_eing4)
    $statusfenster = 0
    endif

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

    WEnd
    Exit

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

    func taste_01()
    GUICtrlSetState($knopf1,$GUI_FOCUS) ; in Focus setzen
    endfunc

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

    func taste_02()
    GUICtrlSetState($knopf2,$GUI_FOCUS)
    endfunc

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

    func taste_03()
    $msg = $knopf3 ; sofort aktivieren
    endfunc

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

    func taste_04()
    $msg = $knopf4 ; sofort aktivieren
    endfunc

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

    func taste_eing01()
    GUICtrlSetState($eingabe1,$GUI_FOCUS)
    EndFunc

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

    func taste_eing02()
    GUICtrlSetState($eingabe2,$GUI_FOCUS)
    EndFunc

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

    func taste_eing03()
    GUICtrlSetState($eingabe3,$GUI_FOCUS)
    EndFunc

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

    func taste_eing04()
    GUICtrlSetState($eingabe4,$GUI_FOCUS)
    EndFunc

    [/autoit]


    Grüße
    Carsten

    2 Mal editiert, zuletzt von Carsten (25. August 2007 um 13:43)