var
WinTitles : TStrings;
ErrorMessage : string;
.............//根据进程ID号取该进程的主窗口标题
function EnumProc(hwnd_enum:hwnd;lparam:LPARAM):boolean;stdcall;
var
WinText : array[0..254] of char;
i : integer;
begin
for i := 0 to 254 do WinText[i] := #0; GetWindowText(hwnd_enum,WinText,255);
if not(GetParent(hwnd_enum) > 0) and (WinText[0] <> #0) and (isWindowVisible(hwnd_enum)) then
begin
WinTitles.Add(WinText);
end;
result := true;
end;
function MyUtil_GetWindowTitleByProcessID(pid:integer;i_mode:integer;out WinTitle:shortString):integer;stdcall
var
FSnapshotHandle:THandle;
FThreadEntry32:TThreadEntry32;
i,li_return :integer;
J : longbool;
label dorepeat;
begin
ErrorMessage := '';
try
if i_mode = 0 then
begin
WinTitles.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,pid); FThreadEntry32.dwSize:=Sizeof(FThreadEntry32);
Thread32First(FSnapshotHandle,FThreadEntry32);
if FThreadEntry32.th32OwnerProcessID = pid then
begin
EnumThreadWindows(FThreadEntry32.th32ThreadID,@EnumProc,1);
end;
dorepeat:
j := Thread32Next(FSnapshotHandle,FThreadEntry32);
if FThreadEntry32.th32OwnerProcessID = pid then
begin
EnumThreadWindows(FThreadEntry32.th32ThreadID,@EnumProc,1);
end; if j then goto dorepeat;
CloseHandle(FSnapshotHandle);
li_return := WinTitles.Count;
end
else
begin
if i_mode > WinTitles.Count then
li_return := -1
else
begin
WinTitle := WinTitles[i_mode -1];
FormatShortSTring(WinTitle);
li_return := 1
end;
end;
except
on E: Exception do
begin
ErrorMessage := string(E.Message);
li_return := -1;
end;
end;
result := li_return;
end;
WinTitles : TStrings;
ErrorMessage : string;
.............//根据进程ID号取该进程的主窗口标题
function EnumProc(hwnd_enum:hwnd;lparam:LPARAM):boolean;stdcall;
var
WinText : array[0..254] of char;
i : integer;
begin
for i := 0 to 254 do WinText[i] := #0; GetWindowText(hwnd_enum,WinText,255);
if not(GetParent(hwnd_enum) > 0) and (WinText[0] <> #0) and (isWindowVisible(hwnd_enum)) then
begin
WinTitles.Add(WinText);
end;
result := true;
end;
function MyUtil_GetWindowTitleByProcessID(pid:integer;i_mode:integer;out WinTitle:shortString):integer;stdcall
var
FSnapshotHandle:THandle;
FThreadEntry32:TThreadEntry32;
i,li_return :integer;
J : longbool;
label dorepeat;
begin
ErrorMessage := '';
try
if i_mode = 0 then
begin
WinTitles.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,pid); FThreadEntry32.dwSize:=Sizeof(FThreadEntry32);
Thread32First(FSnapshotHandle,FThreadEntry32);
if FThreadEntry32.th32OwnerProcessID = pid then
begin
EnumThreadWindows(FThreadEntry32.th32ThreadID,@EnumProc,1);
end;
dorepeat:
j := Thread32Next(FSnapshotHandle,FThreadEntry32);
if FThreadEntry32.th32OwnerProcessID = pid then
begin
EnumThreadWindows(FThreadEntry32.th32ThreadID,@EnumProc,1);
end; if j then goto dorepeat;
CloseHandle(FSnapshotHandle);
li_return := WinTitles.Count;
end
else
begin
if i_mode > WinTitles.Count then
li_return := -1
else
begin
WinTitle := WinTitles[i_mode -1];
FormatShortSTring(WinTitle);
li_return := 1
end;
end;
except
on E: Exception do
begin
ErrorMessage := string(E.Message);
li_return := -1;
end;
end;
result := li_return;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货