Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalten? (https://www.delphipraxis.net/157647-gibt-es-eine-api-funktion-um-die-mit-einer-datei-verbundene-programme-zu-erhalten.html)

RaSoWa1 19. Jan 2011 15:39

Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalten?
 
Hallo,

ich benötige eine Liste der Programme (mit Path), welche Windows mir unter "öffnen mit" anzeigt, wenn ich auf eine Datei klicke.

Die Suche hier und bei Google hat bisher nicht viel gebracht. Nur ein paar Registry-Keys.
Muß ich mich da durch die Registry kämpfen oder gibt es dafür eine API-Funktion?
Hat vielleicht D 2010 dafür was an Bord, was ich noch nicht kenne?

Gruß Klaus.

Assarbad 19. Jan 2011 15:42

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Zitat:

Zitat von RaSoWa1 (Beitrag 1075837)
Muß ich mich da durch die Registry kämpfen [...]?

Jupp.

himitsu 19. Jan 2011 15:45

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Es gab vor Kurzem wieder mal einen Thread dazu. (ich find ihn nur grade nicht)

Ja, es gibt was (ein Interface, seit Win7), aber wenn sich ein Programm da nicht anmeldet, dann wird es nicht namentlich aufgelistet.
Am Besten du sichst dir mal dieen Thread raus (war irgendwann die letzen paar Monate).

hab dich falsch verstanden

Luckie 19. Jan 2011 15:47

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Hach endlich weiß ich mal was, was Oliver nicht weiß. :P

MSDN-Library durchsuchenFindExecutable

http://www.swissdelphicenter.ch/de/showcode.php?id=103

Assarbad 19. Jan 2011 15:52

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Zitat:

Zitat von Luckie (Beitrag 1075841)
Hach endlich weiß ich mal was, was Oliver nicht weiß. :P

MSDN-Library durchsuchenFindExecutable

In der Tat, der war mir neu. Hilft dir aber auch nicht wenn es um andere Verben als "open" geht, oder? ("print", etc ...)

Apropos: igitt FindExecutable verhält sich genauso bescheiden wie ShellExecute, scheint's:

Zitat:

Returns a value greater than 32 if successful, or a value less than or equal to 32 representing an error.

The following table lists the possible error values.
  • SE_ERR_FNF The specified file was not found.
  • SE_ERR_NOASSOC There is no association for the specified file type.
  • SE_ERR_OOM Microsoft Windows XP only. The system is out of memory or resources.

:kotz:

War aber ohnehin an der Frage vorbei, oder?

RaSoWa1 19. Jan 2011 16:27

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Zitat:

Zitat von Assarbad (Beitrag 1075843)
War aber ohnehin an der Frage vorbei, oder?

Ja, leider.

z.B. will ich bei einer JPG-Datei folgende Liste erhalten:

C:\Windows\system32\Paint.exe
C:\Program Files (x86)\QuickTime\PictureViewer.exe
....
.....

Ich glaube, ich muß doch in die Tiefen der Registry abtauchen.

Gruß Klaus

RWarnecke 19. Jan 2011 17:07

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Hallo Klaus,

hier habe ich eine Funktion zum Ermitteln der registrierten Dateierweiterungen veröffentlicht. Diese verwende ich auch in meinem Programm SystemInfo.

Es kann gerne auf meiner Seite und hier über die Funktion diskutiert werden. Ich werde die Ergebnisse dann in den Beitrag auf Code-Orakel einfließen lassen.

Assarbad 19. Jan 2011 17:42

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Leutchen, bitte lest doch mal seinen Beitrag komplett durch :zwinker:

Es geht nicht um das "open"-Verb von ShellExecute sondern darum zu ermitteln welche Programme im "Öffnen mit ..." Untermenü des Kontextmenüs auftauchen.

Der.Kaktus 19. Jan 2011 17:57

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Hallo,

schau einfach mal hier Open_With

keine API Funktion..aber ueber Registry leicht zu handeln.

RaSoWa1 19. Jan 2011 19:13

AW: Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalte
 
Zitat:

Zitat von Der.Kaktus (Beitrag 1075881)
Hallo,

schau einfach mal hier Open_With

keine API Funktion..aber ueber Registry leicht zu handeln.

So etwas Ähnliches hatte ich mir auch ergoogled.

Ich werde morgen anfangen die Registry zu parsen.
Ich habe nach dieser Lektüre folgendes vor:
  1. mit dem Schlüssel: 'HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr entVersion\Explorer\FileExts\'+FileExt+'OpenWithLi st' mit Hilfe von "MRUList" die Programmnamen auslesen.
  2. mit dem Schlüssel: 'HKEY_CLASSES_ROOT\Applications\'+Programmname+'\s hell\open\command' nach den Path zu dem Programm parsen.

Wie ist eure Meinung dazu?
Ich muß jetzt leider Feierabend machen. Die Familie ruft.

Gruß Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Seite 1 von 2  1 2      

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