unità Unit1;
interfaccia
usi
Windows, messaggi, SysUtils, varianti, codici categoria, grafici, comandi, forme,
Dialoghi, StdCtrls, ShellAPI, TlHelp32;
tipo
TForm1 = codice categoria (TForm)
Button1: TButton;
procedura Button1Click (mittente: TObject);
riservato
{Dichiarazioni riservate}
pubblico
{Dichiarazioni pubbliche}
estremità;
varietà
Form1: TForm1;
esecuzione
{$R *.dfm}
tipo
TEnumData = annotazione
hW: HWND;
pID: DWORD;
estremità;
funzione EnumProc (hw: HWND; dati di varietà: TEnumData): Bool; stdcall;
varietà
pID: DWORD;
cominciare
Risultato: = allineare;
se (GetWindowLong (hw, GWL_HWNDPARENT) = 0) e
(IsWindowVisible (hw) o IsIconic (hw)) allora
cominciare
GetWindowThreadProcessID (hw, @pID);
Se pID = data.pID allora
cominciare
data.hW: = hW;
Risultato: = falso;
estremità; {Se}
estremità; {Se}
estremità; {EnumProc}
funzione WindowFromProcessID (pID: DWORD): HWND;
varietà
dati: TEnumData;
cominciare
data.pID: = pID;
data.hW: = 0;
EnumWindows (@EnumProc, longint (@data));
Risultato: = data.hW;
estremità; {WindowFromProcessID}
funzione WindowFromAppname32 (appname: Stringa): HWND;
{Introito soltanto il nome di schedario di applicazione, percorso non pieno!
Necessità di passare l'estensione pure. }
varietà
fotografia istantanea: Manico a t;
processEntry: TProcessEntry32;
cominciare
Risultato: = 0;
appName: = maiuscola (appname);
fotografia istantanea: = CreateToolhelp32Snapshot (
TH32CS_SNAPPROCESS,
0);
se fotografia istantanea <> 0 allora
prova
processEntry.dwSize: = Sizeof (processEntry);
se Process32First (fotografia istantanea, processEntry) allora
ripetizione
se AnsiCompareText (
appname,
ExtractFilename (StrPas (processEntry.szExeFile))
) = 0
allora
cominciare
Risultato: = WindowFromProcessID (processEntry.th32ProcessID);
Rottura;
estremità; {Se}
fino non a Process32Next (fotografia istantanea, processEntry);
infine
CloseHandle (fotografia istantanea);
estremità; {prova}
estremità; {WindowFromAppname32}
procedura TForm1.Button1Click (mittente: TObject);
varietà
x: Manico a t;
cominciare
ShellExecute (0, “si apre„, “c:\WINDOWS\notepad.exe„, '', '', SW_SHOW);
x: = WindowFromAppname32 (“NotePad.exe ");
ShowMessage (IntToStr (x));
estremità;
estremità.
|