Ceci est une ancienne révision du document !
Les Processus
Classes
Les classes qui gèrent les processus :
Astuces
Trouver le filename complet d'une commande
Exemple : trouver le filename complet de la commande php
.
Grâce a la fonction FindFilenameOfCmd(ProgramFilename: string): string
qui se trouve dans l'unit UTF8Process
(voir ci-dessus)
FindFilenameOfCmd('php')
⇒ C:\Program Files\php\php-7.3.6\php.exe
Cette fonction utilise les fonctions suivantes : fileutil:FindDefaultExecutablePath
qui parcours tous les PATHs a la recherche de ce fichier (grâce à fileutil:SearchFileInPath
).
N'aurait t'il pas été plus facile d'utiliser
JwaPsApi:GetProcessImageFileName
ou QueryFullProcessImageNameA
en passant le Handle du TProcess pour retrouver ce nom de fichier ???
Énumérer les processus
function WindowsAppIsRunning(const ExeName: string): integer; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := 0; while integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeName))) then begin Inc(Result); // SendMessage(Exit-Message) possible? end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end;
Énumérer les fenêtres actives
uses Windows; ... function EnumWindowsProc(WHandle: HWND; LParM: LParam): longbool; stdcall; export; var vTitleC, vClassC: array[0..128] of char; vTitle, vClass: string; begin Result := True; GetWindowText(wHandle, vTitleC, 128); GetClassName(wHandle, vClassC, 128); vTitle := vTitleC; vClass := vClassC; Form1.MMLog.Lines.Add('Window Title[%s], Class[%s], Handle[%d], %s', [vTitle, vClass, whandle, BoolToStr(IsWindowVisible(wHandle), 'Visible', 'Caché')]); end; ... // On appel cette procédure avec : EnumWindows(@EnumWindowsProc, 0);
Vous pourriez laisser un commentaire si vous étiez connecté.