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

Вниз

как получить список всех запущенных приложений?   Найти похожие ветки 

 
dolmat ©   (2003-04-18 15:11) [0]

может кто знает. подскажите. Очень нужно.
заранее благодарен.


 
MBo ©   (2003-04-18 15:13) [1]

ToolHelp32


 
Sniffer ©   (2003-04-18 15:13) [2]

..........................
var
PE : TProcessEntry32;
Snap : THandle;
begin
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PE.dwSize := SizeOf(PE);
if Process32First(Snap, PE) then
repeat
id := PE.th32ProcessID;
...................................
until not Process32Next(Snap, PE);
.......................................



 
dolmat ©   (2003-04-18 16:25) [3]

Ругается TProcessEntry32 неизвестная переменная.
Чего у меня не хватает?


 
DVM ©   (2003-04-18 16:39) [4]


> Чего у меня не хватает?

Uses ...то что написали выше...


 
dolmat ©   (2003-04-18 16:52) [5]

Так и ToolHelp32 тоже ругается или я не так что-нибудь понял.


 
default ©   (2003-04-18 16:54) [6]

пиши на мыло мне
прогу простенькую пришлю по закрытию процессов типа как в фаре


 
DVM ©   (2003-04-18 17:13) [7]

Модуль называется не ToolHelp32!


 
Guerrilero   (2003-04-18 20:53) [8]

uses TLHelp32


 
dolmat ©   (2003-04-22 09:45) [9]

>default
А где же адрес? Кньте в меня прогой.


 
XAOC   (2003-04-23 16:57) [10]

>dolmat
Ты уверен что у тебя не NT? :)


 
Proton ©   (2003-04-23 19:37) [11]

Вообщем попытка добиться универсальности

unit ProcList;

interface

uses Windows;

type ProcessRC = record
name : string;
id : DWord;
end;
PrcList = array of ProcessRC;

Function GetProcessList9X(var List: PrcList) : DWord;
Function GetProcessListNT(var List:PrcList): DWord;
Function GetProcessList(var list:PrcList):dword;

implementation

uses TlHelp32;

function GetProcessHandle(ProcessID: DWord): THandle;
begin
Result := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
end;

Function GetProcessList9X(var List: PrcList) : DWord;
var
I: Integer;
hSnapshoot: integer;
pe32: TProcessEntry32;
begin
result := 0 ;
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hSnapshoot <> -1) then
begin
i := 0; SetLength(list,i);
pe32.dwSize := SizeOf(TProcessEntry32);
if (Process32First(hSnapshoot, pe32)) then
repeat
inc(i); SetLength(list,i);
with list[pred(i)] do
begin
name := copy(pe32.szExeFile,1,lstrlen(pe32.szExeFile));
if name = "" then name := "[<---->]";
id := pe32.th32ProcessID;
end;
until not Process32Next(hSnapshoot, pe32);

CloseHandle (hSnapshoot);
result := i;
end;
end;



/////////


type long=integer;
ThreadInfo = record
ftCreationTime : FILETIME;
dwUnknown1 : DWORD;
dwStartAddress : DWORD;
dwOwningPID : DWORD;
dwThreadID : DWORD;
dwCurrentPriority : DWORD;
dwBasePriority : DWORD;
dwContextSwitches : DWORD;
dwThreadState : DWORD;
dwUnknown2 : DWORD;
dwUnknown3 : DWORD;
dwUnknown4 : DWORD;
dwUnknown5 : DWORD;
dwUnknown6 : DWORD;
dwUnknown7 : DWORD;
end;
ProcessInfo = record
dwOffset : DWORD; // an ofset to the next Process structure
dwThreadCount : DWORD;
dwUnkown1 : array [1..6] of DWORD;
ftCreationTime : FILETIME;
dwUnkown2 : DWORD;
dwUnkown3 : DWORD;
dwUnkown4 : DWORD;
dwUnkown5 : DWORD;
dwUnkown6 : DWORD;
pszProcessName : PWCHAR;
dwBasePriority : DWORD;
dwProcessID : DWORD;
dwParentProcessID : DWORD;
dwHandleCount : DWORD;
dwUnkown7 : DWORD;
dwUnkown8 : DWORD;
dwVirtualBytesPeak : DWORD;
dwVirtualBytes : DWORD;
dwPageFaults : DWORD;
dwWorkingSetPeak : DWORD;
dwWorkingSet : DWORD;
dwUnkown9 : DWORD;
dwPagedPool : DWORD; // kbytes
dwUnkown10 : DWORD;
dwNonPagedPool : DWORD; // kbytes
dwPageFileBytesPeak : DWORD;
dwPageFileBytes : DWORD;
dwPrivateBytes : DWORD;
dwUnkown11 : DWORD;
dwUnkown12 : DWORD;
dwUnkown13 : DWORD;
dwUnkown14 : DWORD;
ati : ThreadInfo;
end;

Function GetProcessListNT(var List:PrcList): DWord;
var NtQSI: function(l1:LONG; PVOID:pointer;l2:LONG;l3:LONG):long; stdcall;
h : THANDLE ;
pinfo : ^ProcessInfo;
buf : array [1..20480] of char;
i : integer;
begin
Result := 0;
h := LoadLibrary("NTDLL.DLL");
@ntqsi := GetProcAddress(h,"NtQuerySystemInformation");
if @ntqsi <> nil then
begin
i := 0; SetLength(list,i);
FillChar(buf,sizeof(buf),#0);
ntqsi(5,@buf,sizeof(buf),0);
pinfo := @buf;
while true do
begin
inc(i); SetLength(list,i);
with list[pred(i)] do
begin
name := copy(pinfo.pszProcessName,1,lstrlenw(pinfo.pszProcessName));
if name = "" then name := "[<---->]";
id := pinfo.dwProcessID;
end;
if pinfo.dwOffset=0 then break;
pinfo := pointer(integer(@pinfo^) + integer(pinfo.dwOffset));
end;
Result := i;
end;
end;

//////////

Function GetProcessList(var list:PrcList):dword;
var vi:TOSVersionInfo;
begin
vi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(vi);
case vi.dwPlatformId of
VER_PLATFORM_WIN32s,
VER_PLATFORM_WIN32_WINDOWS : result := GetProcessList9X(list);
VER_PLATFORM_WIN32_NT : Result := GetProcessListNT(list);
else Result := GetProcessListNT(list); // default nt (win2k - nt5)
end;
end;

end.



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

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

Наверх




Память: 0.5 MB
Время: 0.02 c
14-7636
Schummi
2003-06-14 18:02
2003.07.03
Как заработать деньги?


1-7504
Mishenka
2003-06-20 23:06
2003.07.03
Можно ли в MessageBox вставлять названия кнопок на русском языке?


14-7615
Soft
2003-06-18 18:40
2003.07.03
LCD printer


14-7706
Burmistroff
2003-06-14 18:31
2003.07.03
www.coderz.net = 127.0.0.1 ???


1-7456
koks
2003-06-20 10:28
2003.07.03
принудительно перерисовать форму