Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

Работа с COM   Найти похожие ветки 

 
Ал   (2003-04-18 16:48) [0]

uses
KOLComObj, ShlObj;

procedure TurnActiveDesktop(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;

Работает, но:

под Win98 - срабатывает только один раз за сеанс работы программы. Запустил программу, нажал кнопку - вызвал функцию - выключил ActiveDesktop. Программа продолжает работать. Если при работающей программе снова вручную включить ActiveDesktop, а затем нажать кнопку - вызвать функцию - ActiveDesktop не выключается.

Хотя при смене обоев таким образом все аккуратно срабатывает.

Хотя дело не в KOL (такая ситуация возникает и без KOL с Uses ComObj), но люди здесь умные, может кто что и подскажет.
Возможно, нужно(ненужно) пересоздавать COM-объект(перерегистрировать класс)? Или D4 подводит? Не знаю.


 
Boguslaw   (2003-04-18 17:46) [1]

I don"t know COM objects well , but where You free COM object created by CreateComObject ? I think You should create COM object once at startup not in TurnActiveDesktop.

Boguslaw



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.038 c
4-25638
npAKTuk
2003-11-07 06:43
2004.01.09
Как совершить перехват Message?


1-25354
BaDeVlad
2003-12-25 08:58
2004.01.09
Как сделать главную форму невидимой при запуске?


1-25301
Романов Р.В.
2003-12-23 08:24
2004.01.09
Не получается отлаживать com object в dll.


6-25460
Felixxx
2003-11-06 14:14
2004.01.09
TServerSocket и TClientSocket


1-25409
ЮрийК
2003-12-24 14:05
2004.01.09
Матричная арифметика