Попробовал такой подход: в обработчик OnKeyDown формы поставил такой код:
Код:
function Tdm.AltDown : Boolean;
var
State : TKeyboardState;
begin
GetKeyboardState(State);
Result := ((State[vk_Menu] and 128) <> 0);
if Result then
begin
beep;
State[vk_Menu] := 0; // (State[vk_Menu] and not 128);
SetKeyboardState(State);
end;
end;
По идее, судя по коду определения нажатия Alt, это самое состояние задаётся битом 7 байта "vk_Menu". Как инверсия бита, так и обнуление всего байта с последующей записью обратно в массив с помощью ф-ции SetKeyboardState не дали эффекта - Alt не подавляется. Но подход новый, я такого ещё не пробовал, может это и правильное направление...