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

Вниз

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

 
Multy   (2004-09-07 13:35) [0]

Я могу найти нужное приложение по заголовку (H := FindWindow(nil, "MySite - Microsoft Internet Explorer");)
А вот как просмотреть список всех, причём заголовок может совпадать частично.


 
DVM ©   (2004-09-07 13:38) [1]


> А вот как просмотреть список всех

EnumWindows()


 
Multy   (2004-09-07 13:44) [2]

А по подробнее, а то нащёл пример который находит первое приложение, а мне надо просмотреть весь список запущеных приложений.


 
MetalFan ©   (2004-09-07 15:45) [3]

uses
 Psapi, tlhelp32;

procedure CreateWin9xProcessList(List: TstringList);
var
 hSnapShot: THandle;
 ProcInfo: TProcessEntry32;
begin
 if List = nil then Exit;
 hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 if (hSnapShot <> THandle(-1)) then
 begin
   ProcInfo.dwSize := SizeOf(ProcInfo);
   if (Process32First(hSnapshot, ProcInfo)) then
   begin
     List.Add(ProcInfo.szExeFile);
     while (Process32Next(hSnapShot, ProcInfo)) do
       List.Add(ProcInfo.szExeFile);
   end;
   CloseHandle(hSnapShot);
 end;
end;

procedure CreateWinNTProcessList(List: TstringList);
var
 PIDArray: array [0..1023] of DWORD;
 cb: DWORD;
 I: Integer;
 ProcCount: Integer;
 hMod: HMODULE;
 hProcess: THandle;
 ModuleName: array [0..300] of Char;
begin
 if List = nil then Exit;
 EnumProcesses(@PIDArray, SizeOf(PIDArray), cb);
 ProcCount := cb div SizeOf(DWORD);
 for I := 0 to ProcCount - 1 do
 begin
   hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or
     PROCESS_VM_READ,
     False,
     PIDArray[I]);
   if (hProcess <> 0) then
   begin
     EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb);
     GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName));
     List.Add(ModuleName);
     CloseHandle(hProcess);
   end;
 end;
end;

procedure GetProcessList(var List: TstringList);
var
 ovi: TOSVersionInfo;
begin
 if List = nil then Exit;
 ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
 GetVersionEx(ovi);
 case ovi.dwPlatformId of
   VER_PLATFORM_WIN32_WINDOWS: CreateWin9xProcessList(List);
   VER_PLATFORM_WIN32_NT: CreateWinNTProcessList(List);
 end
end;

function EXE_Running(FileName: string; bFullpath: Boolean): Boolean;
var
 i: Integer;
 MyProcList: TstringList;
begin
 MyProcList := TStringList.Create;
 try
   GetProcessList(MyProcList);
   Result := False;
   if MyProcList = nil then Exit;
   for i := 0 to MyProcList.Count - 1 do
   begin
     if not bFullpath then
     begin
       if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then
         Result := True
     end
     else if CompareText(MyProcList.strings[i], FileName) = 0 then Result := True;
     if Result then Break;
   end;
 finally
   MyProcList.Free;
 end;
end;

// Example 1: Is a Exe-File running ?
procedure TForm1.Button1Click(Sender: TObject);
begin
 if EXE_Running("Notepad.exe", False) then
   ShowMessage("EXE is running")
 else
   ShowMessage("EXE is not running");
end;

// Example 2: List running Exe-Files
procedure TForm1.Button3Click(Sender: TObject);
var
 i: Integer;
 MyProcList: TstringList;
begin
 MyProcList := TStringList.Create;
 try
   GetProcessList(MyProcList);
   if MyProcList = nil then Exit;
   for i := 0 to MyProcList.Count - 1 do
     ListBox1.Items.Add(MyProcList.Strings[i]);
 finally
   MyProcList.Free;
 end;
end;



 
DVM ©   (2004-09-08 12:05) [4]


> MetalFan ©   (07.09.04 15:45) [3]

Это список процессов, а похоже автору нужен список приложений, т.е. аналог того списка, что на панели задач.

> Multy  

Поищи, тут где то был пример использования различных EnumFunctions от Игоря Шевченко.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
4-1092148739
DeadMeat
2004-08-10 18:38
2004.10.10
ScreenShot


1-1096113812
cv
2004-09-25 16:03
2004.10.10
keypres


1-1095743995
leonidus
2004-09-21 09:19
2004.10.10
Вопрос по созданию класса


4-1094467930
S@shka
2004-09-06 14:52
2004.10.10
Dll c CreateThread внутри


3-1095152992
Medik
2004-09-14 13:09
2004.10.10
запрос в SQL Server 2000 и Paradox