Um das zu verhindern musst du auch auf Systemebene eingreifen und das mittels Hook abfangen.
Globale Hotkeys werden ignoriert, wenn man Acceleratoren benutzt.
Im Grunde ist das ja auch hooking, aber das übernimmt AutoIt für uns und zwar ohne viel Aufwand.
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
$Form1 = GUICreate("Form1", 148, 144, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 121, 21); Ctrl+a Text selektieren
$Input2 = GUICtrlCreateInput("Input2", 8, 40, 121, 21);Ctrl+b Text selektieren
$Input3 = GUICtrlCreateInput("Input3", 8, 72, 121, 21)
$Label1 = GUICtrlCreateLabel("Label1", 8, 104, 124, 17)
$Dummy1 = GUICtrlCreateDummy()
$Dummy2 = GUICtrlCreateDummy()
Local $aAccelKeys[2][2] = [["^a", $Dummy1],["^b", $Dummy2]]
GUISetAccelerators($aAccelKeys)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$sFocus = ControlGetFocus($Form1)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Dummy1
If $sFocus = "Edit1" Then
_GUICtrlEdit_SetSel(GUICtrlGetHandle($Input1), 0,-1)
EndIf
Case $Dummy2
If $sFocus = "Edit2" Then
_GUICtrlEdit_SetSel(GUICtrlGetHandle($Input2), 0,-1)
EndIf
EndSwitch
WEnd
Alles anzeigen
Im Beispiel wird Ctrl+a für das 1. Input und Ctrl+b für das 2. Input verwendet, um den Inhalt zu selektieren. .
Solange die GUI den Focus hat, gelten die Hotkeys nur für diese.
Wenn die GUI nicht den Focus hat, gelten die Globalen HotKeys.
Acceleratoren werden meiner Meinung nach viel zu wenig benutzt, obwohl sie sehr praktisch sind.
Ein Hotkey in einem Scirpt sollte auch nur für die drin verwendete GUI gelten.
HotKeySet verwende ich nur, wenn es nicht anders geht oder ich wirklich einen systemweiten brauche.