Seite 1 von 2

Verknüpfung Speichern & Lesen?

Verfasst: 03.03.2020 16:02
von Velindos
Hallo Leute,

möchte meine Velindos Pfad(zb.C:\Windows oder "https://www.msn.com/de-de?inst=4&AR=8") als Verknüpfung speichern und bzw. lesen!

Hab die Sache mit "WriteString(0, Pfadfile$ )" versucht, funzt aber nicht!

Gruss ... Velindos!

Re: Verknüpfung Speichern & Lesen?

Verfasst: 03.03.2020 23:01
von Bisonte
Uralt, funzt aber glaub ich noch.... viewtopic.php?p=46694#p46694

Re: Verknüpfung Speichern & Lesen?

Verfasst: 04.03.2020 14:58
von Velindos
Hallo Bisonte,
Danke für den Tip, finde aber nichts mit speichern!

Gruss ... Velindos!

Re: Verknüpfung Speichern & Lesen?

Verfasst: 05.03.2020 18:01
von bobobo
den Part Verknüpfung schreiben hab ich mal mit externer Hilfe gelöst


nircmd oder nircmdc von nirsoft https://www.nirsoft.net/utils/nircmd.html
kann sowas

über das OS tue ich mich da auch schwer und ich brauchte ne Lösung
hab das dann per runprogram aufgerufen

Re: Verknüpfung Speichern & Lesen?

Verfasst: 05.03.2020 23:11
von Sicro
Hier habe ich auch noch ein Include zum Lesen von Verknüpfungen (unterstützt auch Unicode): GetShellLinkTargetPath

URLs unterstützt dieses Include jedoch noch nicht, wie ich festgestellt habe.
Vielleicht finde ich am Wochenende Zeit, um das Include zu erweitern, damit URLs und das Erstellen von Verknüpfungen unterstützt wird.

Re: Verknüpfung Speichern & Lesen?

Verfasst: 05.03.2020 23:25
von Derren
.url sind nur textdateien (ini format) oder geht's um was anderes?

Re: Verknüpfung Speichern & Lesen?

Verfasst: 06.03.2020 13:06
von DarkDragon
Derren hat geschrieben:.url sind nur textdateien (ini format) oder geht's um was anderes?
Vermutlich eher um .lnk Dateien, z.B. Verknüpfungen auf Programme auf dem Desktop o.ä.

Re: Verknüpfung Speichern & Lesen?

Verfasst: 06.03.2020 13:54
von Derren
Joah, aber .lnk kann er ja schon erstellen, aber URLs werden nicht unterstützt.

Wenn man in Windows eine Verknüpfung erstellt (Rechtsklick auf Desktop/Ordner --> Neu --> Verknüpfung), wird geprüft ob es sich um eine URL handelt, oder um den Pfad zu einem Programm/Datei etc.
Dann wird entweder eine .url oder eine .lnk erstellt.
Die .url lässt sich einfach selber lesen und schreiben.

Re: Verknüpfung Speichern & Lesen?

Verfasst: 06.03.2020 14:17
von HeX0R

Code: Alles auswählen

Procedure CreateShellLink(FileName$, Link$, Argument$, Description$, WorkingDirectory$ = "")
	Protected ppf.IPersistFile, Result, R2
	CompilerIf #PB_Compiler_Unicode
		Protected psl.IShellLinkW
	CompilerElse
		Protected psl.IShellLinkA
	CompilerEndIf
	
	CoInitialize_(0)
	CompilerIf #PB_Compiler_Unicode
		R2 = CoCreateInstance_(?CLSID_ShellLink, 0, 1, ?IID_IShellLinkW, @psl)
	CompilerElse
		R2 = CoCreateInstance_(?CLSID_ShellLink, 0, 1, ?IID_IShellLinkA, @psl)
	CompilerEndIf
	
	If R2 = #S_OK
		psl\SetPath(FileName$)
		psl\SetArguments(Argument$)
		psl\SetWorkingDirectory(WorkingDirectory$)
		psl\SetDescription(Description$)
		psl\SetShowCmd(#SW_SHOWNORMAL)
		psl\SetHotkey(#Null)
		psl\SetIconLocation(FileName$, 0)
		
		If psl\QueryInterface(?IID_IPersistFile, @ppf) = #S_OK
			If ppf\Save(Link$, #True) = #S_OK
				Result = #True
			EndIf
			ppf\Release()
		EndIf
		psl\Release()
	EndIf
	CoUninitialize_()
	
	ProcedureReturn Result
	
	DataSection
		CLSID_ShellLink:
		;00021401-0000-0000-C000-000000000046
		Data.l $00021401
		Data.w $0000, $0000
		Data.b $C0, $00, $00, $00, $00, $00, $00, $46
		IID_IShellLinkA:
		;DEFINE_SHLGUID(IID_IShellLinkA,         0x000214EEL, 0, 0);
		;C000-000000000046
		Data.l $000214EE
		Data.w $0000, $0000
		Data.b $C0, $00, $00, $00, $00, $00, $00, $46
		;IID_IShellLinkW {000214F9-0000-0000-C000-000000000046
		IID_IShellLinkW:
		Data.l $000214F9
		Data.w $0000, $0000
		Data.b $C0, $00, $00, $00, $00, $00, $00, $46
		IID_IPersistFile:
		;0000010b-0000-0000-C000-000000000046
		Data.l $0000010b
		Data.w $0000, $0000
		Data.b $C0, $00, $00, $00, $00, $00, $00, $46
	EndDataSection
EndProcedure

CreateShellLink("C:\Windows", GetUserDirectory(#PB_Directory_Desktop) + "Velindos.lnk", "", "Link to Windows folder")



Re: Verknüpfung Speichern & Lesen?

Verfasst: 09.03.2020 09:18
von Velindos
Hallo Leute,
Danke für eure Vorschläge! Nun das mit dem *.lnk ist klar.

Mein Problem ist das ich einen Url ablegen möchte. Der Tip
.url sind nur textdateien (ini format) oder geht's um was anderes?
habe ich befolgt, nur funzt nicht! Habe Sie als Textdatei gespeichert ...

Code: Alles auswählen

; SCHREIBEN der URL
#Datei = 0
MessageRequester("PureBasic", "Welcome !"+Chr(13) + "PureBasic will write a url named: PureBasicTestFile.url", 0)
; If CreateFile(#Datei, "C:\Users\MEDION\Desktop\PureBasicTestFile.url")
If OpenFile(#Datei, "C:\Users\MEDION\Desktop\PureBasicTestFile.url")
  WriteString(#Datei,"[InternetShortcut]"+Chr(13)+"URL=https://www.purebasic.fr/german/viewtopic.php?f=16&t=31889",#PB_Ascii)
  CloseFile(#Datei)
Else
  MessageRequester("PureBasic", "Error: can't write the url", 0)
  End
EndIf
und gelesen

Code: Alles auswählen

; LESEN der URL
If ReadFile(0, "C:\Users\MEDION\Desktop\PureBasicTestFile.url")
  
  First$ =  Trim(ReadString(0))
  MessageRequester("PureBasic", "Line read: "+First$, 0)
  First$ =  Trim(ReadString(0))
  MessageRequester("PureBasic", "Line read: "+First$, 0)
  
  CloseFile(0)
Else
  MessageRequester("PureBasic", "Error: Can't read the file", 0)
EndIf
End
Wenn ich die Sache mit dem Notepad speichere erkennt er den url.

Gruss ... Velindos!