Seite 1 von 1
Gelöst! Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 19.05.2025 18:30
von EmmJott
Guude (wie man in Hessen so grüßt)
kann mir jemand sagen, wie man den Dialog "Öffnen mit" in Windows 10 bzw. 11 erzwingt - auch, wenn dem betreffenden Dateityp eine Anwendung zugeordnet ist?
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 20.05.2025 00:31
von Bisonte
solltest du die normale Arbeit mit Windows meinen wäre das bei W10 -
Shift und Rechte Maustaste
um das kontextmenu mit der "Öffnen mit..." Option aufzurufen (unter anderem auch "Als Pfad kopieren" wäre dabei)
unter W11 und der neuen UI bin ich mir nicht sicher ob es dort auch kommt.
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 20.05.2025 11:05
von EmmJott
Sorry, habe mich unklar ausgedrückt. Mir geht es darum, eine Datei - meinetwegen eine PDF-Datei - nicht nur mittels
zu öffnen, sondern auch eine Auswahl zuzulassen, mit welchem Programm (im Beispiel also mit alternativem PDF-Reader oder Hex-Editor oder sonstwas) die Datei geöffnet werden soll. Der Windows-Dialog würde natürlich eine ganze Menge Programmcode ersparen bzw. viel Funktionalität "gratis" mitbringen.
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 20.05.2025 11:16
von NicTheQuick
Unter Windows sollte das mit
ShellExecute oder
ShellExecuteEx gehen.
Mangels Windows kann ich dir aber nur einen Pseudocode liefern:
Code: Alles auswählen
SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };
sei.fMask = SEE_MASK_NOCLOSEPROCESS; // Oder andere Flags nach Bedarf
sei.lpVerb = L"openas";
sei.lpFile = L"C:\\Pfad\\zu\\Deiner\\Datei.txt";
sei.nShow = SW_SHOW;
ShellExecuteEx(&sei);
Bzw. so:
Code: Alles auswählen
ShellExecute(NULL, L"openas", L"C:\\Pfad\\zu\\Deiner\\Datei.txt", NULL, NULL, SW_SHOW);
Wichtig ist nur, dass das "Verb" den Wert "openas" hat. Und was die Mask bedeutet, solltest du am besten auch nachlesen.
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 21.05.2025 08:30
von EmmJott
Hi,
vielen Dank für den Tipp. Habe etwas rumexperimetiert und weiter gesucht und folgendes gefunden:
Code: Alles auswählen
ShellExecute_(#Null, @"open", @"C:\\mein\\bild.png", #Null, #Null, #SW_SHOW)
öffnet die Datei mit der zugewiesenen Anwendung. So wie das "runprogram" auch macht. Leider bekomme ich das nicht mit
Code: Alles auswählen
ShellExecute_(#Null, @"openas", @"C:\\mein\\bild.png", #Null, #Null, #SW_SHOW)
nicht hin. Programm startet und beendet sich sofort, ohne dass sich was auf dem Bildschirm tut. Die Hoffnung war, dass der "Öffnen mit..."-Dialog erscheint und die gewünschte Anwendung ausgesucht werden kann.
Code: Alles auswählen
Debug ShellExecute_(#Null, @"openas", @"C:\\mein\\bild.png", #Null, #Null, #SW_SHOW)
gibt übrigens 31 aus, falls das den Fachleuten ein Hinweis wäre.
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 21.05.2025 10:04
von NicTheQuick
Die Rückgabewerte sind im MSDN, die ich oben verlinkt habe, erklärt.
Der Wert 31 scheint zur Konstanten SE_ERR_NOASSOC zu gehören und das bedeutet "Der angegebenen Dateinamenerweiterung ist keine Anwendung zugeordnet. Dieser Fehler wird auch zurückgegeben, wenn Sie versuchen, eine Nicht druckbare Datei zu drucken."
Das ergibt natürlich nicht so viel Sinn, wenn es mit `open` funktioniert, aber mit `openas` nicht. Oder hast du vielleicht für PNGs nur eine mögliche Anwendung?
Ansonsten tappe ich hier ohne Windows im Dunkeln. Tut mir Leid. Vielleicht kommt ja noch jemand hier her, der sich besser damit auskennt.
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 21.05.2025 11:19
von Axolotl
Vielleicht hilft dir das hier weiter:
Code: Alles auswählen
Global ret, filepath.s
filepath = "C:\Temp\AH.INI" ; <== change to your liking.
ret = RunProgram("Rundll32.exe", "shell32.dll,OpenAs_RunDLL "+filepath, "")
Debug "done ("+ret+")"
Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11
Verfasst: 21.05.2025 17:59
von EmmJott
Hallo Axolotl,
vielen Dank für Deinen Beitrag. Das funktioniert bestens!