Delphi 2007 -Общесистемная горячая клавиша НЕ является «системной -общедоступной», если установлено «MainFormOnTaskBar := True»

У меня есть проект Delphi 2007, который годами отлично работал на Windows XP, Vista и "7". Это было обновление с Delphi 5, поэтому «MainFormOnTaskBar» по умолчанию было «false» (. ​​Я никогда не менял его в DPR ). В этом сценарии системная -горячая клавиша работала «системно -широко» со следующим кодом в обработчике событий OnCreate основной формы.

HotKey_xyz := GlobalAddAtom('Hotkey_xyz');
if NOT RegisterHotKey(Self.Handle, HotKey_xyz, MOD_CONTROL, VK_F12) then
    ShowMessage('Unable to register Control-F12 as system-wide hot key') ;

(I have GlobalDeleteAtom() and UnregisterHotKey() in Form.OnDestroy as expected.)

Теперь мне нужно, чтобы форма отображала собственную кнопку на панели задач, поэтому я установил «Application.MainFormOnTaskBar := True» в DPR. Это работает, как и ожидалось. Однако это имеет побочный -эффект, заключающийся в том, что элемент управления -F12 НЕ работает в системе -, он работает, ТОЛЬКО ЕСЛИ мое приложение имеет фокус (, поэтому оно больше НЕ является «системным -в масштабе».)

Я провел тщательный поиск в сети и нашел множество статей о том, как/почему «MainFormOnTaskBar» влияет на поведение некоторых подчиненных/модальных форм. Однако я ничего не нашел о его влиянии на проблему «System -Wide Hot Key», которую я описал выше. Я протестировал и повторно протестировал свое приложение, установив для MainFormOnTaskBar значения true и false, в то время как все остальное остается точно таким же. Я могу с уверенностью подтвердить, что описанная выше проблема с широкой горячей клавишей System -связана с флагом MainFormOnTaskBar.

Я буду весьма признателен за любые указания относительно работы -вокруг. Мне нужны ОБА -системная -широкая горячая клавиша И форма с собственной кнопкой на панели задач.

Большое спасибо.

9
задан Danilo Casa 28 October 2016 в 11:27
поделиться