Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как проверить, включен ли ActiveDesktop?

01.01.2007
function IsActiveDeskTopOn: Boolean; 
var
  h
: hWnd;
begin
  h
:= FindWindow('Progman', nil);
  h
:= FindWindowEx(h, 0,
             
'SHELLDLL_DefView', nil);
  h
:= FindWindowEx(h, 0,
       
'Internet Explorer_Server', nil);
 
Result := h <> 0;
end;
©Drkb::01819

Взято из https://forum.sources.ru


uses
   
ComObj, ShlObj, ActiveX;
 
 
// Check if Active Desktop is enabled (2)
function IsActiveDesktopEnable: Boolean;
 
const
   CLSID_ActiveDesktop
: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
 
var
   
ActiveDesk: IActiveDesktop;
   
ComponentsOpt: TComponentsOpt;
   hr
: HRESULT;
   dwReserved
: DWORD;
 
begin
   
ZeroMemory(@ComponentsOpt, SizeOf(TComponentsOpt));
   
ComponentsOpt.dwSize := SizeOf(TComponentsOpt);
   hr
:= CoCreateInstance(CLSID_ActiveDesktop, nil, CLSCTX_INPROC_SERVER,
     CLSID_ActiveDesktop
, ActiveDesk);
   
if SUCCEEDED(hr) then
   
begin
     hr
:= ActiveDesk.GetDesktopItemOptions(ComponentsOpt, dwReserved);
     
// ActiveDesk._Release;
 
end;
   
Result := ComponentsOpt.fActiveDesktop;
 
end;

https://delphiworld.narod.ru/

DelphiWorld 6.0