![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Ромео |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.8.2011 Репутация: нет Всего: нет |
помогите перевести пожалуйста на Делфи, я уже MSDN прошарил по этому вопросу, на др форумах есть коечто подобное но написан исхожник неверно, вот я собрал по кусочкам с коекаких книжек и вышло типа такого, но могут быть ошибки, помогите разобраться, СУть проги: отключение служб, если имеются зависимые службы, то закртыть сначала их , а потом уже и её саму
//----------------------------------------------------------------------- // DemoServiceStopWithDependents // // Останавливает указанную службу и все зависимые от нее службы. // // Параметры: // hSCM - handle SCM // pszServiceName - имя службы // // Возвращает: // ноль - при успешном завершении, отличное от нуля значение - в // противном случае. // int DemoServiceStopWithDependents( IN SC_HANDLE hSCM, IN PCTSTR pszServiceName ) { _ASSERTE(hSCM != NULL); _ASSERTE(pszServiceName != NULL); SC_HANDLE hService; LPENUM_SERVICE_STATUS pStatus; DWORD cbNeeded, i; DWORD cServices = 0; // открываем handle службы с правом доступа // SERVICE_ENUMERATE_DEPENDENTS hService = OpenService(hSCM, pszServiceName, SERVICE_ENUMERATE_DEPENDENTS); if (hService == NULL) return PrintError(_T("OpenService failed"), GetLastError()); // определяем требуемый размер выходного буфера if (!EnumDependentServices(hService, SERVICE_ACTIVE, NULL, 0, &cbNeeded, &cServices)) { if (GetLastError() != ERROR_MORE_DATA) { PrintError(_T("EnumDependentServices failed"), GetLastError()); CloseServiceHandle(hService); return 1; } } if (cbNeeded > 0) { // выделяем память для выходного буфера pStatus = (LPENUM_SERVICE_STATUS)LocalAlloc(LMEM_FIXED, cbNeeded); if (pStatus == NULL) { _tprintf(_T("Not enough memory\n")); CloseServiceHandle(hService); return 1; } // получаем список зависимых служб if (!EnumDependentServices(hService, SERVICE_ACTIVE, pStatus, cbNeeded, &cbNeeded, &cServices)) { PrintError(_T("EnumDependentServices failed"), GetLastError()); LocalFree((HLOCAL)pStatus); CloseServiceHandle(hService); return 1; } } // останавливаем все зависимые службы for (i = 0; i < cServices; i++) { _tprintf(_T("Stopping %s...\n"), pStatus[i].lpDisplayName); if (DemoServiceStop(hSCM, pStatus[i].lpServiceName)) break; } LocalFree((HLOCAL)pStatus); CloseServiceHandle(hService); if (i < cServices) return 1; // наконец, останавливаем указанную службу _tprintf(_T("Stopping %s...\n"), pszServiceName); return DemoServiceStop(hSCM, pszServiceName); } Это сообщение отредактировал(а) Ромео - 27.8.2011, 21:41 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ты хочешь, чтобы кто-то проверил твой код? А сам посмотреть не можешь, компилируется или нет, работает или нет. Если есть конкретные проблемы, то так и пиши. А если хочешь, чтобы кто-то за тебя это сделал - то создавай соответствующую тему в разделе "Работа".
-------------------- ... |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Вызови через system (или что там вместо нее у Delphi) net stop <имя службы> и не морочь голову ни себе ни людям
|
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
xvr, просто ShellExec(), ничего особенного - WinAPI едино для всех.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |