![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно включить-выключить Active Desktop?
Ал © (2003-04-16 15:27:00)Или узнать, включен он или нет?
Подскажите, мастера!
Songoku (2003-04-19 04:23:00) [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;
Ал (2003-04-18 16:35:00) [2]Работает, но:
под Win98 - срабатывает только один раз за сеанс работы программы. Запустил программу, нажал кнопку - вызвал функцию - выключил ActiveDesktop. Программа продолжает работать. Если при работающей программе снова вручную включить ActiveDesktop, а затем нажать кнопку - вызвать функцию - ActiveDesktop не выключается.
Songoku (2003-04-17 11:17:00) [3]uses
ShlObj, ComObj;
procedureTurnActiveDesktop(state:Bool);
const
CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";
var
ie:IActiveDesktop;
opt:TCOMPONENTSOPT;
begin
ie:= CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
opt.dwSize := sizeof(opt);
opt.fActiveDesktop := state;
opt.fEnableComponents := state;
ie.SetDesktopItemOptions(opt,0);
ie.ApplyChanges(AD_APPLY_REFRESH);
end;
Скажи мне если работает ... потому что я не уверен на все 100% что работает!!!
Ал (2003-04-17 09:32:00) [4]Уважаемые знатоки! Подскажите конкретнее - для того и конференция. Если бы я знал, что искать в Google.
Внук (2003-04-17 09:29:00) [5]Можно. В реестре поискать надо. У меня есть небольшой рабочий примерчик, но он дома. Могу порекомендовать только книгу Борна "Inside Windows Registry". Или Google...
Ал (2003-04-16 23:37:00) [6]Не может быть, чтобы нельзя было!