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

Code: Alles auswählen

RunProgram
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!