paranoik Опубліковано 2 Грудня, 2010 в 19:15 #1 Опубліковано 2 Грудня, 2010 в 19:15 Шановні форумчане-програмісти! Прошу вашої допомоги щодо наступного питання-проблеми: Є вже готова програма розроблена за допомогою VCL-компонентів на Delphi. Завдання полягає в наступному: дану програму потрібно переробити таким чином, щоб вона стала службою (сервісом). Наскільки я вже встиг прочитати, мені прийдеться відмовитись від VCL, але як саме реалізувати сервіс є для мене "темним" лісом Можливо хтось знає певні статті чи літературу, в якій детально висвітлена така проблема? Буду вдячний за будь-яку допомогу!
Ko3bMa Опубліковано 2 Грудня, 2010 в 21:42 #2 Опубліковано 2 Грудня, 2010 в 21:42 http://forum.ixbt.com/topic.cgi?id=26:4053
paranoik Опубліковано 3 Грудня, 2010 в 08:18 Автор #3 Опубліковано 3 Грудня, 2010 в 08:18 http://forum.ixbt.com/topic.cgi?id=26:4053 Дякую) буду читати... можливо ще хтось запропонує певні джерела?
Саня Опубліковано 3 Грудня, 2010 в 08:40 #4 Опубліковано 3 Грудня, 2010 в 08:40 Все очень просто. Надо сделать так, чтобы программа (Delphi) работала как сервис в WinNT (или как демон в Unix). В принципе, достаточно, чтобы рядом с кнопкой "Пуск" ее не было, а она находилась рядом с часами, как иконка.В такому випадку за допомогою WinAPI можна прибрати програму з панелі задач і вивести значок в треї. Не обов'язково робити програму сервісом WinNT.Тобі дійсно треба саме службу зробити?
paranoik Опубліковано 3 Грудня, 2010 в 09:19 Автор #5 Опубліковано 3 Грудня, 2010 в 09:19 за допомогою WinAPI я вже прибирав її з панелі, а необхідності перенесення у трей не було. Виклик відбувався за допомогою комбінації гарячих клавіш. Проте наступним "етапом еволюції" проги є саме занесення її до категорії сервісів, без зазначення її у списку активних процесів диспетчера задач.
paranoik Опубліковано 7 Грудня, 2010 в 14:40 Автор #6 Опубліковано 7 Грудня, 2010 в 14:40 Стикнувся з наступною проблемою: потрібно надіслати повідомлення сервісу типу, але функція типу PostMessage не спрацьовує, наскільки я розумію через те, що у сервіса нема вікна. Як же ж тоді надіслати йому повідомлення???
qaster Опубліковано 7 Грудня, 2010 в 14:54 #7 Опубліковано 7 Грудня, 2010 в 14:54 без зазначення її у списку активних процесів диспетчера задачвірус на дельфі? ну ви оригінааал, однако
qaster Опубліковано 7 Грудня, 2010 в 14:58 #8 Опубліковано 7 Грудня, 2010 в 14:58 Handle процеса знаєш? Напиши, як ти викликаєш PostMessage. І Чому SendMessage не юзаєш?
paranoik Опубліковано 7 Грудня, 2010 в 16:04 Автор #9 Опубліковано 7 Грудня, 2010 в 16:04 вірус на дельфі? ну ви оригінааал, однако При чому тут вірус? Що всі сервіси - це віруси??? Не смішіть я ж пояснив, що мені потрібен сервіс (служба), щоб користувач з обмеженими правами доступу не зміг зупинити дію служби, на відміну від процесів, видимість яких у більшості випадків залишають для можливості їх завершення у разі зависання!
paranoik Опубліковано 8 Грудня, 2010 в 19:09 Автор #10 Опубліковано 8 Грудня, 2010 в 19:09 Помітив дивну річ: оскільки мені потрібно надіслати сервісу повідомлення із певними параметрами з бібліотеки 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);
Рекомендовані повідомлення
Заархівовано
Ця тема знаходиться в архіві та закрита для подальших відповідей.