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

Вниз

Список процессов.   Найти похожие ветки 

 
Uncle Archi ©   (2003-05-06 23:51) [0]

Хоть и искал в FAQ этого сайта, так и не нашёл.
Как получить список процессов в Win2k?
И почему при повторном запуске этой процедуры вместо имён процессов возвращаются "?":


var
a:array[0..200] of DWord;
b:array[0..200] of Record
Path:String;
Name:String;
id:DWord;
HI:HIcon;
End;

Procedure TForm1.GetPr;
Var
n,n1:DWord;
i:Integer;
h:THandle;
m:PChar;
MH:HModule;
s:String;
HI:HIcon;
Begin
ListBox1.Clear;
New(m);
FillChar(a,SizeOf(a),0);
FillCHar(b,SizeOf(b),0);
EnumProcesses(@a,SizeOf(a),n);
n:=n div SizeOf(DWord);
For i:=2 to n do
Begin
b[i].id:=a[i];
h:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,a[i]);
If h=0 then Continue;
EnumProcessModules(h,@MH,1,n1);
GetModuleFileNameEx(h,MH,m,n1);
s:=String(m);
If Length(S)>4 then If s[2]="?" then Delete(s,1,4);
b[i].Path:=ExtractFilePath(S);
b[i].Name:=ExtractFileName(S);
HI:=ExtractIcon(h,PChar(s),0);
If HI<>0 then Image.Picture.Icon.Handle:=HI;
ListBox1.Items.Add(b[i].Name);
b[i].HI:=HI;
End;
End;



 
Igit ©   (2003-05-07 03:43) [1]

Я тоже искал... ненашел, тогда взял как в 9x, только он не работал и я поставил его в try except
procedure EnumWindowsProc(hW:HWND); stdcall;
var S:String;
begin
SetLength(S,SendMessage(hW,WM_GETTEXTLENGTH,0,0)+1);
SetLength(S,SendMessage(hW,WM_GETTEXT,Length(S),LPARAM(S)));
if s<>"" then
form1.ListBox4.Add(S);
end;
//============Обновить список окон========
procedure TForm1.Button20Click(Sender: PObj);
begin
listbox4.Clear;
try
EnumWindows(@EnumWindowsProc, 0);
except
end;
end;


 
AKu   (2003-05-07 12:21) [2]

Попробуй поискать в FAQ про NtQuerySystemInformation.


 
jack128 ©   (2003-05-07 20:57) [3]

Process32First - далее по ссылкам


 
Uncle Archi ©   (2003-05-10 15:32) [4]

Удалено модератором
Примечание: Сождание пустых сообщений, вмесо UP может получиться DOWN


 
Набережных С.   (2003-05-10 19:37) [5]


procedure TForm1.Button1Click(Sender: TObject);
var
PIDs: array of DWORD;
n, k: Cardinal;
i: integer;
H, MH: THandle;
s: string;
begin
n:=$10000;
SetLength(PIDs, n);
if not EnumProcesses(@PIDs[0], n * SizeOf(DWORD), n) then Exit;
SetLength(s, MAX_PATH);
for i:= 0 to Pred(n div SizeOf(DWORD)) do
begin
H:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PIDs[i]);
if H <> 0 then
try
if
EnumProcessModules(H, @MH, SizeOf(MH), k)
or (GetLastError = ERROR_PARTIAL_COPY)
then
begin
GetModuleFileNameEx(H, MH, @s[1], MAX_PATH);
Memo1.Lines.Add(PChar(s));
end;
finally
CloseHandle(H);
end;
end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
3-67728
niko4543
2003-06-27 17:22
2003.07.21
База данных в Делфи.


3-67673
AlexA
2003-06-25 15:58
2003.07.21
индикациz выполнения хранимой процедуры в IB


1-67766
Dmk
2003-07-09 02:56
2003.07.21
Проблема с курсорами


1-67852
default
2003-07-07 22:31
2003.07.21
Перевод программы с C на Object Pascal


6-67942
tovSuhov
2003-05-15 17:07
2003.07.21
Таймаут у TIdFTP