Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr (https://www.delphipraxis.net/207377-shellexecute-ab-windows-10-auf-bilder-funktioniert-nicht-mehr.html)

stalkingwolf 18. Mär 2021 08:51

shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Uns haben Kunden gemeldet das sie keine Imagedateien mehr aus unseren Programmen mit externen Viewern öffnen können.

D.h wir haben bei uns einen eigenen Dateibrowser mit Anzeige und per Rechtsklick bieten wir an das mit dem Standard Windowsprogramm für den Dateitypen zu öffnen.
Das machen wir per
Code:
shellexecute(0,nil,pchar(data.pathname+data.filename),'',nil,0);
Auf Bilder funktioniert das in Windows 10 und Windows Server 2019 nicht mehr wenn nicht das neue Foto Programm von Windows für die Dateien verknüpft ist. Problem auf den TS mit Windows 2019 Server ist das es dort das Programm nicht gibt.
Wir haben das mir diversen Programm getestet. Und sobald der Dateityp verknüpft ist öffnet sich kein Programm mehr z.b Paint, IrfanView, alte Windows 7 Vorschau etc.

Gibt es hier eine eleganten Weg wie man Windows dazubringt? Wäre hier der Weg durch die Registry das Programm zu ermitteln und direkt anzustarten?

Edit : als Operation pchar('open') mitgeben ändert auch nichts daran.

Edit 2 : ok es lag an sw_show am Ende. Dort hatten wir 0 drin was auch bisher funktioniert hatte. Wobei es auch nicht mit allen Programmen funktioniert. Irfanview = ja, Paint = nein

Der schöne Günther 18. Mär 2021 09:09

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Ich will kein Schlauscheißer sein, aber statt "magischen" Zahlen sollte man sich wirklich an die gültigen Konstanten halten, die dort, laut Doku, eingetragen werden können:

Delphi-Quellcode:
0
ist
Delphi-Quellcode:
SW_HIDE
, usw.

https://docs.microsoft.com/en-us/win...utew#sw_hide-0

stalkingwolf 18. Mär 2021 09:33

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1485420)
Ich will kein Schlauscheißer sein, aber statt "magischen" Zahlen sollte man sich wirklich an die gültigen Konstanten halten, die dort, laut Doku, eingetragen werden können:

Delphi-Quellcode:
0
ist
Delphi-Quellcode:
SW_HIDE
, usw.

https://docs.microsoft.com/en-us/win...utew#sw_hide-0

Wie gesagt funktionierte immer, funktioniert auch mit jeder anderen Dateierweiterung.
Und selbst SW_SHOW funktioniert nur bedingt.

himitsu 18. Mär 2021 09:35

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Zitat:

SW_HIDE
Es gibt Programme mit einem Preloader.
Du startest diese EXE unsichtbar, aber die startet dann eine andere EXE, welche angezeigt wird,
oder sie gibt das "Öffnen" an eine bereits laufende EXE weiter.

freejay 19. Mär 2021 10:47

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Code:
shellexecute(0,nil,pchar(data.pathname+data.filename),'',nil,0);
Also ich nutze als zweiten Parameter ja immer 'open' und nicht nil. Ob's 'nen Unterschied macht?

freejay 19. Mär 2021 10:52

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Offenbar kann nil (NULL) einen Unterschied machen:

Zitat:

Zitat von Windows API help
NULL
The default verb is used, if available. If not, the "open" verb is used. If neither verb is available, the system uses the first verb listed in the registry.


himitsu 19. Mär 2021 11:02

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Zitat:

Zitat von freejay (Beitrag 1485506)
Ob's 'nen Unterschied macht?

Man glaubt es kaum, aber wenn man mal die Hilfe/Dokumentation liest, dann kommt man auf verblüffende Ideen.

"Open" führt Open aus und wenn es das nicht gibt, dann war's das.
nil, sucht und führt oft "Open" aus (weil es oft der Default ist und falls es das gibt) und wenn nicht, dann nimmt es sich das erste Verfügbare.
z.B.
HKEY_CLASSES_ROOT\.txt -> HKEY_CLASSES_ROOT\txtfile\shell\open
HKEY_CLASSES_ROOT\.386 -> HKEY_CLASSES_ROOT\vxdfile ... kein shell\open und sonst auch nix

freejay 19. Mär 2021 11:18

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Ich würde halt, wenn ich eine Datei öffnen will 'open' verwenden (das genau das macht) und nicht nil, dass irgendwas macht...

himitsu 19. Mär 2021 12:57

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
 
Wenn es möglichst unbedingt aufgehn soll, dann im Prinzip OPEN und wenn nicht, dann nochmal NIL (oder schauen was es noch gibt).


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