Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.14;
Скачать: CL | DM;

Вниз

Как получить список процессов ???   Найти похожие ветки 

 
NetBreaker666   (2001-11-15 04:08) [0]

Помогите, Pls... и если можно, то скажите, как узнать, какие DLL"ки при attachЭены к процессу


 
YUS   (2001-11-15 07:08) [1]

Нужно узнать ID процесса ф-ция GetWindowThreadProcessId затем получить
список модулей CreateToolHelp32Snapshot и через ф-ции Module32First и Module32Next получить список всех dll и exe процесса.


 
jk   (2001-11-15 20:18) [2]

Для NT/2000/2001 ...
есть функции в psapi.dll
EnumProcesses
EnumProcessModules

Смотри в msdn


 
paul_shmakov   (2001-11-16 11:21) [3]

смотри здесь подробное описание для всех версий windows:
http://rsdn.ru/qna/?baseserv/enumproc.xml


 
lel   (2001-11-16 11:28) [4]

//Получает список запушенных процессов
function GetSystemProcess():TStringList;
var
List: TStringList;
PHandle: THandle;
ProcEntry:TProcessEntry32;
begin
List:= TStringList.Create;
result:=List;
List.Sorted:=true;
PHandle:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcEntry.dwSize:=sizeof(TProcessEntry32);
if Process32First(PHandle,ProcEntry)
then List.Add(ProcEntry.szExeFile);
while Process32Next(PHandle,ProcEntry) do List.Add(ProcEntry.szExeFile);
CloseHandle(PHandle);
end;

//Убивает лишний
procedure Kill(ProgramPath:string);
var
Hand,Handel:THandle;
ex:Cardinal;
ProcEntry:TProcessEntry32;
processID:Cardinal;
begin
Handel:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcEntry.dwSize:=sizeof(TProcessEntry32);
if Process32First(Handel,ProcEntry) then if
UpperCase(ProcEntry.szExeFile)=upperCase(ProgramPath)then
processID:=ProcEntry.th32ProcessID;
While Process32Next(Handel,ProcEntry) do if
UpperCase(ProcEntry.szExeFile)=upperCase(ProgramPath)then begin
processID:=ProcEntry.th32ProcessID;
break;
end;
CloseHandle(Handel);
Hand:=openProcess(PROCESS_TERMINATE,false,DWORD(processID));
GetExitCodeProcess(Hand,ex);
TerminateProcess(Hand,ex);
CloseHandle(Hand);
end;

//Используемых ими модулей
function GetProcessModules(ProcName:string):TStringList;
var
ProcEntr:TProcessEntry32;
ModEntr:TModuleEntry32;
Proc:THandle;
Module:THandle;
Modul:TStringList;
s:string;
begin
Modul:=TStringList.Create;
Modul.Sorted:=true;
Proc:=CreateToolHelp32Snapshot(TH32CS_SnapProcess,0);
ProcEntr.dwSize:=sizeof(TProcessEntry32);
if Process32First(Proc,ProcEntr) then if
not(UpperCase(ProcEntr.szExeFile)=UpperCase(ProcName))
then While Process32Next(Proc,ProcEntr) do if
UpperCase(ProcEntr.szExeFile)=UpperCase(ProcName)
then break;
ModEntr.dwSize:=sizeof(TModuleEntry32);
Module:=CreateToolHelp32Snapshot(TH32CS_SNAPMODULE,ProcEntr.th32ProcessID);
if Module32First(Module,ModEntr) then
begin
s:=ModEntr.szExePath;
s:=s+"="+IntToStr(ModEntr.GlblcntUsage);
Modul.Add(s);
end;
while Module32Next(Module,ModEntr) do
begin
s:=ModEntr.szExePath;
s:=s+"="+IntToStr(ModEntr.GlblcntUsage);
Modul.Add(s);
end;
CloseHandle(Proc);
CloseHandle(Module);
Result:=Modul;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items := GetSystemProcess;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=ListBox1.Items.Strings[ListBox1.ItemIndex] ;
Memo2.Lines:=GetProcessModules(ListBox1.Items.Strings[ListBox1.ItemIndex] );
// Kill(
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Kill(ListBox1.Items.Strings[ListBox1.ItemIndex]) ;
Sleep(100);
ListBox1.Items := GetSystemProcess;
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
begin
if (Process32First(hSnapshoot, pe32)) then
repeat
if pe32.th32ProcessID = ID then
begin
Path := pe32.szExeFile;
Break;
end;
until not Process32Next(hSnapshoot, pe32);
end;
CloseHandle (hSnapshoot);
end;


end.
Желаю удачи в темных делах.
С уважением Алексей.


 
paul_shmakov   (2001-11-16 11:31) [5]

2 lel:
это только win95,98,me,win2k. под nt не пойдет.



Страницы: 1 вся ветка

Текущий архив: 2002.01.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-42337
victor
2001-12-10 07:47
2002.01.14
добавление записи с если первичный индекс автоинкрементный


1-42398
Fast
2001-12-24 09:59
2002.01.14
Консольные программы


1-42501
dva
2001-12-25 23:03
2002.01.14
Помогите чайнику с Таймером


1-42413
Andrey196
2001-12-26 21:38
2002.01.14
Как фон Labela сделать прозрачным?


14-42568
Крутов Алексей
2001-11-19 11:46
2002.01.14
Delphi 4 & Windows 2000