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