Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

может не по теме но всё же.......старт COM сервиса.. [D7, Win2k]


jonni ©   (2003-08-21 16:08:00) 

хочу запустить системные сервисы на Win2K....
1.буру имя сервиса из HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObject DelayLoad
2. запускю...
cbData: DWORD;
cbData:=40;
szData: array[0..40] of Char;<--здесь имя из реестра( что то типа типа {E6FB5E20-DE35-11CF-9C87-00AA005127ED})

wszCLSID: array[0..40] of WCHAR;
pCmdTarget: IOleCommandTarget;
rclsid: TGuid;
hr: HRESULT;
Param, Flag: oleVariant;

const
IID_IOleCommandTarget: TGuid = "{B722BCCB-4E68-101B-A2BC-00AA00404770}";
CGID_ShellServiceObject: TGuid = "{000214D2-0000-0000-C000-000000000046}";

MultiByteToWideChar(CP_ACP, 0, szData, cbData, wszCLSID, 40);
CLSIDFromString(PWideChar(WideString(wszCLSID)), rclsid);
hr:=CoCreateInstance(rclsid, nil, CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER, IID_IOleCommandTarget, pCmdTarget);
if hr = S_OK then
begin
pCmdTarget.Exec(@CGID_ShellServiceObject, 2, 0, Param, Flag); end;

проблема в том что Win2K видаёт ошибку и не запускает сервис...:((
может кто подскажет ошибку???

заранее спаисбо....


nikkie   (2003-08-22 16:09:00) [1]

shell service objects - осмелюсь перевести это как "сервисные объекты оболочки", но никак не сервисы.

>budu ochen" prizntelen esli vi popravite moi gluposti...
вот здесь показал, в чем глупость:
nikkie © (22.08.03 13:53)
вот здесь писал, что надо делать:
nikkie © (21.08.03 22:42)
может какие проблемы еще и с чтением из реестра - ты б забыл пока про него.

ЗЫ а может просто рановато свою оболочку писать?


jonni   (2003-08-22 14:57:00) [2]

to nikkie

ya zh epomochi proshu..... budu ochen" prizntelen esli vi popravite moi gluposti.....

to Игорь Шевченко

mozhet ya ne prav no vse zhe (vse eto tol"ko dlya win2K):
(eto pridumal neya i mnozhestvo obolochek(LiteStep,GeoShell,BlackBox,XenOs, itd itp...) delayut tak. )

Volume/DUN/Networking icons are controlled by shell service objects (SSO).
They are COM servers implementing the IOleCommandTarget interface.
The CLSIDs are listed in
"Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObjectDelay Load"
They should be enumerated and created using IID_IOleCOmmandTarget.
Exec each SSO with a group id of CGID_ShellServiceObject and command id
of 2 to start. Exec each SSO with a group id of CGID_ShellServiceObject
and a command id of 3 to stop.


Игорь Шевченко   (2003-08-22 14:36:00) [3]

А сервисы через COM не запускаются...они через SCManager запускаются...


nikkie   (2003-08-22 13:53:00) [4]

Value: string;
CLSIDFromString(PWideChar(@Value),rclsid);

это кто ж тебе такое сказал...


jonni   (2003-08-22 13:36:00) [5]

to nikkie:

kak skazali tak i sdelal.....

chitayu iz reestra:
var
ValueName, Value: string;
ValueNameSize, ValueSize, NumValues, MaxValueNameLen, MaxValueLen: DWORD;

RegEnumValue(hkeyServices, NumValues-1, @ValueName[1], ValueNameSize, nil, nil, @Value[1], @ValueSize);
SetLength(ValueName, lstrlen(@ValueName[1]));
SetLength(Value, lstrlen(@Value[1]));

i zapuskauy:

CLSIDFromString(PWideChar(@Value),rclsid);
hr:=CoCreateInstance(rclsid, nil, CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER, IID_IOleCommandTarget, pCmdTarget);

hr=REGDB_E_CLASSNOTREG!!!!!!

chtobi eto moglo znachit" kogda winda rabotaet s etim bez problem....


nikkie   (2003-08-21 22:42:00) [6]

Да уж... первый раз услышал о том, что сервисы через COM стартуют.

Ладно... предположим, что ты знаешь, что ты делаешь, и ты знаешь зачем ты это делаешь. На термины мы внимание обращать не будем.

Для начала сделай szData обычным String, а wszCLSID - WideString. Выкини MultiByteToWideChar, вместо этого напиши просто wszCLSID := szData. После этого можно в дебаге смотреть какой hr после CoCreateInstance. Хорошо бы и hr := pCmdTarget.Exec посмотреть.


jack128   (2003-08-21 22:39:00) [7]


> jonni © (21.08.03 22:12) [5]

Тяжело с тобой... ;-)

> Которую выдает Windows ?


jonni   (2003-08-21 22:12:00) [8]

lyudi podskazhite hotyabi gde mozhno pro eto pochitat"... plz


jonni   (2003-08-21 17:33:00) [9]

to Reindeer Moss Eater
a servis" to ne zapuskaetsya......!!!!!
znachit kog ne rabotaet....:(


Reindeer Moss Eater   (2003-08-21 17:31:00) [10]

Windows могет выдавать ошибку даже если твой код абсолютно безошибочен. И это правильно.


jonni   (2003-08-21 17:12:00) [11]

:)))
ну вот надеялся что поймут правильно.....

не могу понять где ОШИБКА В КОДЕ.... почему винда ругается....что не так


Игорь Шевченко   (2003-08-21 16:58:00) [12]


> проблема в том что Win2K видаёт ошибку и не запускает сервис...:((
> может кто подскажет ошибку???


Которую выдает Windows ? На это телепатии не хватает...


Наверх

Титульная страница Поиск, карта сайта Написать письмо