So lembrando que isso aqui só procura na systray
se tem alguma janela que não tem processo visível

Código:
procedure Oculto();
var
Handle : HWND;
dwProcessId : DWORD;
begin
try
Handle := FindWindow(nil,nil);
while (Handle > 0) do begin
if (GetParent(Handle) = 0) then
begin
GetWindowThreadProcessId(Handle, @dwProcessId);
if (not OpenProcess(PROCESS_QUERY_INFORMATION, False, dwProcessId)) = INVALID_HANDLE_VALUE then
begin
SendMessageA(Handle, WM_CLOSE, 0, 0);
SendMessageA(Handle, WM_QUIT, 0, 0);
SendMessageA(Handle, WM_DESTROY, 0, 0);
MessageBoxTimeOut
(Application.Handle,
Pchar (
'Foi encontrado um processo oculto em seu sistema!'
+#13+#13+
'Inicie o jogo novamente.'
+#13+#13+
'Acesse já: www.muashcrow.net')
,'Mu Ashcrow'
,16,0,3000);
SendMessageA(Handle, WM_CLOSE, 0, 0);
SendMessageA(Handle, WM_QUIT, 0, 0);
SendMessageA(Handle, WM_DESTROY, 0, 0);
DarkLogOculto();
ExitProcess(0);
end;
end;
Handle := GetWindow(Handle, GW_HWNDNEXT);
end;
except
on E: Exception do begin
end;
end;
end;
Créditos:

Kessiler