Gelöst! Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Anfängerfragen zum Programmieren mit PureBasic.
EmmJott
Beiträge: 39
Registriert: 25.10.2024 12:23

Gelöst! Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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?
Zuletzt geändert von EmmJott am 21.05.2025 18:00, insgesamt 1-mal geändert.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
EmmJott
Beiträge: 39
Registriert: 25.10.2024 12:23

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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.
EmmJott
Beiträge: 39
Registriert: 25.10.2024 12:23

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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.
Axolotl
Beiträge: 265
Registriert: 31.12.2008 16:34

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag 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+")" 
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
EmmJott
Beiträge: 39
Registriert: 25.10.2024 12:23

Re: Wie erzwingt man den Dialog "Öffnen mit" in Windows 10 bzw. 11

Beitrag von EmmJott »

Hallo Axolotl,

vielen Dank für Deinen Beitrag. Das funktioniert bestens!
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Antworten