Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.56 MB
Время: 0.017 c
1-42507
Dim!S
2001-12-26 07:32
2002.01.14
Подключение htmlhelp


1-42462
voice
2001-12-25 11:03
2002.01.14
ShellExecute?


3-42343
Alexsandr
2001-12-10 04:33
2002.01.14
вопрос


4-42616
Kyd
2001-11-13 11:18
2002.01.14
SendMessage(MyHandle, WM_SetText, 0, Integer(TextToSet));


4-42626
shiva1
2001-11-15 18:10
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский