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

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
1-1096008720
RoLeX2004
2004-09-24 10:52
2004.10.10
Как проверить соответствует ли имя файла заданной маске?


4-1093986950
S@shka
2004-09-01 01:15
2004.10.10
нет работает SetWaitableTimer


1-1095751011
Snip
2004-09-21 11:16
2004.10.10
Опять глупый вопрос по DLL


8-1090305304
Алекс
2004-07-20 10:35
2004.10.10
Звуки Windows


6-1090316461
highlander
2004-07-20 13:41
2004.10.10
Отправка СМС-сообщений, используя HTTP





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