Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Вниз

может не по теме но всё же.......старт COM сервиса..   Найти похожие ветки 

 
jonni   (2003-08-21 16:08) [0]

хочу запустить системные сервисы на 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 видаёт ошибку и не запускает сервис...:((
может кто подскажет ошибку???

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


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


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


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


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

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

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


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

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


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

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


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

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


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


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

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

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


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

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

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

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


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

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-22 13:53) [9]

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

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


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

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


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

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.


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

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

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

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



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

Форум: "WinAPI";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.013 c
14-89574
ZeroDivide
2003-10-07 14:12
2003.10.27
Опять забыл. Народ подскажите, какой ключик в реестре запрещает..


14-89521
Dimaz-z
2003-10-08 12:53
2003.10.27
Как вы считаете, какой оператор сотовой связи лучше?


14-89466
real_qwerty
2003-10-07 12:42
2003.10.27
Изменение ресурсов


7-89625
Checist [root]
2003-08-16 03:04
2003.10.27
Temporary Internet Files - беда


14-89506
Игорь Шевченко
2003-10-07 17:12
2003.10.27
Так портит Windows XP жесткие диски или нет ? :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский