unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,TLHelp32,StdCtrls, ExtCtrls, ComCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
StatusBar1: TStatusBar;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
WindowHandle: THandle;
ProcessHandle: THandle;
h:HWnd;
implementation
{$R *.dfm}
function MyEnumWindowProc(AHandle: THandle; LParam: LongWord): boolean;
stdcall;
var
ProcessID: THandle;
begin
ProcessID := 0;
GetWindowThreadProcessID(AHandle, ProcessID);
Result :=
not (ProcessID = LParam);
if not Result
then
WindowHandle := AHandle;
end;
function GetWindowHandleByExeName(
const AExeName:
string): THandle;
var
SnapShot: THandle;
p: TProcessEntry32;
begin
Result := 0;
WindowHandle := 0;
ProcessHandle := 0;
p.dwSize := SizeOf(p);
SnapShot := CreateToolhelp32Snapshot(TH32CS_SnapProcess, 0);
try
if Process32First(SnapShot, p)
then
repeat
if AnsiLowerCase(AExeName) = AnsiLowerCase(p.szExeFile)
then
ProcessHandle := p.th32ProcessID;
until (ProcessHandle <> 0)
or not Process32Next(SnapShot, p);
EnumWindows(@MyEnumWindowProc, ProcessHandle);
GetParent(WindowHandle);
Result := WindowHandle;
finally
CloseHandle(SnapShot);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var myBuf:
array[0..250]
of Char;
begin
WindowHandle := GetWindowHandleByExeName('
putty.exe');
GetWindowText(WindowHandle, myBuf, sizeof(myBuf));
StatusBar1.SimpleText:=myBuf;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
self.Left:=round((screen.Width/2)-(self.Width/2));
self.Top:=0;
end;
end.