Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.152.98] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
У меня есть такой вопрос: я пишу сервис, который должен выступать как файловый ревизор и у меня возникли следующие вопросы:
1. какой тип сервиса выбрать? 2. Как наладить вывод отладочных сообщений на экран(например средствами showmessage),а то почему-то не получается:( 3. Что делает обработчик ServiceExecute? Использую Delphi 2007 for win3 Всем кто откликнется спасибо! |
Сообщ.
#2
,
|
|
|
Цитата DelCoderz @ какой тип сервиса выбрать? По умолчанию вариант(stWin32), я думаю, вполне подойдёт, зависит от реализации ревизора(кстати, а что это?) Цитата DelCoderz @ Как наладить вывод отладочных сообщений на экран(например средствами showmessage),а то почему-то не получается:( Взаимодействовать с оконной станцией могут только интерактивные сервисы, но интерактивность сервисов присутствует лишь до Win Vista. Воспользуйся текстовым логом, например из JCL(JclSimpleLog) Цитата DelCoderz @ Что делает обработчик ServiceExecute? OnExecute позволяет полностью контролировать процесс выполнения сервиса. Т.е. в данном методе выполняется вся работа сервиса, но надо периодически уведомлять Win SCM о своём состоянии и самому завершать работу сервиса. Обычно используют события OnStart & OnStop тогда создаются рабочие потоки. По уведомлению от системы потоки останавливаются и мы это можем обрабатывать, как нам надо. Прочитай эту статью http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1348 там в принципе всё описано подробно. |
Сообщ.
#3
,
|
|
|
Эта программа будет создавать список контролируемых файлов,а затем периодически проверять их размер и некоторые другие характеристики(например образцы двоичного кода в фалйле). Будет частью opensource антивирусной системы
|
Сообщ.
#4
,
|
|
|
Цитата DelCoderz @ Эта программа будет создавать список контролируемых файлов,а затем периодически проверять их размер и некоторые другие характеристики(например образцы двоичного кода в фалйле). Будет частью opensource антивирусной системы DelCoderz, в общем я предполагаю, что на начальном этапе ты будешь всё это делать посредством WinApi Поэтому тип по умолчанию stWin32 тебе вполне подойдёт, подробной информации о типах сервиса на русском я вроде не встречал, поэтому, если я ошибся по поводу способа реализации, можешь начать отсюда http://msdn.microsoft.com/en-us/library/ms685996%28VS.85%29.aspx |
Сообщ.
#5
,
|
|
|
У меня такая проблема: мой сервис все делает как надо за искалючением одного: пишет выходные данные не в С:\, а в С:\system32. C чем это связано? Можете за одно объяснить как происходит инсталляция сервиса. Всем кто ответит большое спасибо!
|
Сообщ.
#6
,
|
|
|
DelCoderz
Цитата 2. Как наладить вывод отладочных сообщений на экран(например средствами showmessage),а то почему-то не получается:( я бы сделал две программы, сам сервис и монитор_сообщений к нему. Монитор создает MMF и читает данные оттуда, сервис пишет в лог, и если создан MMF с нужным именем - пишет в него. Можно через пайпы (pipes) организовать "общение" двух процессов, но я предпочитаю MMF. |
Сообщ.
#7
,
|
|
|
если ты создаешь файл в текущей директории, это и будет С:\system32. Это связано с тем, что сервис запускается не сам, а виндовским менеджером служб. Если надо писать лог в каталог сервиса, найди путь к его EXE, например так:
var p:array [0..255] of Char; lpFileName:PChar; nSize:DWORD; begin lpFileName:=@p[0]; nSize:=255; if GetModuleFileName(0,lpFileName,nSize )>0 then result:=String(ExtractFilePath(lpFileName)) Инсталляция сервиса делается так: myservice /install |
Сообщ.
#8
,
|
|
|
Нет насчет ткомандной строки я знаю,но я имел ввиду как это дедлает сама система?
|
Сообщ.
#9
,
|
|
|
А что такое MMF
|
Сообщ.
#10
,
|
|
|
Уточнение по повсоду вопроса:он возник после следующего топика,где говорится
я бы сделал две программы, сам сервис и монитор_сообщений к нему. Монитор создает MMF и читает данные оттуда, сервис пишет в лог, и если создан MMF с нужным именем - пишет в него. Можно через пайпы (pipes) организовать "общение" двух процессов, но я предпочитаю MMF. |
Сообщ.
#11
,
|
|
|
Цитата DelCoderz @ А что такое MMF Отображаемый файл. Один из методов взаимодействия между процессами для обмена информацией. Разницы между пайпами и отображаемыми файлами (в твоем случае) - никакой - какой метод удобнее/лучше знаешь - тот и используй. На интерактивные сервисы лучше забей - иди по пути, который тебе показал antonn. И еще - при создании пайпа или ММF обрати внимание на дескрипторы безопасности (по умолчанию, если скажешь nil) объект создастся с правами локального сервиса и подключение простых смертных (не админов) к нему будет предотвращено системой. |
Сообщ.
#12
,
|
|
|
У меня такая проблема с сервисом: в обработчике onexecute вообще не выполняется часть кода
Добавлено |
Сообщ.
#13
,
|
|
|
Цитата DelCoderz @ не выполняется часть кода Она идет после условия или в цикле? проверь условие. Возможно оно всегда FALSE и компилятор выкинул эти строки. |
Сообщ.
#14
,
|
|
|
Цитата DelCoderz @ в обработчике onexecute вообще не выполняется часть кода Возможно у вас возникает исключение. Проверьте оснастку "События". |
Сообщ.
#15
,
|
|
|
Вношу уточнение:не выполняется часть кода ветки else, но чято нтересно нетолько она. Не поисходит процесса записи в лог, что должно было быть Я приатачу исхоодник к посту и если то-то решиться затратить свое время на его изучение и укажет на ошибки, то буду очень-очень благодарен, а то вся разработка стоит
Прикреплённый файл_______________________.rar (197.21 Кбайт, скачиваний: 114) |