AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Gibt es eine API-Funktion, um die mit einer Datei verbundene Programme zu erhalten?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von RaSoWa1 · begonnen am 19. Jan 2011 · letzter Beitrag vom 20. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

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

  Alt 19. Jan 2011, 15:39
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.
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

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

  Alt 19. Jan 2011, 15:42
Muß ich mich da durch die Registry kämpfen [...]?
Jupp.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 19. Jan 2011, 15:45
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Jan 2011 um 15:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

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

  Alt 19. Jan 2011, 15:47
Hach endlich weiß ich mal was, was Oliver nicht weiß.

MSDN-Library durchsuchenFindExecutable

http://www.swissdelphicenter.ch/de/showcode.php?id=103
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

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

  Alt 19. Jan 2011, 15:52
Hach endlich weiß ich mal was, was Oliver nicht weiß.

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.


War aber ohnehin an der Frage vorbei, oder?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#6

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

  Alt 19. Jan 2011, 16:27
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

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

  Alt 19. Jan 2011, 17:07
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

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

  Alt 19. Jan 2011, 17:42
Leutchen, bitte lest doch mal seinen Beitrag komplett durch

Es geht nicht um das "open"-Verb von ShellExecute sondern darum zu ermitteln welche Programme im "Öffnen mit ..." Untermenü des Kontextmenüs auftauchen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#9

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

  Alt 19. Jan 2011, 17:57
Hallo,

schau einfach mal hier Open_With

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

Repeat Until true=false;

Geändert von Der.Kaktus (19. Jan 2011 um 18:11 Uhr)
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#10

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

  Alt 19. Jan 2011, 19:13
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
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 Uhr.
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