Datei verknüpfen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Datei verknüpfen

Beitrag von Sven »

Wie kann ich Dateiendungen mit einem Programm verknüpfen? So wie es bei jaPBe unter Einstellungen geht. Bzw. Abfragen, mit welchem Programm bestimmte Endungen verknüpft sind?

Sven
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn Du schon den jaPBe verwendest, guck einfach in den Includes, Registry.pbi, da sind fertige Proceduren dafür.

Welches Program, womit:

Code: Alles auswählen

Procedure.s GetAssociatedProgram(Extension.s)
  
  hKey.l = 0
  KeyValue.s = Space(255)
  datasize.l = 255
  AssociatedProgram$ = ""

  If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "." + Extension, 0, #KEY_READ, @hKey)  = #ERROR_SUCCESS
    If RegQueryValueEx_(hKey, "", 0, 0, @KeyValue, @datasize) = #ERROR_SUCCESS
      KeyNext.s = Left(KeyValue, datasize-1)
      hKey.l = 0
      KeyValue.s = Space(255)
      datasize.l = 255
      If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, KeyNext + "\Shell\Open\Command", 0, #KEY_READ, @hKey) = #ERROR_SUCCESS
        If RegQueryValueEx_(hKey, "", 0, 0, @KeyValue, @datasize) = #ERROR_SUCCESS
          AssociatedProgram$ = Left(KeyValue, datasize-1)
        EndIf
      EndIf
    EndIf
  EndIf
  Pos = FindString(LCase(AssociatedProgram$), ".exe", 1)
  If Pos <> 0
    AssociatedProgram$ = Left(AssociatedProgram$, Pos + 4)
    AssociatedProgram$ = RemoveString(AssociatedProgram$, Chr(34), 1)
  EndIf

  ProcedureReturn AssociatedProgram$
EndProcedure
Debug GetAssociatedProgram("html")
Debug GetAssociatedProgram("mp3")
Debug GetAssociatedProgram("eml")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten