Windows - saber se o active desktop esta ativo

Top  Previous  Next

// saber se o active desktop está ligado

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

 

// Activate Active Desktop 

procedure TForm1.Button1Click(Sender: TObject); 

const 

  CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}'

var 

  ActiveDesk: IActiveDesktop; 

  ComponentsOpt: TComponentsOpt; 

begin 

  ActiveDesk := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop; 

 

  with ActiveDesk do 

  begin 

    ComponentsOpt.dwSize := SizeOf(ComponentsOpt); 

    GetDesktopItemOptions(ComponentsOpt, 0); 

    ComponentsOpt.fActiveDesktop := True; 

    SetDesktopItemOptions(ComponentsOpt, 0); 

    ApplyChanges(AD_APPLY_ALL); 

  end

end