Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
Delphi 12 Athens
|
AW: Probleme beim Auslesen von Festertext
5. Jan 2015, 19: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
|
|
Zitat
|