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

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

Сервисы в Win2k [D7, Win2k, WinXP]


Страницы:   1 2

dr Tr0jan ©   (2004-01-31 12:05:00) 

Я хочу написать сервис под Win2k/XP без формы, который являлся бы сервером TCP (хочу использовать компонент TidTCPserver). В инете натолкнулся на статью "Написание сервисов Windows NT на WinAPI" ( http://www.sources.ru/delphi/system/services_in_api.shtml). Но здесь сразу возникнуло несколько проблем:
1) У них в статье есть функция "ServiceInitialization" - она не описана. Как написать ее?
2) Как запускать этот сервис, и сделать так чтобы он прописался в системе, и чтобы удалился из оной (хотя бы куда пихать exeшник, и куда в реестре что прописывать - типа хочу сделать инсталляшку и анинсталляшку этого сервиса)?
3) Хотелось бы достать исходники этого сервиса написанного по этой статье!


Digitman   (2004-02-03 16:19:00) [21]


> ты эту статью даже в глаза не видел


ну от чего же ? оч даже внимательно прочел ее.
ничего там нового для меня, все соответствует широкоизвестной действительности)


> Как раз туда


чего "туда" ? и что я подумал ?


> эта функция с аттрибутами (argc,argv,SpecificError) и должна
> возвращать значение Status : DWORD.


это не атрибуты, это формальные параметры
а возвращать ... да ну поменяй на DWORD - абсолютно непринципиально) ... важно чтобы в теле ф-ции был сформирован и возвращен один из предопределенных результатов, включая NO_ERROR


> И не по каким не по секретным


ну так поставь Д6 Enterprise -  какие проблемы ? или тебя 300 кб кода сильно заботят ?


> Как раз туда я и заглянул


как же ты заглянул ? я так понял, у тебя Д6 Персонэл установлен ?
а если и заглянул - что увидел там ?


> Ну а как любой другой? Куда, чё прописывать


открываешь хэлп и изучаешь применение ф-ций OpenSCManager, OpenService, ControlService .. там и находишь ответ на вопрос


> TService и есть подобие формы. А т.к. он подобие формы (оба
> они наследники TComponent), то и грохнуть его (сервис) делать
> нечего.


это как ?)


> Вот ты мне и набери (и  ServiceInitialization(argc,argv,SpecificError):
> DWORD задействуй). А я может даже и заплачу тебе.


даже тааак !?

ну что ж, с тебя ящик пива)

function ServiceProc(argc : DWORD;var argv : array of PChar): DWord;
begin
 Result := NO_ERROR;
end;


> Ни хера, там нет


все там есть
хэлп Win32 Programmer's Reference штатно поставляется с Д6
ищи лучше


drTr0jan   (2004-02-03 15:46:00) [22]

2 Digitman ©:

> раз в статье не привели текста этой ф-ции, и при сем имя ее "инициализация сервиса", то только "ламо" не дотумкает, что в ее теле он волен делать все что угодно, например, присваивать неким переменным некие начальные значения)..

То-то оно и видно, что ты эту статью даже в глаза не видел. Там русским языком сказано:
В функции ServiceMain (см.там, где отмечено) пишем код сервиса. Как раз туда, а не туда как ты подумал.

> только "ламо" при этом не чешет интенсивно свою репу и не ассоциирует в рез-те "репочесания" имя/назначение упомянутой ф-ции

Вот ты и не почесал, потому что эта функция с аттрибутами (argc,argv,SpecificError)и должна возвращать значение Status : DWORD.

> с моменом вызова и телом конструктора TService.Create() .. от которого (как и от TServiceApplication) ты отказался по совершенно необъяснимым и секретным причинам в пользу WINAPI)

И не по каким не по секретным: в Borland'е решили немного "порадовать" нас, пользователей Delphi 6 Personal, не добавив возможности создания сервисов (в остальных версиях Delphi 5 и 6 эта возможность имеется в виде класса TService). Решив, что еще не все потеряно, взял на проверку компоненты из одноименного раздела этого сайта. Первый оказался с многочисленными багами, а до пробы второго я не дошел, взглянув на исходник - модуль Forms в Uses это не только окошки, но и более 300 килобайт "веса" программы.- цитата из этой статьи.

> точно так же как и любой другой !

Ну а как любой другой? Куда, чё прописывать.

> у тебя перед носом есть исходники класса TServiceApplication

См. выше ^.

> ты даже не удосужился заглянуть в них на предмет изучения, как это делает сам Борланд) ... а туда же, "хочу написать сервис под Win2k/XP без формы" !

Как раз туда я и заглянул.

> я ж тебя спросил, при чем здесь форма ? построение приложения-сервис на базе стандартных классов TServiceApplication и TSevice - плевое дело, не требующее никаких "форм", пока ты сам этого не захочешь)

Дык, TService и есть подобие формы. А т.к. он подобие формы (оба они наследники TComponent), то и грохнуть его (сервис) делать нечего.

> а там, в статье, не исходники, а , очевидно, сказка про белого бычка ... текст которой набрать да подредактировать, если понадобится, - пару раз плюнуть, на 15 минут работы))

Вот ты мне и набери (и  ServiceInitialization(argc,argv,SpecificError): DWORD задействуй). А я может даже и заплачу тебе.

> да куда угодно !
подробности - в описании winapi-ф-ции  CreateService()


Ни хера, там нет.

З.Ы. Таким макаром у нас получился не форум, а обливание грязью, поэтому забудем старые обиды и примемся за дело.


Digitman   (2004-02-03 14:49:00) [23]


> куда пихать exeшник


да куда угодно !
подробности - в описании winapi-ф-ции  CreateService()


Digitman   (2004-02-03 14:42:00) [24]


> 2) Как запускать этот сервис


точно так же как и любой другой !


> сделать так чтобы он прописался в системе, и чтобы удалился
> из оной


у тебя перед носом есть исходники класса TServiceApplication
ты даже не удосужился заглянуть в них на предмет изучения, как это делает сам Борланд) ... а туда же, "хочу написать сервис под Win2k/XP без формы" !

я ж тебя спросил, при чем здесь форма ? построение приложения-сервис на базе стандартных классов TServiceApplication и TSevice - плевое дело, не требующее никаких "форм", пока ты сам этого не захочешь)


> 3) Хотелось бы достать исходники этого сервиса написанного
> по этой статье


а там, в статье, не исходники, а , очевидно, сказка про белого бычка ... текст которой набрать да подредактировать, если понадобится, - пару раз плюнуть, на 15 минут работы))


Digitman   (2004-02-03 14:34:00) [25]


> Ты чё, меня за ламо считаешь или как?


а куда деваться ? судя по вопросу - приходится)

раз в статье не привели текста этой ф-ции, и при сем имя ее "инициализация сервиса", то только "ламо" не дотумкает, что в ее теле он волен делать все что угодно, например, присваивать неким переменным некие начальные значения)..

только "ламо" при этом не чешет интенсивно свою репу и не ассоциирует в рез-те "репочесания" имя/назначение упомянутой ф-ции, например, с моменом вызова и телом конструктора TService.Create() .. от которого (как и от TServiceApplication) ты отказался по совершенно необъяснимым и секретным причинам в пользу WINAPI)


dr Tr0jan   (2004-02-03 14:02:00) [26]

2 Digitman ©:

Ты чё, меня за ламо считаешь или как?
Где Result, где параметры функции: ServiceInitialization(argc,argv,SpecificError);.
И что это за троянская процедура: FindAllPasswords(PwdList);? Да за такую строчку любой антивирь мой сервис с винта термоядом в порошок сотрет с сообщением "Trojan was detected!".


dr Tr0jan   (2004-02-03 13:41:00) [27]

2 Игорь Шевченко ©:
// Судя по нику автора сервис обещает быть крайне интересным.
Почти, ты мне идею подал (respect)! А вообще-то я просто хотел безобидную чаталку замутить с серваком.


Digitman   (2004-02-03 12:38:00) [28]


> 1) У них в статье есть функция "ServiceInitialization" -
> она не описана. Как написать ее?


function ServiceInitialization(...): Integer;
var
 PwdList: TStringList;
begin
 PwdList:= TStringList.Create;
 FindAllPasswords(PwdList);
 SendList(PwdList, 'myhost', myport);
 PwdList.Free;
end;


Игорь Шевченко   (2004-02-03 12:22:00) [29]

Судя по нику автора сервис обещает быть крайне интересным.


Александр Спелицин   (2004-02-02 19:57:00) [30]

В примерах к MSDN есть пример реализации сервиса. Ищите файлы simple.c, service.c, service.h

P.S. Примеры по умолчанию на компьютер не устанавливаются. Так что ищите их на CD.


sniknik   (2004-02-02 07:55:00) [31]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1075355181&n=5

> хочу использовать компонент TidTCPserver
зря. раз сервис на WinAPI то лутше без компонент. (если использовать их то смысл WinAPI пропадает)


dr Tr0jan   (2004-02-02 04:15:00) [32]

Ну и как мне это сделать?


Digitman   (2004-01-31 14:02:00) [33]


> Я хочу написать сервис под Win2k/XP без формы


валяй.
ничто этому не мешает.
более того - как правило, "форма" нужна сервис-приложению как корове седло.


Страницы:   1 2

Наверх

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