unité Unit1 ;
interface
utilisations
Windows, messages, SysUtils, variantes, classes, graphiques, commandes, formes,
Dialogues, StdCtrls, ShellAPI, TlHelp32 ;
type
TForm1 = classe (TForm)
Button1 : TButton ;
procédé Button1Click (expéditeur : TObject) ;
privé
{Déclarations privées}
public
{Déclarations publiques}
extrémité ;
variété
Form1 : TForm1 ;
exécution
{$R *.dfm}
type
TEnumData = disque
hW : HWND ;
PID : DWORD ;
extrémité ;
fonction EnumProc (hw : HWND ; données de variété : TEnumData) : Bool ; stdcall ;
variété
PID : DWORD ;
commencer
Résultat : = rectifier ;
si (GetWindowLong (hw, GWL_HWNDPARENT) = 0) et
(IsWindowVisible (hw) ou IsIconic (hw)) puis
commencer
GetWindowThreadProcessID (hw, @pID) ;
Si PID = puis data.pID
commencer
data.hW : = hW ;
Résultat : = faux ;
extrémité ; {Si}
extrémité ; {Si}
extrémité ; {EnumProc}
fonction WindowFromProcessID (PID : DWORD) : HWND ;
variété
données : TEnumData ;
commencer
data.pID : = PID ;
data.hW : = 0 ;
EnumWindows (@EnumProc, longint (@data)) ;
Résultat : = data.hW ;
extrémité ; {WindowFromProcessID}
fonction WindowFromAppname32 (appname : Corde) : HWND ;
{Prise seulement le nom de fichier d'application, chemin non plein !
Le besoin de passer la prolongation aussi bien. }
variété
instantané : Poignée en T ;
processEntry : TProcessEntry32 ;
commencer
Résultat : = 0 ;
appName : = haut de casse (appname) ;
instantané : = CreateToolhelp32Snapshot (
TH32CS_SNAPPROCESS,
0) ;
s'instantané <> 0 puis
essai
processEntry.dwSize : = Sizeof (processEntry) ;
si Process32First (instantané, processEntry) puis
répétition
si AnsiCompareText (
appname,
ExtractFilename (StrPas (processEntry.szExeFile))
) = 0
puis
commencer
Résultat : = WindowFromProcessID (processEntry.th32ProcessID) ;
Coupure ;
extrémité ; {Si}
jusque pas à Process32Next (instantané, processEntry) ;
finalement
CloseHandle (instantané) ;
extrémité ; {essai}
extrémité ; {WindowFromAppname32}
procédé TForm1.Button1Click (expéditeur : TObject) ;
variété
X : Poignée en T ;
commencer
ShellExecute (0, « s'ouvrent », « c:\WINDOWS\notepad.exe », '', '', SW_SHOW) ;
X : = WindowFromAppname32 (« NotePad.exe ") ;
ShowMessage (IntToStr (x)) ;
extrémité ;
extrémité.
|