Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Остановка службы 
:(
    Опции темы
NiJazz
  Дата 12.11.2004, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Как можно сделать?

Такой вариант не работает:
Код

SERVICE_STATUS                   ServiceStatus;
SERVICE_STATUS_HANDLE     ServiceStatusHandle;

ServiceStatus.dwCurrentState = SERVICE_STOPPED;
ServiceStatus.dwCheckPoint = 0;
ServiceStatus.dwWaitHint = 0;
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 1;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);

PM MAIL   Вверх
p0s0l
Дата 12.11.2004, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 3
Всего: 112



Возможно можно и так делать, как ты сделал...
Но я делал так:
ControlService( ServiceHandle, SERVICE_CONTROL_STOP, @ServiceStatus );

ServiceHandle - получаешь из:
OpenService( SCMHandle, "имя сервиса", SERVICE_STOP );



--------------------
С уважением, г-н Посол.
PM   Вверх
Adil'
Дата 12.11.2004, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 2
Всего: 15



Цитата(NiJazz @ 12.11.2004, 00:25)
Такой вариант не работает:
И неудивительно - в ServiceStatusHandle у тебя же мусор со стека сидит или в лучшем случае нули, если это глобальное объявление. Этот хэндл надо доставать с помощью RegisterServiceCtrlHandlerEx, хотя лучше не заморачиваться, и делать как p0s0l советует.


--------------------
Удачи
PM MAIL WWW   Вверх
Гость_ALEXANDR
Дата 27.11.2004, 17:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я новичок поэтому матом плиз не крыть, при использовании варианта, который предложил pOsOl?, у меня выдаются следующие ошибки:
1.Ругается на @ (0х40)
2.SCMHandle не определен, вопрос "Чем его инициалзировать?"
3.без @ ServiceStatus не знает чё такое,

И тут напрашивается вечный вопрос, че делать.
Просьба объяснить доходчиво, так как я новичок в этом деле
  Вверх
NiJazz
Дата 28.11.2004, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



@ - это в паскале, в С - это &.
SCMHandle = OpenSCManager(NULL, NULL); (на локальной машине)
PM MAIL   Вверх
Alexandr87
Дата 28.11.2004, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: нет
Всего: 39



Чем инициализировать ServiceStatus
PM Jabber   Вверх
Adil'
Дата 29.11.2004, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 2
Всего: 15



Цитата(Alexandr87 @ 28.11.2004, 15:07)
Чем инициализировать ServiceStatus
Да ничем не надо, просто
Код
SERVICE_STATUS ServiceStatus;
ControlService( ServiceHandle, SERVICE_CONTROL_STOP, &ServiceStatus );




--------------------
Удачи
PM MAIL WWW   Вверх
NiJazz
Дата 29.11.2004, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Alexandr87
Код

SERVICE_STATUS                   ServiceStatus;
SERVICE_STATUS_HANDLE     ServiceStatusHandle;

ServiceStatus.dwCurrentState = SERVICE_STOPPED;
ServiceStatus.dwCheckPoint = 0;
ServiceStatus.dwWaitHint = 0;
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 1;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);


Добавлено @ 14:28
Так и инициализировать
PM MAIL   Вверх
Alexandr87
Дата 29.11.2004, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: нет
Всего: 39



Вощем воть этот код, чё неправильно то, вроде всё как писали, v_strKill, моя переменная, связанная с edit'ом. ПРи включенном winampe, запускаю передаю в v_strKill - "winamp.exe", винампу хоть бы что, но вот само приложение закрывается.
Объясните придурку пожайлуста

Код

UpdateData(1);
SC_HANDLE SCMHandle = OpenSCManager(NULL, NULL,NULL);
SC_HANDLE ServiceHandle;
ServiceHandle=OpenService(SCMHandle, v_strKill, SERVICE_STOP );
SERVICE_STATUS ServiceStatus;
ControlService( ServiceHandle, SERVICE_CONTROL_STOP, &ServiceStatus );


PM Jabber   Вверх
Adil'
Дата 1.12.2004, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 2
Всего: 15



Ну во первых, чтобы твое приложение работало корректно, нужно все-таки проверять, что возвращает OpenService, и работать с ServiceHandle только если нет ошибки.
Во-вторых, как ты догадался что winamp - это сервис?


--------------------
Удачи
PM MAIL WWW   Вверх
Alexandr87
Дата 1.12.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: нет
Всего: 39



Вот епаны, просвети, мне нужно убить работающий сейчас процесс.
http://forum.vingrad.ru/index.php?showtopic=35769
Но что то под MFC проект, вылетает куча ошибок на стадии компиляции

И еще просвятите чем процесс от сервиса отличается
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.