Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список запущенных процессов 
:(
    Опции темы
Люда
Дата 11.11.2002, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как программно узнать какие процессы запущены на локальном компьютере, или  же запущен данный процесс или нет :omg
PM MAIL ICQ   Вверх
AntonSaburov
Дата 12.11.2002, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



RTFM неплохо бы иногда. Прямо оттуда.

#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

BOOL GetProcessList ()
{
   HANDLE         hProcessSnap = NULL;
   BOOL           bRet      = FALSE;
   PROCESSENTRY32 pe32      = {0};

   //  Take a snapshot of all processes in the system.

   hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

   if (hProcessSnap == INVALID_HANDLE_VALUE)
       return (FALSE);

   //  Fill in the size of the structure before using it.

   pe32.dwSize = sizeof(PROCESSENTRY32);

   //  Walk the snapshot of the processes, and for each process,
   //  display information.

   if (Process32First(hProcessSnap, &pe32))
   {
       DWORD         dwPriorityClass;
       BOOL          bGotModule = FALSE;
       MODULEENTRY32 me32       = {0};

       do
       {
           bGotModule = GetProcessModule(pe32.th32ProcessID,
               pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32));

           if (bGotModule)
           {
               HANDLE hProcess;

               // Get the actual priority class.
               hProcess = OpenProcess (PROCESS_ALL_ACCESS,
                   FALSE, pe32.th32ProcessID);
               dwPriorityClass = GetPriorityClass (hProcess);
               CloseHandle (hProcess);

               // Print the process's information.
               printf( "\nPriority Class Base\t%d\n",
                   pe32.pcPriClassBase);
               printf( "PID\t\t\t%d\n", pe32.th32ProcessID);
               printf( "Thread Count\t\t%d\n", pe32.cntThreads);
               printf( "Module Name\t\t%s\n", me32.szModule);
               printf( "Full Path\t\t%s\n\n", me32.szExePath);
           }
       }
       while (Process32Next(hProcessSnap, &pe32));
       bRet = TRUE;
   }
   else
       bRet = FALSE;    // could not walk the list of processes

   // Do not forget to clean up the snapshot object.

   CloseHandle (hProcessSnap);
   return (bRet);
}
PM MAIL WWW ICQ   Вверх
man2002ua
Дата 12.11.2002, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



:D только под NT4 это не шибко сработает


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
Люда
Дата 12.11.2002, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Это точно, а уменя как раз он родимый - NT :(
PM MAIL ICQ   Вверх
man2002ua
Дата 12.11.2002, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



:dg
извиняй...
на Delphi разберешся или переписать?

type UNICODE_STRING=record
   Length : word;
   MaximumLength : WORD;
   Buffer : PWideChar;
 end;

type TSom = record
       NextEntry : DWORD;
       ThreadCnt : DWORD;
       Reserv : array[1..6] of DWORD;
       CrTime : array[1..6] of DWORD;
       pName: UNICODE_STRING;
       prior : DWORD ;
       pid : DWORD;
       Inher : DWORD ;
       HandleCnt : DWORD ;
       Res:array[1..2] of DWORD;
       privCnt : DWORD ;
       Vm:array[1..11] of DWORD;
   end;

var
 NtQuerySystemInformation: function(v1:DWORD;v2:DWORD;v3:DWORD;v4:DWORD): integer stdcall;

procedure TForm1.FormCreate(Sender: TObject);
var Hmod, H, Hproc:THANDLE;
   pe: TPROCESSENTRY32;
   vi:TOSVersionInfoA;
   RetX:DWORD;
   ER: integer;
   my: ^TSom;
   S1,S2 : PChar;
   aaa1:array[1..131072] of DWORD;
begin
   H := LoadLibrary('ntdll.dll');
   @NtQuerySystemInformation := GetProcAddress(H,'NtQuerySystemInformation');
   asm
       lea eax,[aaa1];
       lea ebx,[RetX]
       push ebx;
       push 10000h;
       push eax;
       push 5;
       call NtQuerySystemInformation;
       mov [ER],eax;
   end;
   my := @aaa1[1];
   while true do
   begin
     if my^.NextEntry = 0 then break;
     if my^.pName.Buffer <> nil then
      begin
        StrCopy(S2,StrUpper(PChar(WideCharToString(my^.pName.Buffer))));
        KillPath(S2);
        if StrComp(S1,S2) = 0 then
        begin
          Hproc := OpenProcess(PROCESS_TERMINATE,FALSE,my^.pid);
          if Hproc <> 0 Then TerminateProcess(Hproc,0)
          else Error('Error process termination... ' + inttostr(GetLastError()));
            break;
          end;
      end;
      my := ptr(DWORD(my) + my^.NextEntry);
   end;
end;

Кривовато - но на скорую руку сойдет  :D


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
AntonSaburov
Дата 13.11.2002, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Надо конечно под NT 4.0 уже бросать что-то писать :)
В том же MSDN
EnumProcesses -> OpenProcess в цикле.
PM MAIL WWW ICQ   Вверх
man2002ua
Дата 13.11.2002, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



"EnumProcesses -> OpenProcess в цикле"
только при наличии необходимого SDK... допустим я его не имею. :thumbs-up


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
AntonSaburov
Дата 13.11.2002, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



http://www.akzhan.midi.ru/devcorn....6D.html

Вот там есть все :)
Оказывается, и я там руку приложил :)
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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