2009. március 31., kedd
How to check if Active Desktop is enabled
Problem/Question/Abstract:
How to check if Active Desktop is enabled
Answer:
uses
ComObj, ShlObj, ActiveX;
{Check if Active Desktop is enabled - Option 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 - Option 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;
And here is how to activate the 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;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése