Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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.
Желаю удачи в темных делах.
С уважением Алексей.



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

Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
4-42602
Shmel
2001-11-06 01:07
2002.01.14
Как получить текст из ячеек TstringGrid в чужом окне? Handle я знаю.


14-42563
.: Joiro :.
2001-11-18 19:51
2002.01.14
Контроверсальный вопрос...


1-42418
Wetnose
2001-12-27 07:09
2002.01.14
KeyDown для ScrollBar a


1-42406
Stive
2001-12-26 07:50
2002.01.14
nmhttp1.post


4-42638
Jazzy$
2001-11-10 23:17
2002.01.14
Фокус ввода.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский