Текущий архив: 2003.12.12;
Скачать: CL | DM;
Вниз
Сервис и Win2000 Найти похожие ветки
← →
kalishenko (2003-09-30 18:30) [0]Как написать свой сервис в Windows 2000? Зарегестрировать свое приложение в сервисах удалось, но запустить не получилось, т.к. сервисы запускаются и работают по-особенному. Так вот нет ли у кого примера написания сервиса?
← →
pasha (2003-10-01 02:20) [1]Вот тебе пример елементарного сервиса:
//Сигнал через определённое время
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls;
type
TService1 = class(TService)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceExecute(Sender: TService);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
Service1: TService1;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;
function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TService1.Timer1Timer(Sender: TObject);
begin
SysUtils.Beep;
end;
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
Timer1.Enabled := true;
end;
procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
Timer1.Enabled := false;
end;
procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
Timer1.Enabled := false;
end;
procedure TService1.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
Timer1.Enabled := true;
end;
procedure TService1.ServiceExecute(Sender: TService);
begin
while not Terminated do
ServiceThread.ProcessRequests(true);
end;
end.
← →
pasha (2003-10-01 02:29) [2]Зарегистрировать сервис в системе нужно так:
Project1.exe /install, где Project1.exe твой скомпилированый проект.
Удалить сервис из системе нужно так:
Project1.exe /uninstall
Запуск сервиса происходит в "Администрирование\Сервисы" находишь в списке имя своего сервиса(свойство DisplayName класса TServise) и запускаеш его
Сервисы НЕ ПОДДЕРЖИВАЮТСЯ В WIN9X
← →
kalishenko (2003-10-01 18:41) [3]Че-то никакого сигнала нет, хотя сервис вроде запускается. Вместо beep пробовал выдавать какое-нибудь сообщение
MessageBox(FindWindow(nil,"Delphi 6 - Project1"),"Это тест моей службы","From My Service",0);
но в ответ тишина...
← →
pasha (2003-10-01 22:50) [4]1.Как ты проверяш что сервис запустился?
2.Какая у тебя операционка?
← →
Digitman (2003-10-02 08:51) [5]MessageBox(0,"Это тест моей службы","From My Service", mb_ok);
← →
younghacker (2003-10-02 09:45) [6]Ребята не балуйтесь с FindWindow!
В терминальном сервере это ни к чему не приводит.
Все ищется только в пределах одной сессии.
Тоесть сессии изолированы от процессов даже на уровне
мутексов и файл мапинга. И из интерактивной сессии - невозможно при помощи FindWindow найти окно процесса.
Такое чувство что на разных компах работает все.
Удачи!
← →
kavboy (2003-10-02 11:01) [7]А в свойствах службы на закладке "Вход в систему" поставил птичку "Разрешить взаимодействие с рабочим столом"?
← →
kalishenko (2003-10-02 14:24) [8]>>pasha
>>1.Как ты проверяш что сервис запустился?
Так как после запуска сервиса из служб ошибка не вылетает, то, по-идее, все нормально.
>>2.Какая у тебя операционка?
XP и Win2000 Server.
>>kavboy
>>А в свойствах службы на закладке "Вход в систему" поставил птичку "Разрешить взаимодействие с рабочим столом"?
А что эта птичка означает и на что она влияет?
← →
kalishenko (2003-10-02 14:44) [9]Все заработало, как только я поставил ту самую птичку в "Разрешить взаимодействие с рабочим столом". И все-таки, что она означает понять до конца не могу. То ли это взаимодействие с графическим интерфейсом винды, то ли просто означает, что эта служба будет скрытой от глаз...
← →
Гость из далека (2003-10-02 14:49) [10]
> pasha © (01.10.03 02:29) [2]
> Зарегистрировать сервис в системе нужно так:
> Project1.exe /install, где Project1.exe твой скомпилированый
> проект.
> Удалить сервис из системе нужно так:
> Project1.exe /uninstall
> Запуск сервиса происходит в "Администрирование\Сервисы"
> находишь в списке имя своего сервиса(свойство DisplayName
> класса TServise) и запускаеш его
> Сервисы НЕ ПОДДЕРЖИВАЮТСЯ В WIN9X
Что то у меня в XP сервис не появляется :-(, куда копать?
← →
vadfe (2003-10-02 17:58) [11]А почему если из сервиса запустить exe-шник до входа в систему,
после входа окна ехе-шника не видно и убть его ничем не получается?
← →
pasha (2003-10-02 23:44) [12]
> Гость из далека
> Что то у меня в XP сервис не появляется :-(, куда копать?
Попробуй нажать F5 в окне сервисов
← →
pasha (2003-10-02 23:47) [13]
> vadfe ©
> А почему если из сервиса запустить exe-шник до входа в систему,
> после входа окна ехе-шника не видно и убть его ничем не
> получается?
Не понял напиши по номальному
← →
Гость из далека (2003-10-03 10:32) [14]
> pasha © (02.10.03 23:44) [12]
>
> > Гость из далека
>
>
> > Что то у меня в XP сервис не появляется :-(, куда копать?
>
> Попробуй нажать F5 в окне сервисов
И F5 и перезагрузка ничего не помогает :-(
← →
vadfe (2003-10-03 10:58) [15]>pasha
Пишем сервис:
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
WinExec("C:\MyProgram.exe",SW_SHOW);
end;
//************
Запускаем сервис из консоли "Службы"
MyProgram.exe нормально запускается т.е. открыта форма, висит иконка в трее и т.д.
Перезагружаемся
Сервис стартует автоматически до загрузки рабочего стола.
После загрузки рабочего стола ни формы не видно, ни иконки в трее.
MyProgram.exe видна в taskmgr но остановить ее не получается.
← →
pasha (2003-10-04 01:41) [16]
> vadfe
Установи соответствующие свойства в такие значения
1. Interactive = True
2. ServiceType = stWin32
3. StartType = stAuto
← →
pasha (2003-10-04 01:45) [17]
> Гость из далека
Имя сервиса который ты создаеш задаётся в свойстве DisplayName. С таким именем он и появляется в окне сервисов. У меня тоже стоит WinXP и все мои сервисы видны.
Страницы: 1 вся ветка
Текущий архив: 2003.12.12;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.008 c