AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr
Thema durchsuchen
Ansicht
Themen-Optionen

shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

Ein Thema von stalkingwolf · begonnen am 18. Mär 2021 · letzter Beitrag vom 19. Mär 2021
Antwort Antwort
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#1

shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 18. Mär 2021, 09:51
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

Geändert von stalkingwolf (18. Mär 2021 um 10:05 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

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

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 18. Mär 2021, 10:09
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:

0 ist SW_HIDE , usw.

https://docs.microsoft.com/en-us/win...utew#sw_hide-0
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#3

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 18. Mär 2021, 10:33
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:

0 ist 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 18. Mär 2021, 10:35
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 19. Mär 2021, 11:47
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?
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 19. Mär 2021, 11:52
Offenbar kann nil (NULL) einen Unterschied machen:

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.
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 19. Mär 2021, 12:02
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (19. Mär 2021 um 12:06 Uhr)
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 19. Mär 2021, 12:18
Ich würde halt, wenn ich eine Datei öffnen will 'open' verwenden (das genau das macht) und nicht nil, dass irgendwas macht...
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: shellexecute ab Windows 10 auf Bilder funktioniert nicht mehr

  Alt 19. Mär 2021, 13:57
Wenn es möglichst unbedingt aufgehn soll, dann im Prinzip OPEN und wenn nicht, dann nochmal NIL (oder schauen was es noch gibt).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 16:46 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