Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Probleme beim Auslesen von Festertext

  Alt 5. Jan 2015, 18:17
Ob das so nun 100%-ig richtig ist, weiß ich nicht, aber versuch es doch mal so:
Delphi-Quellcode:
function start_process(const FileName: String): DWORD;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;

begin
  //Rückgabewert vordefinieren
  Result := 0;

  If not FileExists(FileName) then
    exit;

  //Variable mit nullen auffüllen und Größe setzen
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StartupInfo.cb := SizeOf(TStartupInfo);

  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_SHOW;

  If CreateProcess(nil, PChar(FileName + #0), nil, nil, false, 0, nil, nil,
                    StartupInfo, ProcessInfo) then
    try
      If WaitForInputIdle(ProcessInfo.hProcess, INFINITE) = 0 then
        Result := ProcessInfo.dwThreadId;
    finally
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
    end;
end;

function EnumThreadWndProc(Wnd: HWnd; Param: lParam): BOOL; stdcall;
var
  Len: integer;
  Title: string;
begin
  Result := true;
  if IsWindowVisible(Wnd) then
    begin
      Len := GetWindowTextLength(Wnd) + 1;
      SetLength(Title, Len);
      GetWindowText(Wnd, PChar(Title), Len);
      SetLength(Title, StrLen(PChar(Title)));
      TStringList(Param).Add(Title);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThreadId: DWORD;
  List: TStringlist;
  i: integer;
begin
  ThreadId := start_process('C:\Windows\notepad.exe');
  if ThreadId <> 0 then
    begin
      List := TStringList.Create;
      try
        EnumThreadWindows(ThreadId, @EnumThreadWndProc, lParam(List));
        for i := 0 to List.Count - 1 do
          ShowMessage(List[i]);
      finally
        List.Free;
      end;
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat