check if the Active Desktop is active

Author: Thomas Stutz 

 

uses

  ComObj, ShlObj, ActiveX;

 

// Check if Active Desktop is enabled (1)

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;

 

 

// 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;