Entwickler-Ecke

Windows API - Programmname auslesen


Fabian E. - Do 01.11.07 21:00
Titel: Programmname auslesen
hallo,

ich möchte aus einer exe die dateibeschreibung bzw. den namen auslesen.
das heißt aus "winword.exe" wird dann "Microsoft Office Word 2007"
den pfad der exe hab ich. ist das möglich?

vielen dank!

gruß

Doppelpost in der Dp: http://www.delphipraxis.net/topic121986_dateibeschreibung+auslesen.html


matze - Do 01.11.07 23:54

Nur so zum Hinwies:
Dieses Posting ist ein Doppelpost in der DP (wie schon erwähnt) und wurde dort auch gelöst!


Mindforce - Fr 02.11.07 01:30

Tja.. Ich habe den Code leider nur sozugagen "falschherum" benutzt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
uses TLHelp32;

...

procedure WindowTitleToEXE(fenstertitel: stringvar ergebnis: TStringList);
var PID: DWord;
  aSnapShotHandle: THandle;
  ContinueLoop: Boolean;
  aProcessEntry32: TProcessEntry32;
begin
  ergebnis.clear;
  GetWindowThreadProcessID(FindWindow(nil, PChar(fenstertitel)), @PID);
  aSnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  try
    aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
    ContinueLoop := Process32First(aSnapShotHandle, aProcessEntry32);
    while Integer(ContinueLoop) <> 0 do begin
      if aProcessEntry32.th32ProcessID = PID then
        ergebnis.Add(aProcessEntry32.szExeFile);
      ContinueLoop := Process32Next(aSnapShotHandle, aProcessEntry32);
    end;
  finally
    CloseHandle(aSnapShotHandle);
  end;


Und dann der Aufruf:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var slist: TStringList;
begin
  slist:=TStringList.Create;
  try
    WindowTitleToEXE('Notepad', slist);
    ListBox1.Items.AddStrings(slist);
  finally
    slist.free;
  end;
end;


Ich schätze man kann den Code auh umschreiben.
Aber du hättest auch ruhig mal bei http://dsdt.info oder einfach hier in der Delphi- Suche suchen können...

M!ndbyte