eenheid Unit1;
interface
gebruik
Vensters, Berichten, SysUtils, Varianten, Klassen, Grafiek, Controles, Vormen,
Dialogen, StdCtrls, ShellAPI, TlHelp32;
type
TForm1 = klasse (TForm)
Button1: TButton;
procedure Button1Click (Afzender: TObject);
privé
{Privé verklaringen}
openbaar
{Openbare verklaringen}
eind;
var
Form1: TForm1;
implementatie
{$R *.dfm}
type
TEnumData = verslag
hW: HWND;
pID: DWORD;
eind;
functie EnumProc (hw: HWND; var gegevens: TEnumData): Bool; stdcall;
var
pID: DWORD;
begin
Resultaat: = Waar;
als (GetWindowLong (hw, GWL_HWNDPARENT) = 0) en
(IsWindowVisible (hw) of IsIconic (hw)) dan
begin
GetWindowThreadProcessID (hw, @pID);
Als pID = data.pID toen
begin
data.hW: = hW;
Resultaat: = Vals;
eind; {Als}
eind; {Als}
eind; {EnumProc}
functie WindowFromProcessID (pID: DWORD): HWND;
var
gegevens: TEnumData;
begin
data.pID: = pID;
data.hW: = 0;
EnumWindows (@EnumProc, longint (@data));
Resultaat: = data.hW;
eind; {WindowFromProcessID}
functie WindowFromAppname32 (appname: Koord): HWND;
{Neem slechts toepassingsfilename, niet volledige weg!
Behoefte om de uitbreiding eveneens over te gaan. }
var
momentopname: T-hendel;
processEntry: TProcessEntry32;
begin
Resultaat: = 0;
appName: = In hoofdletters (appname);
momentopname: = CreateToolhelp32Snapshot (
TH32CS_SNAPPROCESS,
0);
als momentopname <> 0 toen
probeer
processEntry.dwSize: = (processEntry) Sizeof;
als Process32First (processEntry momentopname,) toen
herhaal
als AnsiCompareText (
appname,
ExtractFilename (StrPas (processEntry.szExeFile))
) = 0
dan
begin
Resultaat: = WindowFromProcessID (processEntry.th32ProcessID);
Onderbreking;
eind; {Als}
tot niet Process32Next (processEntry momentopname,);
tot slot
CloseHandle (momentopname);
eind; {poging}
eind; {WindowFromAppname32}
procedure TForm1.Button1Click (Afzender: TObject);
var
x: T-hendel;
begin
ShellExecute (0, „open“, „c:\WINDOWS\notepad.exe“, '', '', SW_SHOW);
x: = WindowFromAppname32 („NotePad.exe“);
ShowMessage (IntToStr (x));
eind;
eind.
|