AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Anwendung zur Dateierweiterung aus der Registry lesen

Anwendung zur Dateierweiterung aus der Registry lesen

Ein Thema von mm1256 · begonnen am 22. Mai 2015 · letzter Beitrag vom 23. Mai 2015
Antwort Antwort
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 22. Mai 2015, 19:38
Was heißt "früher"? Windows 98, 2000, XP, Win7?
Was heißt "jetzt"? WinXP, Win2000, Win7?
Du hast also auch keinen Plan und weißt nicht, was - und wann - Microsoft da geändert hat (nehme ich zumindest jetzt an, sonst würdest du nicht fragen, was ich mit "früher" meine).

Die "alte Logik" zum Eintragen einer Dateierweiterung funktioniert ja nach wie vor auch unter Win7 und Win8, aber ich muss leider den umgekehrten Weg gehen...die passende Anwendung zur Dateierweiterung finden.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#2

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 22. Mai 2015, 19:55
Ist zwar nicht so ganz das, was du suchst, aber vielleicht hilft es dir trotzdem weiter: ExtractAssociatedIcon:
Zitat:
lpIconPath [in, out]
[...]The function extracts the icon handle from that file, or from an executable file associated with that file. If the icon handle is obtained from an executable file, the function stores the full path and file name of that executable in the string pointed to by lpIconPath.
D.h. wenn man der Funktion ein "C:\dokument.doc" übergibt, müsste man den Pfad zu Word bzw. WordPad im selben Parameter wiederfinden. Ob das tatsächlich so ist, weiß ich nicht. Ich vermute sogar, dass es eine geeignetere Funktion für die Aufgabe gibt.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 22. Mai 2015, 19:57
Evtl. MSDN-Library durchsuchenFindExecutable?
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
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 22. Mai 2015, 23:35
Vielen Dank DeddyH, genau das isses

Zur Info für die Mitleser:

Delphi-Quellcode:
function FindExeForFileName(AFileName : string;
                          var AResult : string): boolean;
var
  Buffer : array[0..MAX_PATH] of Char;
  Handle: THandle;
begin
  AResult := 'Unbekannt';
  Handle := FindExecutable(PChar(AFileName),nil,Buffer);
  Result := Handle > 32; // EDIT: Fehler, war Handle >= 32
  if Result then AResult := String(Buffer) else
  case Handle of
    SE_ERR_FNF : AResult := 'Datei '+AFileName+' ist nicht vorhanden';
    SE_ERR_PNF : AResult := 'Ungültiger Pfad'; // kann eigentlich nicht sein ;-)
    SE_ERR_ACCESSDENIED : AResult := 'Zugriff verweigert';
    SE_ERR_OOM : AResult := 'Woow...kein Speicher mehr. XE-8 läuft ???';
    SE_ERR_NOASSOC : AResult := 'Kein assoziiertes Programm gefunden';
  end;
end;
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen

Geändert von mm1256 (23. Mai 2015 um 09:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 22. Mai 2015, 23:51
Und wo wird der Rückgabewert der Funktion zugewiesen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 23. Mai 2015, 00:00
Und wo wird der Rückgabewert der Funktion zugewiesen?
In der dritten Zeile nach dem begin ?

Allerdings wäre eine Exception hier besser ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 23. Mai 2015, 00:06
Verdammt übersehen,weil ich es immer da setze, wo ich die Funktion verlasse und nicht irgendwo mitten drin.

Die API Funktion löst mit Sicherheit keine Exception aus. Sie hat ja Rückgabewerte. Die Exception musst schon du auslösen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 23. Mai 2015, 09:57
Allerdings wäre eine Exception hier besser ...
Ist vielleicht etwas OT, aber ich frage mich auch immer was besser ist: eine Exception oder eine alternative Lösung.

Muss es immer ein Krachbum Error-Messagebox sein mit der Info am Ende seines Weißheit zu sein? Sicher, manchmal geht es nicht anders, was soll man also noch machen wenn es keine Lösung gibt. Dann aber frage ich mich was ein Browser machen würde wenn er bei jedem Fehler in einer HTML-Datei aussteigen würde. Dann sage ich mir aber auch - warum die Mühe? Eine anständige Fehlermeldung erspart dir viel Arbeit. Und das Beste - keine wird dir Vorwürfe machen, schon gar nicht danken, wenn du statt einer Fehlermeldung versuchst den Fehler zu reparieren.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 23. Mai 2015, 00:03
Delphi-Quellcode:
function FindExeForFileName(AFileName : string;
                          var AResult : string): boolean;
var
  Buffer : array[0..MAX_PATH] of Char;
  Handle: THandle;
begin
  AResult := 'Unbekannt';
  Handle := FindExecutable(PChar(AFileName),nil,Buffer);
  Result := Handle >= 32; //// <--------------- Ich würde sagen ... hier!!
  if Result then AResult := String(Buffer) else
  case Handle of
    SE_ERR_FNF : AResult := 'Datei '+AFileName+' ist nicht vorhanden';
    SE_ERR_PNF : AResult := 'Ungültiger Pfad'; // kann eigentlich nicht sein ;-)
    SE_ERR_ACCESSDENIED : AResult := 'Zugriff verweigert';
    SE_ERR_OOM : AResult := 'Woow...kein Speicher mehr. XE-8 läuft ???';
    SE_ERR_NOASSOC : AResult := 'Kein assoziiertes Programm gefunden';
  end;
end;
Eine Exception wird ja so wie ich das sehe durch FindExecutable ausgelöst. Er könnte allerdings die GetLastError() Funktion verwenden, um die Fehlermeldungen noch auszugeben. Aber anscheinend wollte er sich seine eigenen Messages erstellen.


[Edit]RedBox???[/Edit]
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Anwendung zur Dateierweiterung aus der Registry lesen

  Alt 23. Mai 2015, 00:04
Nein, die API löst keine Exception aus
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz