Very nice! However, you can simplify it a bit:
Code:
gui +AlwaysOnTop
gui font, Arial Bold S14
Gui Add, Button, x5 y5 w36 h29 gButton, 7
Gui Add, Button, x5 y35 w36 h29 gButton, 4
Gui Add, Button, x5 y65 w36 h29 gButton, 1
Gui Add, Button, x5 y95 w36 h29 gButton, 0
Gui Add, Button, x44 y5 w36 h29 gButton, 8
Gui Add, Button, x44 y35 w36 h29 gButton, 5
Gui Add, Button, x44 y65 w36 h29 gButton, 2
Gui Add, Button, x44 y95 w36 h29 gButton vSPACE
Gui Add, Button, x83 y5 w36 h29 gButton, 9
Gui Add, Button, x83 y35 w36 h29 gButton, 6
Gui Add, Button, x83 y65 w36 h29 gButton, 3
Gui Add, Button, x83 y95 w36 h29 gButton, .
Gui Add, Button, x122 y5 w36 h29 gButton, /
Gui Add, Button, x122 y35 w36 h29 gButton, *
Gui Add, Button, x122 y65 w36 h29 gButton, -
Gui Add, Button, x122 y95 w36 h29 gButton, +
Gui Add, Button, x5 y125 w75 h30 gButton, =
Gui Add, Button, x83 y125 w75 h30 gButton, Enter
Gui Show, x446 y264 h160 w160, Numeric KeyPad
WinActivate Numeric KeyPad
return
; SEND KEYS TO EXCEL
Button:
WinActivate Microsoft Excel
Send {%A_GuiControl%}
Return
GuiClose:
ExitApp
Here is an enhanced version. It works in any window: a timer subroutine saves the ID of the active window four times a second, if it is not the keypad. When you click on a keypad button, the last window gets activated and the keypad key is sent to there.
Code:
SetTimer GetActiveWindow
gui +AlwaysOnTop
gui font, Arial Bold S14
Gui Add, Button, x5 y5 w36 h29 gButton, 7
Gui Add, Button, x5 y35 w36 h29 gButton, 4
Gui Add, Button, x5 y65 w36 h29 gButton, 1
Gui Add, Button, x5 y95 w36 h29 gButton, 0
Gui Add, Button, x44 y5 w36 h29 gButton, 8
Gui Add, Button, x44 y35 w36 h29 gButton, 5
Gui Add, Button, x44 y65 w36 h29 gButton, 2
Gui Add, Button, x44 y95 w36 h29 gButton vSPACE
Gui Add, Button, x83 y5 w36 h29 gButton, 9
Gui Add, Button, x83 y35 w36 h29 gButton, 6
Gui Add, Button, x83 y65 w36 h29 gButton, 3
Gui Add, Button, x83 y95 w36 h29 gButton, .
Gui Add, Button, x122 y5 w36 h29 gButton, /
Gui Add, Button, x122 y35 w36 h29 gButton, *
Gui Add, Button, x122 y65 w36 h29 gButton, -
Gui Add, Button, x122 y95 w36 h29 gButton, +
Gui Add, Button, x5 y125 w75 h30 gButton, =
Gui Add, Button, x83 y125 w75 h30 gButton, Enter
Gui Show, x446 y264 h160 w160, Key±Pad
WinActivate Key±Pad
WinGet KPID, ID, A
return
; SEND KEYS
Button:
WinActivate ahk_id %LastID%
Send {%A_GuiControl%}
Return
GuiClose:
ExitApp
GetActiveWindow:
WinGet ID, ID, A
IfNotEqual ID,%KPID%, SetEnv LastID,%ID%
Return