Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизКак получить список процессов ??? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c