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

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


paranoik

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

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

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

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

Посилання на коментар
Поділитись на інші сайти

Дякую) буду читати... можливо ще хтось запропонує певні джерела?

Посилання на коментар
Поділитись на інші сайти

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

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

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

Посилання на коментар
Поділитись на інші сайти

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

Посилання на коментар
Поділитись на інші сайти

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

Посилання на коментар
Поділитись на інші сайти

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

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

Посилання на коментар
Поділитись на інші сайти

Handle процеса знаєш? Напиши, як ти викликаєш PostMessage. І Чому SendMessage не юзаєш?

Посилання на коментар
Поділитись на інші сайти

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

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

Посилання на коментар
Поділитись на інші сайти

Помітив дивну річ: оскільки мені потрібно надіслати сервісу повідомлення із певними параметрами з бібліотеки 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);

Посилання на коментар
Поділитись на інші сайти

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

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



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