Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2007, 02:10   #1
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию Список сервисов

В общем нужно задействовать функцию EnumServicesStatusEx. Где-то я запутался в переводе ее на Делфи. Может есть у кого пример ее использования? Свой код пока не выкладываю, но если будет интересно...
Баламут вне форума Ответить с цитированием
Старый 07.12.2007, 08:31   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

В MSDN функция объявлена так:
Код:
BOOL WINAPI EnumServicesStatusEx(
  SC_HANDLE hSCManager,
  SC_ENUM_TYPE InfoLevel,
  DWORD dwServiceType,
  DWORD dwServiceState,
  LPBYTE lpServices,
  DWORD cbBufSize,
  LPDWORD pcbBytesNeeded,
  LPDWORD lpServicesReturned,
  LPDWORD lpResumeHandle,
  LPCTSTR pszGroupName
);
В моем переводе это выглядит как:
Код:
TEnumServicesStatusEx =
  function(hSCManager: THandle;//Хэндл менеджера процессов
           InfoLevel: DWORD;//Вид информации. В настоящее время только SC_STATUS_PROCESS_INFO
           dwServiceType: DWORD;//Драйверы или Win32 сервисы
           dwServiceState: DWORD;//Активные, неактивные, все
       var lpServices: byte;//Приемный буфер, указатель на массив байт
           cbBufSize: DWORD;//Размер буфера, на который указывает lpServices
       var pcbBytesNeeded: DWORD;//Требуемый размер буфера
       var lpServicesReturned: DWORD; //Количество служб
       var lpResumeHandle: DWORD; //Указатель на последнюю возвращ. службу
       var    pszGroupName: PChar{имя  группы загрузки. nil - все подряд}):boolean;



type TlpServices = array of byte;

var
   BufSize: DWORD;
    lpResumeHandle: DWORD;
    lpServicesReturned: DWORD;
    lpServices: TlpServices;
    bytesNeeded: DWORD;
    GroupName: PChar;
Вызов выглядит так:
Код:
hnd := LoadLibrary('advapi32.dll');
@OpenSCManager := GetProcAddress(hnd,'OpenSCManagerA');
@CloseServiceHandle := GetProcAddress(hnd, 'CloseServiceHandle');
@EnumServicesStatusEx := GetProcAddress(hnd, 'EnumServicesStatusExA');
hSCM := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);

BufSize := 0;
lpResumeHandle := 0;

try
EnumServicesStatusEx(
hSCM,
0,
SERVICE_WIN32,
SERVICE_STATE_ALL,
lpServices[0],
BufSize,  
bytesNeeded,
lpServicesReturned,
lpResumeHandle,
nil);
Функция вызывается и что-то даже шуршит. Но спустя пару секунд вылетает Access Violation. Может ткнете меня носом, что я не так делаю?
Баламут вне форума Ответить с цитированием
Старый 09.12.2007, 13:57   #3
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Неужели ни у кого нет идей? Я уже с ума схожу с этой ерундой...
Баламут вне форума Ответить с цитированием
Старый 09.12.2007, 22:48   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Неужели ни у кого нет идей? Я уже с ума схожу с этой ерундой...
Ты луш скажи что ты хочешь от этой функции и что ты вообще хочешь?
FaTaL вне форума Ответить с цитированием
Старый 10.12.2007, 01:38   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Хочу получить список сервисов. И именно от этой функции.
Баламут вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43
Написание сервисов Domovoy Свободное общение 4 17.07.2008 12:26
Список умений Принц Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 22.06.2008 20:07
Перехват системных сервисов в ядре Irat Помощь студентам 1 11.02.2008 19:21
Линейный список Black_Ak24 Паскаль, Turbo Pascal, PascalABC.NET 2 04.01.2008 15:00