Online
Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.214 Beiträge
Delphi 12 Athens
|
AW: Fenstername und Dateiname aus Handle herausfinden
8. Mär 2012, 21:03
Delphi-Quellcode:
function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
var
M, C, T: string;
X: array[0..MAX_PATH-1] of Char;
begin
FillChar(X, SizeOf(X), 0);
GetWindowModuleFileName(hwnd, @X, Length(X));
M := X;
FillChar(X, SizeOf(X), 0);
GetClassName(hwnd, @X, Length(X));
C := X;
SetLength(T, GetWindowTextLength(hwnd));
if T <> '' then
GetWindowText(hwnd, PChar(T), Length(T) + 1);
TMemo(lParam).Lines.Add(Format('%s %s %s', [
C, '"' + Copy(T, 1, 30) + IfThen(Length(T) > 30, '..."', '"'), M]));
Result := True;
end;
procedure TForm9.FormCreate(Sender: TObject);
var
H: HWND;
X: array[0..MAX_PATH-1] of Char;
begin
Application.MainFormOnTaskBar := False;
Application.Title := 'hallo :)';
H := FindWindow('TApplication', nil);
if H <> 0 then begin
GetWindowText(H, @X, Length(X));
Memo1.Lines.Add('"' + string(X) + '"');
end else
Memo1.Lines.Add('>> nix');
Memo1.Lines.Add('');
Memo1.Lines.Add('***');
H := 0;
repeat
H := FindWindowEx(0, H, 'TApplication', nil);
if H <> 0 then begin
GetWindowText(H, @X, Length(X));
Memo1.Lines.Add('"' + string(X) + '"');
end;
until H = 0;
Memo1.Lines.Add('');
Memo1.Lines.Add('***');
EnumWindows(@EnumWindowsProc, LPARAM(Memo1));
end;
Nur bei MainFormOnTaskBar=True hast du ein Problem.
Aus irgendeinem mir unerfindlichen Grund wird dort dieser TApplication-Fenstertitel absichtlich auf einen Leerstring gesetzt und nur in einer internen Stringvariable gespeichert, welche öffentlich natürlich nicht zugänglich ist.
$2B or not $2B
Geändert von himitsu ( 9. Mär 2012 um 18:39 Uhr)
|
|
Zitat
|