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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2010, 19:30   #1
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию Запущенные сервисы

Как получить список запущенных сервисов?
KoBRaAndrey вне форума Ответить с цитированием
Старый 01.02.2010, 19:53   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Может быть это:
Код:
var
  Wnd: hWnd;
  buff: array[0..127] of Char;
begin
  ListBox1.Clear;
  Wnd := GetWindow(Handle, gw_HWndFirst);
  while Wnd <> 0 do begin {Не показываем:}
    if (Wnd <> Application.Handle) and {Собственное окно}
      IsWindowVisible(Wnd) and {Невидимые окна}
      (GetWindow(Wnd, gw_Owner) = 0) and {Дочерние окна}
      (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {Окна без заголовков}
      then begin
      GetWindowText(Wnd, buff, sizeof(buff));
      ListBox1.Items.Add(StrPas(buff));
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
  ListBox1.ItemIndex := 0;
end;
mihali4 вне форума Ответить с цитированием
Старый 01.02.2010, 19:57   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Вот еще тут походи по link`ам
http://www.kansoftware.ru/?did=164
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 01.02.2010, 20:02   #4
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

Мне нужно не процессы а сервиса (аля службы)
KoBRaAndrey вне форума Ответить с цитированием
Старый 01.02.2010, 20:04   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вот это уже сортируйте самостоятельно...
Код:
Как получить указатели всех процессов, запущенных в системе

Под windows (win32) это возможно с использованием вспомогательных информационных функций: 
Вызывается функция: 
hsnapshot := createtoolhelp32snapshot(th32cs_snapprocess, 0);

process32first() - получение информации о первом процессе в списке; 
Далее в цикле process32next() - получение информации о следующем процессе в списке. 
unit kernlutl;

interface

uses
tlhelp32, windows, classes, sysutils;

procedure getprocesslist(list: tstrings);
procedure getmodulelist(list: tstrings);
function getprocesshandle(processid: dword): thandle;
procedure getparentprocessinfo(var id: dword; var path: string);

const
process_terminate = $0001;
process_create_thread = $0002;
process_vm_operation = $0008;
process_vm_read = $0010;
process_vm_write = $0020;
process_dup_handle = $0040;
process_create_process = $0080;
process_set_quota = $0100;
process_set_information = $0200;
process_query_information = $0400;
process_all_access = standard_rights_required or synchronize or $0fff;

implementation

procedure getprocesslist(list: tstrings);
var
i: integer;
hsnapshoot: thandle;
pe32: tprocessentry32;
begin
list.clear;
hsnapshoot := createtoolhelp32snapshot(th32cs_snapprocess, 0);
if (hsnapshoot = -1) then exit;
pe32.dwsize := sizeof(tprocessentry32);
if (process32first(hsnapshoot, pe32)) then repeat
i := list.add(format('%x, %x: %s', [pe32.th32processid,
pe32.th32parentprocessid, pe32.szexefile]));
list.objects[i] := pointer(pe32.th32processid);
until not process32next(hsnapshoot, pe32);
closehandle (hsnapshoot);
end;

procedure getmodulelist(list: tstrings);
var
i: integer;
hsnapshoot: thandle;
me32: tmoduleentry32;
begin
list.clear;
hsnapshoot := createtoolhelp32snapshot(th32cs_snapmodule, 0);
if (hsnapshoot = -1) then exit;
me32.dwsize := sizeof(tmoduleentry32);
if (module32first(hsnapshoot, me32)) then repeat
i := list.add(me32.szmodule);
list.objects[i] := pointer(me32.th32moduleid);
until not module32next(hsnapshoot, me32);
closehandle (hsnapshoot);
end;

procedure getparentprocessinfo(var id: dword; var path: string);
var
processid: dword;
hsnapshoot: thandle;
pe32: tprocessentry32;
begin
processid := getcurrentprocessid;
id := 0;
path := '';
hsnapshoot := createtoolhelp32snapshot(th32cs_snapprocess, 0);
if (hsnapshoot = -1) then exit;
pe32.dwsize := sizeof(tprocessentry32);
if (process32first(hsnapshoot, pe32)) then
repeat
if pe32.th32processid = processid then begin
id := pe32.th32parentprocessid;
break;
end;
until not process32next(hsnapshoot, pe32);
if id <> -1 then
if (process32first(hsnapshoot, pe32)) then repeat
if pe32.th32processid = id then begin
path := pe32.szexefile;
break;
end;
until not process32next(hsnapshoot, pe32);
closehandle (hsnapshoot);
end;

function getprocesshandle(processid: dword): thandle;
begin
result := openprocess(process_all_access, true, processid);
end;

end.
mihali4 вне форума Ответить с цитированием
Старый 01.02.2010, 20:07   #6
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

У меня такой вариант:
Код:
WinExec(PAnsiChar('cmd /c "net start > c:\2.txt"'),sw_hide);
В CMD есть команда "net start" показует список запущенных служб, сохраняйте результат в файл и используете его на свое рассуждение.

P.S.: да, кстати, чуть незабыл - текст файла имеет кодировку Dos(Oem), но в Delphi есть функция OemToAnsi (но я ею не пользовался, так что наверняка сказать немогу)...
W0LF вне форума Ответить с цитированием
Старый 01.02.2010, 20:15   #7
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

Не то Мне нужно:
KoBRaAndrey вне форума Ответить с цитированием
Старый 01.02.2010, 20:25   #8
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Грабай окно
W0LF вне форума Ответить с цитированием
Старый 01.02.2010, 20:27   #9
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Вот тут был ? http://programmersforum.ru/showthread.php?t=14469
Там в прикрепленных файлах ...
Особенно в последнем посте ...

P.S.
.. да и вот те еще (типа готовое решение) : http://www.delphisources.ru/pages/so..._zap_proc.html
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 01.02.2010 в 20:29.
Kotofff вне форума Ответить с цитированием
Старый 01.02.2010, 20:58   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ммм... вот вам решение именно получения списка установленных-остановленных сервисов, а также управления ими используется модуль btNTSvcMan
Изображения
Тип файла: jpg screen.jpg (47.5 Кб, 146 просмотров)
Вложения
Тип файла: zip просмотрщик сервисов NT.zip (10.8 Кб, 44 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 01.02.2010 в 21:02.
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сервисы (службы) NieL Win Api 2 20.11.2009 14:13
Запущенные процессы. mituhin Безопасность, Шифрование 3 23.06.2008 13:32
про сервисы и формы darkcoder Общие вопросы Delphi 1 11.03.2008 07:28
Сервисы, блин.... Баламут Win Api 6 28.12.2007 01:30
И снова сервисы Баламут Win Api 3 13.12.2007 01:26