AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prüfen der registrierten Dateitypen
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen der registrierten Dateitypen

Ein Thema von matashen · begonnen am 12. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#1

Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 09:29
Hallo zusammen,

ach Stundenlanger Suche im Internet muss ich doch mal die Frage hier stellen,

vieleicht gibts das schon irgendwo erklärt aber ich habs einfach nicht gefunden.

Und zwar gibt es viele verschiedene Dateiendungen die ich mit meinem Programm verknüpfen möchte oder eben die Verknüpfung löschen möchte.

Dazu muss ich aber erstmal Prüfen ob mein Programm in der Registry überhaupt drin ist.

Dazu hab ich folgende Funktion geschrieben


Delphi-Quellcode:
function CheckExt(Extension: String): Boolean;
var
  Reg: TRegistry;
  Description: String;

begin
  Result := False;
  if Extension <> 'then
    begin
    if Extension[1] <> '.then
      Extension := '.' + Extension;
    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CLASSES_ROOT;
      if Reg.KeyExists(Extension) then
        begin
        Reg.OpenKey(Extension, false);
        Description:=Reg.ReadString('');
        if (Reg.OpenKey('\' + 'Planmarker', True))//Mein Programmname
        and (Reg.OpenKey('DefaultIcon', True))
        and (Reg.KeyExists('\'+Description))
           then Result:=true
           else result:=false;
        Reg.CloseKey;
        end;
    finally
      Reg.Free;
    end;
  end;
end;
Der Code erkennt aber nur das die Endung registriert ist, nicht aber ob mein Programm als Hauptverknüpfung drin steht.
Und ich steh da irgendwie aufn Schlauch...

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 09:31
Was gibt denn FindExecutable zurück?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 09:32
Bei der Dateiendung ist vermerkt welcher Schlüssel die Actionen dazu beherbergt. Also musst du dann den Schlüssel öffnen und schauen ob dort deine Anwendung eingetragen ist (du müsstest ja am besten wissen wo du was eingetragen hast)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

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

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 09:51
Hallo,
schau mal hier Dateiendungen registrieren
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#5

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 09:55
das hab ich erstmal per Hand im Explorer eingetragen.(zum testen)

Ich möchte ja erstmal prüfen ob Dateiendung .bmp , .pcx etc schon für mein Programm eingetragen ist und dann die möglichkeit geben diese Verknüpfung zu entfernen oder hinzuzufügen.

Ich dachte das Prüfen ist erstmal einfacher wie schreiben oder löschen, aber irgendwie häng ich da

ich dachte eben das der Eintrag dann in

Reg.KeyExists('\'+Description+ '\Shell\Open\Command') geprüft werden könnte

bekomm da aber kein gutes Ergebnis.


wieso
FindExecutable
Ich will ja nicht die dazugehörige Anwendung starten ? Dachte das wird in zusammenhang ,it Shellexecute verwendet

@Kaktus
Ich suchte nicht die Funktion zum schreiben und löschen, darauf bin ich auch schon gestoßen, ich möchte ja erstmal prüfen. Die prüfung in deleteext hab ich ausprobiert, da bekomm ich genau wie bei meinem gebastel immer ein positives Ergebnis wenn die Erweiterung in der Registry existiert

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 10:11
Zitat von Win32 SDK:
The FindExecutable function retrieves the name and handle to the executable (.EXE) file associated with the specified filename.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 10:15
Habs rausgefunden

Danke für die Tipps

Mein Neuer Code:

Delphi-Quellcode:
function CheckExt(Extension: String): Boolean;
var
  Reg: TRegistry;
  Description,entrystring: String;
begin
  Result := False;
  if Extension <> 'then
    begin
    if Extension[1] <> '.then
      Extension := '.' + Extension;
    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CLASSES_ROOT;
      if Reg.KeyExists(Extension) then
        begin
        Reg.OpenKey(Extension, false);
        Description:=Reg.ReadString('');
        Reg.Openkey('\'+Description+ '\Shell\Open\Command',false);
        Entrystring:=Reg.ReadString('');
        if entrystring=Format('"%s" "%s"', [paramstr(0), '%1'])
           then Result:=true
           else result:=false;
        Reg.CloseKey;
        end;
    finally
      Reg.Free;
    end;
  end;
end;
Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Prüfen der registrierten Dateitypen

  Alt 12. Mär 2008, 21:43
Moin Matthias,

zwei Sachen noch, die mir aufgefallen sind:

Das
Delphi-Quellcode:
        if entrystring=Format('"%s" "%s"', [paramstr(0), '%1'])
           then Result:=true
           else result:=false;
kannst Du auch so
Result := entrystring=Format('"%s" "%s"', [paramstr(0), '%1']); schreiben.

Ausserdem gehört zu jedem erfolgreichen Reg.OpenKey auch ein Reg.CloseKey, da Du Dir ansonsten ein Resourcenleck einhandelst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:35 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