Это для Delphi 10.3, может работать и в других версиях.
Я не знаю, заметили ли вы, но всякий раз, когда ваш код достигает процедуры FormCreate, ваше приложение FMX уже создает кнопку на панели задач, по крайней мере, в Delphi 10.3.3 Rio, чего мы могли бы и не делать. как. Поэтому, если вы используете предложенные методы, ваше приложение быстро отобразит свой значок на панели задач, чтобы скрыть его.
Поэтому, если у вас есть доступ к файлам исходного кода Delphi VCL/FMX, и вы не хотите, чтобы значок панели задач вашего приложения отображался даже на миллисекунду, вам просто нужно изменить FMX.Platform.Win.pas
файл, расположенный в каталоге c:\Program Files (x86)\Embarcadero\Studio\20.0\source\fmx\
, а затем скопировать его в свои проекты. каталог, поэтому он будет выбран вместо исходного, и измените функцию CreateAppHandle
, как предлагается ниже:
function TPlatformWin.CreateAppHandle: HWND;
var
...
begin
...
Result := CreateWindowEx(WS_EX_WINDOWEDGE or WS_EX_APPWINDOW, FMAppClass.lpszClassName, PChar(FTitle),
WS_POPUP or WS_GROUP, 0, 0, 0, 0, GetDesktopWindow, 0, hInstance, nil);
if FApplicationHWND = 0 then // modified/added line
Winapi.Windows.ShowWindow(Result, SW_HIDE) // modified/added line
else // modified/added line
Winapi.Windows.ShowWindow(Result, SW_SHOWNORMAL);
end;
Вот и все, вам не понадобятся другие методы, обратите внимание, что он также имеет CreateWindowEx
, передающий стили для вашего окна, если вы хотите скрыть его и из списка Alt-Tab, вместо этого замените WS_EX_APPWINDOW
на WS_EX_TOOLWINDOW
.
person
vhanla
schedule
25.01.2021