Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenstername und Dateiname aus Handle herausfinden (https://www.delphipraxis.net/166877-fenstername-und-dateiname-aus-handle-herausfinden.html)

Helmi 4. Mär 2012 08:19

Fenstername und Dateiname aus Handle herausfinden
 
Hallo,

ist es möglich über einen Prozess-Handle an den Fensternamen und vielleicht auch noch an den Dateinamen zu gelangen?

Ich finde hier nur den anderen weg, also Name bekannt, Handle unbekannt

Popov 4. Mär 2012 08:29

AW: Fenstername und Dateiname aus Handle herausfinden
 
Eventuell das?

http://www.delphipraxis.net/18343-pr...dateiname.html

Helmi 4. Mär 2012 09:42

AW: Fenstername und Dateiname aus Handle herausfinden
 
Zitat:

Zitat von Popov (Beitrag 1154364)

Klingt schon ganz gut!
Ich habe beide Funktionen ausprobiert - nur bei beiden erhalte ich keinen String zurück.

Popov 4. Mär 2012 09:56

AW: Fenstername und Dateiname aus Handle herausfinden
 
Auf jeden Fall ist es möglich. Das weiß ich, weil ich es mal vor Jahren in einem meiner Programme angewendet habe. Nur frag nicht wo. Vielleicht fällt es mir ein.

himitsu 4. Mär 2012 13:54

AW: Fenstername und Dateiname aus Handle herausfinden
 
MSDN-Library durchsuchenGetModuleFileNameEx
MSDN-Library durchsuchenEnumProcesses

Helmi 7. Mär 2012 21:04

AW: Fenstername und Dateiname aus Handle herausfinden
 
Hallo,

die Frage passt hier noch dazu:
Wie kann ich aus einem Prozess-Handle "Application.Title" rausfinden?

himitsu 7. Mär 2012 22:41

AW: Fenstername und Dateiname aus Handle herausfinden
 
Du suchst ein Nichtsichtbares Fenster, mit dem Klassennamen TApplication (ich glaub Delphi mäppt das in den Klassennamen der Windows-Klasse für MSDN-Library durchsuchenCreateWindowEx)
Der Text davon ist der Titel. (Bei Google suchenGetWindowText)

Helmi 8. Mär 2012 18:27

AW: Fenstername und Dateiname aus Handle herausfinden
 
Zitat:

Zitat von himitsu (Beitrag 1155272)
Du suchst ein Nichtsichtbares Fenster, mit dem Klassennamen TApplication (ich glaub Delphi mäppt das in den Klassennamen der Windows-Klasse für MSDN-Library durchsuchenCreateWindowEx)
Der Text davon ist der Titel. (Bei Google suchenGetWindowText)

Hättest du hierfür vielleicht einen Codeschnipsel?
Mir fehlt momentan ein Anhaltspunkt

himitsu 8. Mär 2012 20:03

AW: Fenstername und Dateiname aus Handle herausfinden
 
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.

Helmi 9. Mär 2012 16:24

AW: Fenstername und Dateiname aus Handle herausfinden
 
Hallo himitsu,

ich hab deinen Code ausprobiert - nur fliegt mir bei der ersten Abfrage von
Delphi-Quellcode:
T
die CPU um die Ohren, sprich ich bekomme eine Access Violation

[Edit]
Ich hab jetzt mal etwas geforscht und bin auf diese Zeile gestoßen:
Delphi-Quellcode:
   GetWindowText(hwnd, PChar(T), Length(T + 1);
ich habs dann so abgeändert und ich seh was im Memo:
Delphi-Quellcode:
   GetWindowText(hwnd, PChar(T), Length(T);


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz