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;