Problem mit Starten als Administrator

Anfängerfragen zum Programmieren mit PureBasic.
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Problem mit Starten als Administrator

Beitrag von bin_neu_hier »

Moin Leute,

habe einen kleinen Dateimanager gebastelt, der beispielsweise PDF-Dateien per Doppelklick öffnet (via Runprogram). Ja, nichts Großartiges - funzt, wie man das erwartet hätte.
Wenn ich den Dateimanager aber als Administrator starte, kann der das nicht mehr! Der Taskmanager zeigt, dass 2 Acrobat-Instanzen gleichzeitig starten. Wenn ich meinen Dateimanager dann beende und mittels WindowsExplorer eine PDF per Doppelklick starten will, werden im Taskmanager zwei weitere Instanzen gestartet - aber keine Datei geöffnet bzw. angezeigt. Bei PNG-Dateien wird auch im Administratormodus das Grafikprogramm geöffnet und die Grafik angezeigt. Das Dateiaufruf sieht folgendermaßen aus:

Code: Alles auswählen

err = RunProgram(GetGadgetText(#path_l)+GetGadgetItemText(#ligleft, i, 0))
wobei [GetGadgetText(#path_l)] den absoluten Pfad und [GetGadgetItemText(#ligleft, i, 0)] den Dateinamen aus einem Listicongadget liest (Zeile = i, Spalte = 0). Es wird also nur die Datei aufgerufen, die dazugehörige Anwendung (im Beispiel der Acrobat Reader als Anwendung für PDF-Dateien) startet von selbst.
Hat jemand eine Idee, wie das Problem zu umgehen ist?
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Problem mit Starten als Administrator

Beitrag von Sicro »

Versuche es mal damit:

Code: Alles auswählen

Procedure.i OpenWithStandardProgram(FilePath$)
  
  Protected Result
  
  ; Avoid problems with paths containing spaces
  FilePath$ = #DQUOTE$ + FilePath$ + #DQUOTE$
  
  ; https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutew
  Result = Bool(ShellExecute_(0, "open", FilePath$, #Null, #Null, #SW_SHOW) > 32)
    
  ProcedureReturn Result
  
EndProcedure

OpenWithStandardProgram("Pfad zur PDF-Datei")
Auszug aus dem Modul: PB-CodeArchiv-Rebirth/System/OpenStandardProgram.pbi
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Re: Problem mit Starten als Administrator

Beitrag von bin_neu_hier »

Hallo Sicro,

vielen Dank für den Vorschlag. Aber das Problem bleibt auch damit bestehen. Habe Deine Routine mal ein wenig erweitert:

Code: Alles auswählen

Procedure.i OpenWithStandardProgram(FilePath$)
Protected Result
; Avoid problems with paths containing spaces
FilePath$ = #DQUOTE$ + FilePath$ + #DQUOTE$
; https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutew
Result = Bool(ShellExecute_(0, "open", FilePath$, #Null, #Null, #SW_SHOW) > 32)
ProcedureReturn Result  
EndProcedure


StandardFile$ = "C:\*.*"
Pattern$ = "Alle Dateien (*.*)|*.*"
  Pattern = 0
  File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
  If File$    
    Debug OpenWithStandardProgram(File$)
  Else
    MessageRequester("Information", "Der Requester wurde abgebrochen.", 0) 
  EndIf
Habe damit ein Executable erstellt und auch das zeigt den Effekt, dass als Administrator gestartet sich keine PDF-Datei anzeigen lässt. Auch hier werden wieder zwei Acrobat Instanzen gleichzeitig im Taskmanager gezeigt. Wenn man einen Task davon killt, verschwindet der zweite auch. Startet man das Programm als normaler User, funzt das genau so wie man es erwarten würde. Ist vielleich gar kein Purebasic-Problem, sondern eins vom Acrobat Reader? Oder nur von meinem PC?

Habe mein Programm inzwischen angepasst. Zuerst wird gecheckt, ob PDF-Dateien einem Programm zugeordnet sind und dann wird das zugeordnete Programm (bei mir der AcrobatReader) gestartet und die Datei als Parameter übergeben. Ist damit vielleicht etwas professioneller, aber zeigt das gleiche Problem. Insgesamt führen jetzt also 3 Wege zum gleichen Problem.

Kann das eigentlich jemand nachvollziehen, oder findet das Problem nur auf meinem PC statt?
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Problem mit Starten als Administrator

Beitrag von mk-soft »

Geht hier als Admin.

Vielleicht ist bei dir als Admin für PDF kein Programm zugewiesen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Re: Problem mit Starten als Administrator

Beitrag von bin_neu_hier »

aber warum startet dann der Reader 2 Instanzen?
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Antworten