Перейти до змісту

Потрібна порада


paranoik

Рекомендовані повідомлення

Опубліковано

Шановні форумчане-програмісти! Прошу вашої допомоги щодо наступного питання-проблеми:

Є вже готова програма розроблена за допомогою VCL-компонентів на Delphi. Завдання полягає в наступному: дану програму потрібно переробити таким чином, щоб вона стала службою (сервісом). Наскільки я вже встиг прочитати, мені прийдеться відмовитись від VCL, але як саме реалізувати сервіс є для мене "темним" лісом:)

Можливо хтось знає певні статті чи літературу, в якій детально висвітлена така проблема? Буду вдячний за будь-яку допомогу!

Опубліковано
Все очень просто. Надо сделать так, чтобы программа (Delphi) работала как сервис в WinNT (или как демон в Unix). В принципе, достаточно, чтобы рядом с кнопкой "Пуск" ее не было, а она находилась рядом с часами, как иконка.

В такому випадку за допомогою WinAPI можна прибрати програму з панелі задач і вивести значок в треї. Не обов'язково робити програму сервісом WinNT.

Тобі дійсно треба саме службу зробити?

Опубліковано

за допомогою WinAPI я вже прибирав її з панелі, а необхідності перенесення у трей не було. Виклик відбувався за допомогою комбінації гарячих клавіш. Проте наступним "етапом еволюції" проги є саме занесення її до категорії сервісів, без зазначення її у списку активних процесів диспетчера задач.

Опубліковано

Стикнувся з наступною проблемою: потрібно надіслати повідомлення сервісу типу, але функція типу PostMessage не спрацьовує, наскільки я розумію через те, що у сервіса нема вікна. Як же ж тоді надіслати йому повідомлення???

Опубліковано

без зазначення її у списку активних процесів диспетчера задач

вірус на дельфі? ну ви оригінааал, однако

Опубліковано

вірус на дельфі? ну ви оригінааал, однако

При чому тут вірус? Що всі сервіси - це віруси??? Не смішіть:) я ж пояснив, що мені потрібен сервіс (служба), щоб користувач з обмеженими правами доступу не зміг зупинити дію служби, на відміну від процесів, видимість яких у більшості випадків залишають для можливості їх завершення у разі зависання!

Опубліковано

Помітив дивну річ: оскільки мені потрібно надіслати сервісу повідомлення із певними параметрами з бібліотеки DLL, я шукаю його Handle, але чомусь він постійно змінюється, що якби не припустимо. Можливо в когось є якісь думки з цього питання???

var SrvList:cardinal;

SH:cardinal; //хендл сервісу

st:_SERVICE_STATUS;

begin

SrvList:=OpenSCManager(nil,nil,sc_manager_all_access);

SH:=OpenService(SrvList,'TestService',service_all_access);

MessageBoxEx( 0,PAnsiChar(inttostr(SH)),'Handle',MB_OK or MB_TOPMOST or MB_SERVICE_NOTIFICATION,0);

CloseServiceHandle(SH);

CloseServiceHandle(SrvList);

Заархівовано

Ця тема знаходиться в архіві та закрита для подальших відповідей.



×
×
  • Створити...