Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ProgID aus registry mit Programmverknüpfen (https://www.delphipraxis.net/102827-progid-aus-registry-mit-programmverknuepfen.html)

Diamondback2007 5. Nov 2007 16:57


ProgID aus registry mit Programmverknüpfen
 
Hallo,

ich bin gerade dabei, werte aus der registry zu lesen,
welche mit einer dateiendung verknüpft sind.
Dort gibt es auf der einen seite eine liste mit
programmen die sehr einfach zu lesen ist.
auf der anderen seite gibt es noch eine liste in der so gennante
ProgIDs stehen.
Code:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\OpenWithProgids
Dort stehen dann werte wie:
Code:
jpegfile
oder
Code:
WMP11.AssocFile.MP3
wie kann ich nun aus diesen "werten" exe-namen auslesen?

Vielen dank

gruß

Luckie 5. Nov 2007 16:59

Re: ProgID aus registry mit Programmverknüpfen
 
ProgIDs bezeichnen COM Objekte in DLLs. Es wird sich dabei wohl um COM-Server handeln, die die gewünschte Funktionalität zur Verfügung stellen.

Diamondback2007 5. Nov 2007 17:01

Re: ProgID aus registry mit Programmverknüpfen
 
okay, und haben diese COM-Server eine hostanwendung
oder so etwas die ich auslesen könnte?

gruß

Luckie 5. Nov 2007 17:11

Re: ProgID aus registry mit Programmverknüpfen
 
Die DLL. Der Pfad und Name muss auch in diesem Schlüssel irgendwo stehen.

Diamondback2007 5. Nov 2007 17:36

Re: ProgID aus registry mit Programmverknüpfen
 
und wie komme ich zu dieser dll?
ich habe ja scheinbar nur den namen dieses COM-Servers.
sonst steht da nichts.
der eintrag ist ein" binärer Wert der Länge 0"
der Name des schlüssels entspricht dem namen des servers.

gruß

Luckie 5. Nov 2007 17:52

Re: ProgID aus registry mit Programmverknüpfen
 
Dann musst du dir dazu den Eintrag aus HKCR auslesen. Siehe dazu mein COM.Tutorial auf meiner Seite: http://delphitutorials.michael-puff.de

Diamondback2007 5. Nov 2007 18:12

Re: ProgID aus registry mit Programmverknüpfen
 
danke! :) ich werde es mir mal ansehen. :)
gruß

Diamondback2007 5. Nov 2007 18:33

Re: ProgID aus registry mit Programmverknüpfen
 
hm.... ich glaub ich verstehe es nicht so ganz... :(
tut mir leid... :?

also ich habe einen COM-Server namen wie z.B. "WinRar.ZIP"
nun möchte ich darauf eigentlich nur etwas wie C:\Programme....\WinRar.exe
haben.
ich habe mal etwas in der registry gestöbert und das verzeichnis
HKEY_CLASSES_ROOT/CLSID etwas genauer betrachtet.

dort finde ich zu vielen sachen programmpfade. zu manchen leider nur welche zu dlls.

nun meine frage. wie kann ich bestimmen in welchem schlüssel nun die werte für
"WinRar.ZIP" liegen. suchen kann es ja schlecht sein, das dauert ja stunden.... :(
gibt es eine möglichkeit dies zu beschleunigen?

Gibt es weiterhin aus einer dll eine Art Standartanwedung zu bekommen?
Also aus der "WinRar.ZIP.dll" Ein Winrar.exe?

gruß


EDIT: okay... :wall: vielleicht mal HKEY_CLASSES_ROOT weiter durchsehen :wall:
da steht alles

Kedariodakon 5. Nov 2007 18:42

Re: ProgID aus registry mit Programmverknüpfen
 
Du kennst dich mit Com-Objecte nicht wirklich aus oder?
Wenn es sich da um ein Com-Object handelt, dann brauchst du keinen Pfad, du musst nur das Object erstellen und ihm irgendwie die Datei übergeben :)

Bye christian

Luckie 5. Nov 2007 18:44

Re: ProgID aus registry mit Programmverknüpfen
 
Du kannst dir mit dem Code aus meinem Tutorial die GUID holen. Mit dieser kannst du denn den Schlüssel in der Registry öffnen und den Pfad zur DLL auslesen.
Zitat:

Zitat von Kedariodakon
Wenn es sich da um ein Com-Object handelt, dann brauchst du keinen Pfad, du musst nur das Object erstellen und ihm irgendwie die Datei übergeben :)

Wenn er mein Tutorial durchgelesen hat, sollte er das jetzt wissen.

Diamondback2007 5. Nov 2007 20:06

Re: ProgID aus registry mit Programmverknüpfen
 
nein ich kenne mich nicht damit aus, und es war auch nicht ziel dieses threades ;)
es gibt in HKEY_CLASSES_ROOT eine liste aller COM-Objekte die ich ausgelesen habe
und mit diesen konnte ich den pfad zur anwendung auslesen.

hat alles geklappt :)

danke!

gruß

Luckie 6. Nov 2007 12:41

Re: ProgID aus registry mit Programmverknüpfen
 
Zitat:

Zitat von Diamondback2007
nein ich kenne mich nicht damit aus, und es war auch nicht ziel dieses threades

Ich vertrete ja die Meinung, dass man schon irgendwie wissen sollte, wa sman macht.

Christian Seehase 6. Nov 2007 12:58

Re: ProgID aus registry mit Programmverknüpfen
 
Moin Diamondback,

in OpenWithProgIDs stehen die Einträge, die man im Explorer unter "Öffnen mit" angezeigt bekommt.

Auslesen kannst Du den Pfad i.d.R., indem Du nach dem jeweiligen Wert unter

HKEY_CLASSES_ROOT\<Ausgelesene ID>\shell\open\command

den Standardwert ausliest.
Du musst aber berücksichtigen, dass dort auch Parameter enthalten sein können.
Schau Dir am besten mal ein paar der Einträge an.

Diamondback2007 6. Nov 2007 16:00

Re: ProgID aus registry mit Programmverknüpfen
 
Zitat:

Zitat von Christian Seehase
Moin Diamondback,

in OpenWithProgIDs stehen die Einträge, die man im Explorer unter "Öffnen mit" angezeigt bekommt.

Auslesen kannst Du den Pfad i.d.R., indem Du nach dem jeweiligen Wert unter

HKEY_CLASSES_ROOT\<Ausgelesene ID>\shell\open\command

den Standardwert ausliest.
Du musst aber berücksichtigen, dass dort auch Parameter enthalten sein können.
Schau Dir am besten mal ein paar der Einträge an.


danke, aber DAMIT kenne ich mich jetzt wiederrum aus ;)
ich habe nur nach einer möglichkeit gesucht, den pfad zu bestimmen.
das habe ich ja geschafft! :)

gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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