Programm zum Kontextmenü hinzufügen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Programm zum Kontextmenü hinzufügen

Beitrag von Delle »

Hallo,

weiß jemand wie man ein Programm zum Kontextmenü (rechte Maustaste) hinzufügt? "Datei öffnen mit Programm XYZ..."

Der Eintrag für das Programm im Menü soll aber natürlich nur bei bestimmten Dateitypen erscheinen (z.B. nur bei .mp3/.wav/.ogg).

Das müßte sicherlich irgendwie in die Registry geschrieben werden,
am Besten bei jedem Start des Programms (sofern der User es mal
in einen anderen Ordner verschoben hat und die Verknüpfung zur
.exe dann immer aktuell bleibt).

Okay wenn das dann erledigt ist, wie liest man in der .exe dann
aus WAS damit geöffnet werden soll?
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag von diGGa »

was geöffnet werden soll geht per commandline... (hieß doch so xD oder?)
ProgramParameter()
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

hat aber nichts mit der erweiterung des kontextmenüs (also der verknüpfung von dateitypen mit programmen) zu tun. da muß man ein paar registry einträge anlegen, hab aber keine ahnung welche und auch keine lust es rauszufinden :)
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

So hab mehr Infos darüber gefunden:

Die "Procedure" baut man in VB so auf:

Code: Alles auswählen

Public Sub ProgrammRegistrierung(ByVal strMenuText As String, _
  ByVal strAnwendung As String)

  Const HKEY_CLASSES_ROOT = &H80000000
  Const REG_SZ = 1

  Dim Key As String
  Dim Result As Long
  Dim phkResult As Long
  Dim strTEXT As String

  Key = "*\shell\" + strMenuText + "\command"
  Result = RegCreateKey(HKEY_CLASSES_ROOT, Key, phkResult)

  strTEXT = strAnwendung + " %1"
  Result = RegSetValue(HKEY_CLASSES_ROOT, Key, REG_SZ, _
    strTEXT, Len(strTEXT))
End Sub
Und der Aufruf erfolgt dann so:

Code: Alles auswählen

ProgrammRegistrierung "Ausführen", App.Path &"\"& App.Exename &".exe %1" 
Allerdings soll ja der entsprechende Eintrag nur bei bestimmten Dateitypen kommen, nicht bei allen Dateien...
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 »

Die notwendigen Proceduren findest Du in den Include-Dateien von jaPBe, Registry.pbi
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
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag von diGGa »

Zaphod hat geschrieben:hat aber nichts mit der erweiterung des kontextmenüs (also der verknüpfung von dateitypen mit programmen) zu tun. da muß man ein paar registry einträge anlegen, hab aber keine ahnung welche und auch keine lust es rauszufinden :)
war aber teil seiner frage ;)
er hat ja gefragt wie er ausliest welche datei mit dem programm geöffnet werden soll und das wird bei kontextmenü nicht anders sein als bei "öffnen mit"
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Die Prozeduren krieg ich selber hin, ich will ja nur wissen, WAS WO hingeschrieben werden muss...
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

ach so war das gemeint. dann ist es aber zu spät, weil das kontext menü ja schon wissen muß, welchen dateityp es verknüpfen soll.
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag von diGGa »

er will wissen wie er bestimmten dateitypen sein programm im kontextmenü zuordnen kann ala winrar. und dann wil er nach dem öffnen auslesen welcher dateityp geöffnet wurde was ja mit programparameter() geht. aber er will wissen wo er reinschreiben muss damit sich im kontextmenü eben der "link" befindet.
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 »

Deshalb soll er sich ja die Include-Datei von GPI ansehen, aber das will er wohl auch nicht, obwohl er dort an den Proceduren erkennen kann, was wohin gehört. Sind Wohl 5 Einträge nötig, je nach Windows-Version etwas anders.
Im Source von Droopy ist es wohl auch drinn, wie so vieles :mrgreen:
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