Moin Alexander,
hiermit sollte es jetzt gehen.
Übergeben wird, wie gehabt, THotKey.Hotkey, der Rückgabewert ist von einem selbst definierten Typ, der zwei Felder enthält, eines für die Modifier Kombination, das andere für den virtuellen Tastencode.
Code:
[b]type[/b]
TcsWinHotKey =
[b]packed[/b] [b]record[/b]
dwModifier : DWORD;
dwVK : DWORD;
[b]end[/b];
Code:
[b]function[/b] ConvertPascalShortCut([b]const[/b] p_scIN : TShortCut) : TcsWinHotKey;
[b]const[/b]
_iModifier : [b]array[/b] [0..7] [b]of[/b] integer = (
0,
MOD_SHIFT,
MOD_CONTROL,
MOD_SHIFT [b]or[/b] MOD_CONTROL,
MOD_ALT,
MOD_SHIFT [b]or[/b] MOD_ALT,
MOD_CONTROL [b]or[/b] MOD_ALT,
MOD_SHIFT [b]or[/b] MOD_CONTROL [b]or[/b] MOD_ALT
);
[b]begin[/b]
Result.dwModifier := p_scIN;
[color=#000080]// Die für Modifier entscheidenden Stellen herausfiltern[/color]
Result.dwModifier := Result.dwModifier [b]and[/b] $0000FF00;
[color=#000080]// an die richtige Stelle schieben[/color]
Result.dwModifier := Result.dwModifier [b]shr[/b] 14;
[color=#000080]// und den richtigen Modifier aus der Tabelle holen[/color]
Result.dwModifier := _iModifier[Result.dwModifier];
[color=#000080]// Virtual Key herausfiltern[/color]
Result.dwVK := p_scIN [b]and[/b] $000000FF;
[b]end[/b];