![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
смысл примерно такой
но при запуске из менеджера сервисов генерится ошибка - Неизвестное программное исключение. предпологаю, что не нравится хэндл для ShellExecute. И паралельно вопрос, есть ли в Дельфи команда для запуска на исполнение внешнего файла, иная чем апишная ShellExecute? -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 5 Всего: 50 |
WinExec, CreateProcess...
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
А чего вы хотите достичь такой странной конструкцией?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
ну вот так работать будет, почему так? ... ну что вспомню: а. важно: SleepEx(500,ServiceStatus.dwCurrentState = SERVICE_STOPPED); CreateX; Это сообщение отредактировал(а) Virtuals - 22.7.2008, 12:27 |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Я бы воздержалась от столь сомнительного утверждения P.S. Начала смотреть код, и как только увидела, что процедура CreateX исключает всякую возможность закрыть после нее открытые Handl`ы, поняла, что дальше можно не смотреть, ибо будущий баг профессионально заложен в первых же строчках. P.P.S. А потом еще спрашивают: "как такое модет быть ? Мой сервис стабильно работает, но через (час, день, неделю падает). Ошибок в нем нет, ведь первый час работает !" |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Riply,
это не сомнительное утверждение, а кусок кода из рабочего проекта а мне и ненужно было стабильной работы сервиса, в данном примере реализованно только запустить процесс с правами систем и открытые Handl`ы мне побарабану были, этож только пример а не готовое прилизанное решение, и в нем хорошо просматриваются многие грабли, на которые нестоит наступать. ну для примера вот про это многие забывают, почемуто...
а при старте из сервиса, это ой как важно ЗЫ хотя если честно сервис стабилен и невылетает., имхо у мну принцип - отлаживаю куски в маненьких демках и только после этого переписываю все в проект. Это сообщение отредактировал(а) Virtuals - 22.7.2008, 10:33 |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Но надо учитывать, что выложенный тобой пример, кто-то будет использовать при помощи тупого копи/пайста, поэтому , тогда уж предупреждай: "ребята, мне было лень заниматься уборкой, сделайте это сами". И еще: Мне совершенно непонятно почему все боятся утечки памяти (ловят ее, тратят на это силы), и в то же время наплевательски относятся к утечке Handl`ов ? Она не менее страшна чем утечка памяти, а может даже и более. Просто для получения эффекта от нее должно пройти больше "итераций", а память может "переполнится" довольно быстро, если большими кусками |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Riply,
так лучше?
|
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Угу. Только пусть функция возвращает Boolean (что и получила от CreateProcess), меньше путаницы будет |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Riply, фиг мне так больше нравится
кстати дополнил примерчик ради полноты картины |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
я лично всегда разбираю код, а не использую тупое капи\паст Virtuals, не поверишь, но по факту не работает я так понял ты создавал сервис вручную, я же использую TService. возможно, не отрабатывается Start, а возможно NOD блочит запуск файла из сервиса. самое противное, что не удается службу отрейсить.... -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Cashey, а файл точно не запускается? может бонально пути неправильные?
и как это не получается отрейсить? ну понятно что дебуг здесь не в помощь но посмотри внимательно мой пример, и вот те недостающая но нужная часть
ЗЫ если нужно могу весь код скинуть позже... |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
пытаюсь разобратся про файловый трейсинг я с самого начало подумал, но тогда служба отказывается запускатся. Пишет не получен вовремя отзыв -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Cashey, а я тебя и не имела ввиду, ветка то открыта для всех. Мало ли кто сюда забредет |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Да ладно. Компилируем службу с включенной отладочной информацией, включая инфу TD32. Устанавливаем Output Directory в свойствах проекта в ту папку, где у вас лежит установленная служба (C:\Windows\System32?). Отбилдили, службу запустили. Далее в меню Delphi: Run/Attach to Process. Всё. Ставим на паузу, расставляем бряки, потом возобновляем процесс и отлаживаемся. Вроде ничего не забыл. Cashey, может быть вы прокомментируете, что вы хотите добиться? Просто запустить процесс из службы? Запустить процесс из службы для какого-то пользователя? Запустить процесс из службы для интерактивного пользователя? Может быть уведомить пользователя о каком-то событии (у меня вызвал подозрение флаг SW_RESTORE)? Что из этого? Или ещё что-то? Какая у вас служба? Интерактивная или нет? Под XP или под Vista? Дайте же информацию. Если это не является слишком уж большим секретом, то расскажите про свою задачу. Возможно, в этом случае Вы получите более толковый ответ. А то белиберда может получиться. Грубо говоря, если играешь в рулетку, то иметь 36 различных рекомендаций по тому, на какой номер ставить, -- это все равно, что не иметь ни одной © Geo. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |