unidade Unit1;
relação
usos
Windows, mensagens, SysUtils, variações, classes, gráficos, controles, formulários,
Diálogos, StdCtrls, ShellAPI, TlHelp32;
tipo
TForm1 = classe (TForm)
Button1: TButton;
procedimento Button1Click (remetente: TObject);
confidencial
{Declarações confidenciais}
público
{Declarações públicas}
extremidade;
var
Form1: TForm1;
execução
{$R *.dfm}
tipo
TEnumData = registro
hW: HWND;
pID: DWORD;
extremidade;
função EnumProc (hw: HWND; dados do var: TEnumData): Bool; stdcall;
var
pID: DWORD;
começar
Resultado: = retificar;
se (GetWindowLong (hw, GWL_HWNDPARENT) = 0) e
(IsWindowVisible (hw) ou IsIconic (hw)) então
começar
GetWindowThreadProcessID (hw, @pID);
Se pID = data.pID então
começar
data.hW: = hW;
Resultado: = falso;
extremidade; {Se}
extremidade; {Se}
extremidade; {EnumProc}
função WindowFromProcessID (pID: DWORD): HWND;
var
dados: TEnumData;
começar
data.pID: = pID;
data.hW: = 0;
EnumWindows (@EnumProc, longint (@data));
Resultado: = data.hW;
extremidade; {WindowFromProcessID}
função WindowFromAppname32 (appname: Corda): HWND;
{Tomada somente o nome de arquivo da aplicação, trajeto nao cheio!
Necessidade de passar também a extensão. }
var
instantâneo: THandle;
processEntry: TProcessEntry32;
começar
Resultado: = 0;
appName: = UpperCase (appname);
instantâneo: = CreateToolhelp32Snapshot (
TH32CS_SNAPPROCESS,
0);
se instantâneo <> 0 então
tentativa
processEntry.dwSize: = Sizeof (processEntry);
se Process32First (instantâneo, processEntry) então
repetição
se AnsiCompareText (
appname,
ExtractFilename (StrPas (processEntry.szExeFile))
) = 0
então
começar
Resultado: = WindowFromProcessID (processEntry.th32ProcessID);
Ruptura;
extremidade; {Se}
até não Process32Next (instantâneo, processEntry);
finalmente
CloseHandle (instantâneo);
extremidade; {tentativa}
extremidade; {WindowFromAppname32}
procedimento TForm1.Button1Click (remetente: TObject);
var
x: THandle;
começar
ShellExecute (0, “abrem”, “c:\WINDOWS\notepad.exe”, '', '', SW_SHOW);
x: = WindowFromAppname32 (“NotePad.exe ");
ShowMessage (IntToStr (x));
extremidade;
extremidade.
|