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

Вниз

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

 
LOX ©   (2003-09-13 13:24) [0]

Как получить список запущенных приложений. Если можно, то с путями к приложения.
У меня XP.


 
LOX ©   (2003-09-14 12:30) [1]

Ответьте, пожалуйста.


 
Erazzer   (2003-09-14 22:16) [2]

Используй API Process32First/Next. Точных названий функций не помню, но ты введи этот текстик и нажми F1, для платформы NT/2K/XP работают ТАКЖЕ функции типа enumprocesses_какая-то хрень, короче смотри справку и разные FAQ, особенно на этом портале!
Seek"n"Destroy...


 
Erazzer   (2003-09-14 22:19) [3]

Используй API Process32First/Next. Точных названий функций не помню, но ты введи этот текстик и нажми F1, для платформы NT/2K/XP работают ТАКЖЕ функции типа enumprocesses_какая-то хрень, короче смотри справку и разные FAQ, особенно на этом портале!
Seek"n"Destroy...


 
LOX ©   (2003-09-15 14:35) [4]

Напишите по подробнее


 
Alibaba ©   (2003-09-15 14:52) [5]

procedure TfrmMain.btnGetListClick(Sender: TObject);
var
Wnd : hWnd;
buff: array [0..127] of Char;
begin
lb.Clear;
Wnd := GetWindow(Application.Handle, gw_HWndFirst);
while Wnd <> 0 do
begin {Не показываем:}
if (Wnd <> Application.Handle) and {-Собственное окно}
IsWindowVisible(Wnd) AND {-Невидимые окна}
(GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0){-Окна без заголовков}
then
begin
GetWindowText(Wnd, buff, sizeof(buff));
lb.Items.Add(StrPas(buff));
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
lb.ItemIndex := 0;
end;


 
Songoku ©   (2003-09-15 16:29) [6]

Вы хоть читать умеете???
Он хочет узнать какие приложения(модули) в системе загружыны!!! НЕ ОКНА.
Process32First - ны выдаёт путь к приложения а только названия exe фаила!!!

NTAPI Hook_NtQuerySystemInformation(
LONG type, // тип требуемой информации
PVOID SystemInformation, // указатель на буфер, в который вернется информация
LONG SystemInformationLength, // размер буфера в байтах
PLONG ReturnLength // сколько байт было возвращено или требуется
);
typedef struct {
FILETIME ProcessorTime;
ULONG unk2, unk3;
FILETIME CreateTime;
ULONG unk6;
ULONG StartAddress;
ULONG ProcessID;
ULONG ThreadID;
ULONG CurrentPriority;
ULONG BasePriority;
ULONG ContextSwitchesPerSec;
ULONG ThreadState;
ULONG ThreadWaitReason;
ULONG unk15;
} SYSTEM_THREAD_INFORMATION;

typedef struct {
ULONG NextOffest; // следующий процесс
ULONG ThreadCount;
ULONG unk2, unk3, unk4, unk5, unk6, unk7;
FILETIME CreateTime;
FILETIME UserTime;
FILETIME KernelTime;
ULONG unk14;
WCHAR *pModuleName; /* unicode */
ULONG BasePriority;
ULONG ProcessID;
ULONG InheritedFromUniqueProcessID;
ULONG HandleCount;
ULONG unk20, unk21;
ULONG PeekVirtualSize;
ULONG VirtualSize;
ULONG PageFaultCountPerSec;
ULONG PeakWorkingSetSize;
ULONG WorkingSetSize;
ULONG PeekPagedPoolUsage;
ULONG PagedPoolUsage;
ULONG PeekNonPagedPoolUsage;
ULONG NonPagedPoolUsage;
ULONG unk31; /* PagefileUsage ? */
ULONG PeakPagefileUsage;
ULONG unk33; /* PrivateBytes ? */
SYSTEM_THREAD_INFORMATION ThreadInfos[1]; // потоки данного процесса
} SYSTEM_PROCESS_INFORMATION;

Эта не докуминтировная функция WindowsNT/2K/XP. Не спрашивай меня как с не работать я сам ещё не разобрался!!! Ноя знаю точно что он работает точно также каки EnumProcesses - смотри в MSDN примеры и докуминтацию!!!


 
DVM ©   (2003-09-15 16:30) [7]


> Alibaba © (15.09.03 14:52) [5]

Речь не об окнах. Этот кусок взят из библиотеки готовых решений, но не по теме.

> LOX ©

Здесь это столько раз встречалось, проще поискать по словосочетанию "Получить список процессов" тут или в Яндексе.
Писать подробнее лень.


 
Songoku ©   (2003-09-15 16:38) [8]

Ах да я кое что забыл.
Делай так EnumProcesses(PSAPI) а потом узновай путь GetModuleFileName функцией.


 
DVM ©   (2003-09-15 16:42) [9]

Еще надо добавить, что в разных версиях Windows получение информации о процессах производится по-разному.
Есть такая известнейшая книга "Delphi 5(6) Руководство разработчика" в 2 томах. Там об этом подробно все расписано.


 
Alibaba ©   (2003-09-17 16:19) [10]

>DVM © (15.09.03 16:30) [7]

Этот кусок может быть в библиотеке готовых решений.
На авторство не претендую - в очень многих примерах встречается.

Что не по теме - согласен.
Не внимательно прочитал.


 
FIREHACK   (2003-09-17 17:33) [11]

ЛОВИ НЕ ЖАЛКО!!!



type

TProcessInformation = record
NextOffset: cardinal; // следующий процесс
ThreadCount: cardinal;
unk2, unk3, unk4, unk5, unk6, unk7: cardinal;
CreateTime: TFileTime;
UserTime: TFileTime;
KernelTime: TFileTime;
unk14: cardinal;
pModuleName: PWideChar; //* unicode */
BasePriority: cardinal;
ProcessID: cardinal;
InheritedFromUniqueProcessID: cardinal;
HandleCount: cardinal;
unk20, unk21: cardinal;
PeekVirtualSize: cardinal;
VirtualSize: cardinal;
PageFaultCountPerSec: cardinal;
PeakWorkingSetSize: cardinal;
WorkingSetSize: cardinal;
PeekPagedPoolUsage: cardinal;
PagedPoolUsage: cardinal;
PeekNonPagedPoolUsage: cardinal;
NonPagedPoolUsage: cardinal;
unk31: cardinal; //* PagefileUsage ? */
PeakPagefileUsage: cardinal;
unk33: cardinal; //* PrivateBytes ? */
ThreadInfos: PThreadInformation; // потоки данного процесса
end;

TEnumNtProcessesProc = function (ProcessInformation:TProcessInformation; Param:DWORD):Boolean;stdcall;

function NTDLLEnumProcesses(EnumProc:TEnumNtProcessesProc;Param:DWORD):Boolean;
var
NtQuerySystemInformation: TNtQuerySystemInformation;
i:integer;
proc:PProcessInformation;
p:pointer;
hNTDll:HINST;
begin
Result:=False;
hNTDll:=GetModuleHandle("ntdll.dll");
if hNTDll <32 then exit;
try
@NtQuerySystemInformation:=GetProcAddress(hNTDll, "NtQuerySystemInformation");
if assigned(@NtQuerySystemInformation) then
begin
// GetMem(p, 30000);
p:= GetMemory(100000);
proc:=p;
Result:=NtQuerySystemInformation(5, proc, 40000,i)=0;
while Result do
begin
if not EnumProc(Proc^,Param) then Break;
if proc^.NextOffset=0 then break;
proc:=pointer(cardinal(proc)+proc^.NextOffset);
end;
FreeMemory(p);
end;
finally
end;
end;




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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
4-42327
Guest
2003-09-04 15:19
2003.11.13
Переключение раскладки


4-42294
MishaS
2003-09-09 18:36
2003.11.13
Как програмновызвать окно Установка и Удаление программ


3-41069
Alexus
2003-10-21 19:14
2003.11.13
Подскажите с какой стороны взяться...


14-42121
Ru
2003-10-22 15:02
2003.11.13
Есть ли жизнь на Марсе?


1-41140
bon
2003-11-03 15:02
2003.11.13
Свойства