Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2008, 19:07   #1
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию Сервис - программное управление.

Здравствуйте.
Пишу сервис мониторинга против клавиат. шпионов

Волнует одна деталь, как из сервиса запустить свою копию.
т.е. если юзер завершает работу нужно программно стартовать.

Сразу говорю
Код:
procedure TNVSwc.ServiceDestroy(Sender: TObject);
begin
NVSwc.DoStart;
end;
такое пробовал, сервис переходит в режим приложения и закрывается через 10-15 сек.
Что делать?
Всё гениальное - просто!

Последний раз редактировалось Air; 05.01.2008 в 20:14.
Air вне форума Ответить с цитированием
Старый 23.06.2008, 12:27   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Не уже ли никак?
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 23.06.2008, 12:41   #3
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

единственное, что приходит в голову--программка следующего содержания
Код:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Winsvc;
procedure StartService(ServiceName: string);
var

  schService,
    schSCManager: Dword;
  p: PChar;
begin

  p := nil;
  schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if schSCManager = 0 then
    RaiseLastWin32Error;
  try
    schService := OpenService(schSCManager, PChar(ServiceName),
      SERVICE_ALL_ACCESS);
    if schService = 0 then
      RaiseLastWin32Error;
    try
      if not Winsvc.startService(schService, 0, p) then
        RaiseLastWin32Error;
    finally
      CloseServiceHandle(schService);
    end;
  finally
    CloseServiceHandle(schSCManager);
  end;
end;
Begin
sleep(2000);//возможно понадобится больший интервал
startservice(название_твоего_сервиса);
end;
Сам не проверял, но должно работать.
Лучше создавать консольное приложение
NikLik вне форума Ответить с цитированием
Старый 23.06.2008, 13:09   #4
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Работает, Спасибо Огромное!
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное добавление принтера AlexandrSid Общие вопросы Delphi 5 13.08.2008 15:29
Помогите создать веб-сервис optus Общие вопросы по Java, Java SE, Kotlin 0 21.05.2008 15:12
Программное подключение через ADO serjo БД в Delphi 2 09.01.2008 09:23
Программное индексирование Рустам БД в Delphi 2 27.08.2007 09:34