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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2010, 22:48   #1
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение Взаимодействие-управление своим сервисом

Допустим есть свой сервис, запущен. Может работать с файлами, работать с реестром.
Так же есть программа взаимодействующая с этим сервисом, посылающая команды операций сервису.

Пример: О&О Dеfrаg, КIS, и т.п.

Как лучше организовать взаимодействие(двустороннее) между сервисом и программой?
Alter вне форума Ответить с цитированием
Старый 19.08.2010, 22:50   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Вообще сначала в тему не "въехал".

Есть же известный и очень краткий обзор:
http://delphiworld.narod.ru/base/delphi_services.html
А развернутое описание каждой функции можно найти по поисковику.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 19.08.2010 в 23:18.
ex.cluz вне форума Ответить с цитированием
Старый 19.08.2010, 22:53   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

ммм, примеры желательны.

Пишите, поглядим кто что предложит.
Alter вне форума Ответить с цитированием
Старый 19.08.2010, 23:12   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

параметры командной строки никто не отменял... пример:
Код:
...

function RunService: boolean; stdcall;
var pParameters: PChar;
begin
 result:= false;
 //
 hSCM:= OpenSCManager(nil, nil, GENERIC_READ or GENERIC_EXECUTE);
 if hSCM = 0 then begin
  ErrorLog('RunService OpenSCManager : '+GetErrosString);
  exit
 end;
 hService:= OpenService(hSCM, SERVICE_NAME, SERVICE_ALL_ACCESS);
 if hService = 0 then begin
  ErrorLog('RunService OpenService : '+GetErrosString);
  CloseServiceHandle(hSCM);
  exit
 end;
 if not StartService(hService, 0, pParameters) then
  ErrorLog('RunService StartService : '+GetErrosString);
 //
 CloseServiceHandle(hService);
 CloseServiceHandle(hSCM);
 result:= true
end;

begin
 HUDP1:= HUDP.Create;
 //
 ErrorLogFileName:= ParamStr(0);
 ErrorLogFileName:= Copy(ErrorLogFileName, 1, length(ErrorLogFileName)-3) + 'Log';
 ServicesListFileName:= Copy(ErrorLogFileName, 1, length(ErrorLogFileName)-3) + 'Txt';

 if ParamCount > 0 then begin
    if UpperCase(ParamStr(1)) = 'I' then begin
      if Install then begin
        ErrorLog('Service Installed');
        if RunService then ErrorLog('Service Run')
        else ErrorLog('Service Error on Run');
      end else ErrorLog('Error on install');
    end;
    if UpperCase(ParamStr(1)) = 'U' then begin
      HUDP1.Destroy;
      if UnInstall then ErrorLog('Service UnInstalled')
      else ErrorLog('Error on UnInstall');
    end;
    if UpperCase(ParamStr(1)) = 'G' then begin
      if GetData then ErrorLog('List Services Created')
      else ErrorLog('Error on List Services');
    end;
    exit;
  end;
 Start
// END CЕРВИС -----------------------------------------------------------------

end.
...кроме того, сообщениями можно обмениваться postmessage
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 20.08.2010, 10:05   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
между сервисом и программой?
Пайпы, сокеты... не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2010, 10:32   #6
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

\\.\pipe\ я думаю, без проблем в наше время можно использовать. Мастдай таки сдох.

В Platform SDK ещё помню разделы, посвящённые LPC, не знаю, по теме или нет.

Кроме сокетов и пайпов, в Platform SDK описаны другие механизмы, такие, как очереди сообщений (не оконных).
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/

Последний раз редактировалось OCTAGRAM; 20.08.2010 в 10:41.
OCTAGRAM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свои к своим 0mega Microsoft Office Excel 3 26.05.2010 07:34
Работа с сервисом Google Maps S.T.A.L.K.E.R. Общие вопросы C/C++ 1 16.03.2010 23:43