Я нашел ответ. Это смешно. около 2 дней, которые я ищу, и не успел найти ответ после того, как я разместил свой вопрос. Я отвечаю на него сам, может быть, это полезно другому человеку.
Я нашел этот код на этой странице https://github.com/vintagedave/firemonkey-container/blob/master/Parnassus.FMXContainer.pas
function EnumWindowCallback(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
const
FMXClassName = 'TFMAppClass';
var
ProcessID : DWORD;
ClassName : string;
ClassNameLength : NativeInt;
begin
// XE4 (possibly others) show a phantom TFMAppClass window on the taskbar. Hide it.
// Ensure the one we hide belongs to this thread/process - don't damage other FMX apps
if (GetWindowThreadProcessId(hWnd, ProcessID) = GetCurrentThreadId) and (ProcessID = GetCurrentProcessId) then begin
// Thanks to the ubiquitous David Heffernan... http://stackoverflow.com/questions/7096542/collect-all-active-window-class-names
SetLength(ClassName, 256);
ClassNameLength := GetClassName(hWnd, PChar(ClassName), Length(ClassName));
if ClassNameLength = 0 then RaiseLastOSError;
SetLength(ClassName, ClassNameLength);
if ClassName = FMXClassName then begin
// Found. Hide it, and return false to stop enumerating
ShowWindow(hWnd, SW_HIDE);
Exit(False);
end;
end;
Result := True; // Fallthrough, keep iterating
end;
, если использовать следующий код, чтобы использовать его, другой значок на панели задач будет скрыт
EnumWindows(@EnumWindowCallback, 0);
Поскольку вы ищете окна в определенном потоке, вы должны использовать ['EnumThreadWindows()'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633495.aspx) вместо 'EnumWindows()'. Или просто используйте 'FindWindow()' вместо этого. –