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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
6-7577
Алексей
2003-04-26 15:19
2003.07.03
послать пакет по IPX


1-7475
acsoft
2003-06-20 09:43
2003.07.03
Пара вопросов по TPopupMenu


14-7638
stream
2003-06-14 14:11
2003.07.03
Инкапсуляция


1-7432
BJValentine
2003-06-23 12:16
2003.07.03
Обработчики событий формы


6-7574
GTS
2003-04-28 13:31
2003.07.03
webbrowser





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский