Jump to content

Catch function keys only when script has focus, otherwise do not handle ?


Recommended Posts

I have a small script that works using function keys (not related to gaming or keylogging).  I set the keys using something like

Opt ('GUIoneventmode', 1)
HotKeySet("{F4}", "_functionF4")

This is all good. But at times I wish to have my script open, and use other software on same machine. These other software may use function keys as well.

Problem is that AutoIT has "captured" the function key, and thereby, the function key won't do anything in the other program.


My question is: what is best approach to "not handle" the hotkeys when autoIT script is not focused ? And pass on keypress to the other software ?

I could of course add a timer/ event to check for focus and set /unset hotkeys, but I think there should be a simpler way ?


I am just a hobby programmer, and nothing great to publish right now.

Link to comment
Share on other sites

  • Moderators


Look at GUISetAccelerators in the Help file - that could well be what you are looking for.


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:


ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area


Link to comment
Share on other sites

There is multiple ways to skin this particular cat (proverbial expression on AutoIt forum ;)).  Here one of them - clean - simple :

#include <GUIConstants.au3>


Func Example()
    GUICreate("Test", 225, 80)

    Local $idF4 = GUICtrlCreateDummy()
    Local $idF5 = GUICtrlCreateDummy()
    Local $idExit = GUICtrlCreateButton("Exit", 150, 50, 65, 25)

    Local $aAccelKeys[2][2] = [["{F4}", $idF4], ["{F5}", $idF5]]

    GUISetState(@SW_SHOW) ; Display the GUI.

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idExit
            Case $idF4
                ConsoleWrite("F4 was pressed" & @CRLF)
            Case $idF5
                ConsoleWrite("F5 was pressed" & @CRLF)
EndFunc   ;==>Example


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...