Habe den Code gefunden:
http://purebasic.myforums.net/viewtopic ... hlight=lnk
Der hier ist von Freak.
Edit: sollte IMO auch ins PureArea Code-Archiv. Andre?
Pfad einer Verknüpfung
- mueckerich
- Beiträge: 220
- Registriert: 13.09.2004 11:33
- Wohnort: Am schönsten Flecken der Erde, zwischen PC und Motorrad
Mittels der shell32.dll sollte über das ShellLinkObject ein Zugriff auf die Verknüpfungen und die darin enthaltenen Daten von PB aus möglich sein.
Guckst Du hier: http://www.shadoware.de/vb/tutorials/shell32.html
Guckst Du hier: http://www.shadoware.de/vb/tutorials/shell32.html
"Wenn Sie glauben, mich verstanden zu haben, dann habe ich mich falsch ausgedrückt" ( Alan Greenspan)
- Andre
- PureBasic Team
- Beiträge: 1765
- Registriert: 11.09.2004 16:35
- Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10 - Wohnort: Saxony / Deutscheinsiedel
- Kontaktdaten:
Da kümmere ich mich schon drum. Keine SorgeMax. hat geschrieben:Edit: sollte IMO auch ins PureArea Code-Archiv. Andre?

@Robert: jetzt, wo ich auch endlich verstanden habe, was Dein Code machen soll....

Noch eine kleine Verbesserung, um Deinen Code flexibel als Include etc. verwenden zu können, sollte der unnötige globale String wegfallen. Es funktioniert auch einfach so:
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("doc")
hab ich es falsch verstanden oder du Andre ? jedenfalls muss ich an dieser stelle den seit über einem jahr hier rumschlummernden code posten.
Code: Alles auswählen
Procedure.s FindExecutable(extension.s)
Path.s=Space(256)
name.s="temp"
size.l=Len(Path)
GetEnvironmentVariable_(@name, @Path, @size)
Path+"\"
If CreateFile(0,Path+"test."+extension)
ergebnis.s=Space(256)
FindExecutable_("test."+extension,Path,@ergebnis)
CloseFile(0)
DeleteFile(Path+"test."+extension)
EndIf
ProcedureReturn ergebnis
EndProcedure
Debug FindExecutable("html")
Zuletzt geändert von MLK am 02.11.2004 16:02, insgesamt 2-mal geändert.
Damit hast Du gerade mein aktuelles Project vernichtet,MLK hat geschrieben:hab ich es falsch verstanden oder du Andre ? jedenfalls muss ich an dieser stelle den seit über einem jahr hier rumschlummernden code posten.
Code: Alles auswählen
Procedure.s FindExecutable(extension.s) ergebnis.s=Space(256) If CreateFile(0,"c:\test."+extension) FindExecutable_("test."+extension,"c:",@ergebnis) CloseFile(0) DeleteFile("C:\test."+extension) EndIf ProcedureReturn ergebnis EndProcedure Debug FindExecutable("html")
die Homepage-Seite "c:\test.html" für meinen Arbeitgeber.
Wie sieht es mit Schadensersatz aus?

Mal ehrlich: Die Registry ist da schon der bessere und
korrekte Weg, als erst eine Datei zu erstellen...
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck