AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

FindExecutable

Ein Thema von Willie1 · begonnen am 18. Sep 2020 · letzter Beitrag vom 23. Sep 2020
Antwort Antwort
Seite 1 von 2  1 2   
Willie1

Registriert seit: 28. Mai 2008
657 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

FindExecutable

  Alt 18. Sep 2020, 17:51
Hallo,
beim Umstieg auf Delphi 10.x finde ich immer noch Fehler. Ich benutze FindExecutable, um aus meinem Programm heraus das Standartprogramm für JPG usw. auf zurufen. Bei Tif klappt das es gibt PhotoViewer.dll zurück bei Jpg Errorcode 31 nichts zugeordnet.
Sieht so aus:
Delphi-Quellcode:
    Prog:=StrAlloc(255);
    Er:=FindExecutable(PWideChar(ExtractFileName(fs)),PWideChar(ExtractFilePath(fs)), PWideChar(Prog));
    case Er of
      31: Result:='';
       0,
       ERROR_FILE_NOT_FOUND,
       ERROR_PATH_NOT_FOUND: Result:='Fehler';
      else
      Result:=Prog
    end;
Wenn es bei Tif geht, kann mein Funktionsaufruf nicht falsch sein. Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.494 Beiträge
 
Delphi 7 Professional
 
#2

AW: FindExecutable

  Alt 18. Sep 2020, 18:28
https://docs.microsoft.com/en-us/win...indexecutablea

Da steht bei den Rückgabewerten, was die 31 bedeutet. Sollte man dann eventuell einfach auch als Rückgabewert liefern und nicht durch 'nen nichtssagenden Leerstring ersetzen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.167 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: FindExecutable

  Alt 18. Sep 2020, 18:48
Dass "31" "nicht zugeordnet" heißt, weiß er ja selbst. Seine Frage ist ja: "Weshalb meint diese Routine, es sei nichts zugeordnet? Wenn ich die Datei im Explorer doppelklicke wird sie doch von einem Programm geöffnet!"

PS: Mir ist deine String-Länge von 255 nicht ganz geheuer. Sie sollte MAX_PATH lang sein, und das ist 260 oder sowas...
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.494 Beiträge
 
Delphi 7 Professional
 
#4

AW: FindExecutable

  Alt 18. Sep 2020, 19:17
Seine Frage ist ja: "Weshalb meint diese Routine, es sei nichts zugeordnet? Wenn ich die Datei im Explorer doppelklicke wird sie doch von einem Programm geöffnet!"
Davon kann ich nichts dem Eingangsthread entnehmen.

Da steht nichts davon, dass ein Doppelklick im Explorer funktioniert.

Da steht lediglich, dass für TIF die PhotoViewer.dll gefunden wird und für JPG kein Ergebnis geliefert wird, eben die 31, welche bedeutet, dass es nix zugeordnetes gibt.

Zur Überprüfung mache man halt im Explorer einen Doppelklick und teile das Ergebnis hier mit. Wenn's nicht funktioniert, dürfte die 31 stimmen.

Im Zweifelsfalle mal in der Registry nachschauen. Dateiendung .jpg und von dort dann, abhängig vom Inhalt der Einträge, weitersuchen.
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
657 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: FindExecutable

  Alt 18. Sep 2020, 19:43
Also Freunde,
FindExecute gibt bei Tif-Bildern PhotoViewer.dll zurück, bei Jpg-Bildern Errorcode 31 bedeutet nichts zugeordnet, was nicht stimmt Doppelklick. Ich könnte natürlich PhotoViewer.dll als Konstante eintragen aber ich denke, das ist keine stabile Lösung. Irgentwann wird Microsoft einen neuen Bilderviewer auf den Markt bringen.
Ich habe hier das Archiv angesehen und sehe, dass ich schonmal 2008 ähnlich gefragt habe, auch da gab es keine Lösung.
MAX_PATH ist ein richtiger Hinweis.
Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FindExecutable

  Alt 18. Sep 2020, 20:03
Bei TIF/TIFF ist PhotoViewer.dll im \OpenWithList eingetragen.
Bei JPG/JPEG ist dieser Eintrag aber leer.

Das Öffnen im Explorer verwendet aber \Shell\Open, \ShellEx\Open und vieles Anderes.

FindExecutable nutzt also nicht die selben Einstellungen und liefert somit auch andere Ergebnisse.




Wenn es nur um das Öffnen von Dateien geht, warum übergibst du nicht einfach die Datei direkt an ShellExecute und lässt Dieses die Auswahl treffen?
Denn das nutzt die selben Funktionen, wie der Explorer, bzw. der Explorer nutzt wohl ShellExecute.

Außerdem hat der Explorer auch nochmal eigene Einstellungen, in einem eigenen Registryzweig, wo das gespeichert wird, was verwendet wurde, als der Nutzer im Explorer "Öffnen mit" aufrief.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Sep 2020 um 20:09 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.167 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: FindExecutable

  Alt 18. Sep 2020, 21:08
Wenn es nur um das Öffnen von Dateien geht, warum übergibst du nicht einfach die Datei direkt an ShellExecute und lässt Dieses die Auswahl treffen?
Das habe ich mich auch direkt gefragt, aber der gute Mann wird sicher seinen Grund haben...
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#8

AW: FindExecutable

  Alt 19. Sep 2020, 12:37
hallo,

bei Win10 soll das helfen

https://praxistipps.chip.de/windows-...so-gehts_42644

oder nach Photview enabler suchen.

auch ganz huebsch

https://www.chip.de/downloads/Honeyview_53821741.html

gruß
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
657 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: FindExecutable

  Alt 19. Sep 2020, 18:00
Wenn es nur um das Öffnen von Dateien geht, warum übergibst du nicht einfach die Datei direkt an ShellExecute und lässt Dieses die Auswahl treffen?
Das habe ich mich auch direkt gefragt, aber der gute Mann wird sicher seinen Grund haben...
Der "gute Mann" will das so machen, gilt das für alle Formate, die GDI+ öffnen kann? Nur mal so gefragt, glaubt ihr, dass ein in Zukunft aktualisiertes GDI+ auch HEIf-Bilder öffnen kann?
Die alte Fotoanzeige öffnet bei mir im Explorer Tif-Bilder.
Danke und Gruß Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#10

AW: FindExecutable

  Alt 19. Sep 2020, 20:00
hallo,

einmal diesen Registry Eintrag überprüfen

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win dows Photo Viewer\Capabilities\FileAssociations

und wie in #8 Link 1 erweitern, falls erforderlich.

sollte wie im Anhang aussehen.

Gruß
Miniaturansicht angehängter Grafiken
photview.jpg  
  Mit Zitat antworten Zitat
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:03 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