Seite 1 von 1
Verknüpfung auf eine Datei erstellen
Verfasst: 11.11.2006 23:24
von jear
Poste hier, weil ich mir wirklich wie ein Anfänger vorkomme!
Ich möchte eine schlichte Verknüpfung auf eine beliebige Datei in einem bestimmten Ordner ablegen, so als hätte ich das mit den Windows-Features getan.
Habe mir in der letzten Stunde die Finger wund gesucht, aber nix gefunden.
Verfasst: 11.11.2006 23:28
von ts-soft
Code: Alles auswählen
;* Author: Danilo _
;* Date: 09. December 2003 _
;* _
;* create shell links/shortcuts _
;* translated from my old example that used CallCOM() _
;* _
;* by Danilo, 09.12.2003 _
;* _
;* changed for easy use in PB 4.0 > _
;* by ts-soft
;** CreateShortcut
;** .Path: for the Link ("c:\PureBasic\purebasic.exe")
;** .Link: "C:\Documents and Settings\User\Desktop\PureBasic.lnk"
;** .WorkingDir: "c:\PureBasic\"
;** .Argument: "%1"
;** .ShowCommand: #SW_SHOWNORMAL or #SW_SHOWMAXIMIZED or #SW_SHOWMINIMIZED
;** .Description: "Start PureBasic"
;** .HotKey: no need to use this :)
;** .IconFile: "c:\PureBasic\purebasic.exe"
;** .IconIndex: 1
Procedure CreateShortcut(Path.s, Link.s, WorkingDir.s = "", Argument.s = "", ShowCommand.l = #SW_SHOWNORMAL, Description.s = "", HotKey.l = #Null, IconFile.s = "|", IconIndex.l = 0)
Protected psl.IShellLinkA, ppf.IPersistFile, mem.s, hres.l, Result.l
If IconFile = "|" : IconFile = Path : EndIf
If Not WorkingDir : WorkingDir = GetPathPart(Path) : EndIf
CoInitialize_(0)
If CoCreateInstance_(?CLSID_ShellLink,0,1,?IID_IShellLink,@psl) = 0
Set_ShellLink_preferences:
psl\SetPath(@Path)
psl\SetArguments(@Argument)
psl\SetWorkingDirectory(@WorkingDir)
psl\SetDescription(@Description)
psl\SetShowCmd(ShowCommand)
psl\SetHotkey(HotKey)
psl\SetIconLocation(@IconFile, IconIndex)
ShellLink_SAVE:
If psl\QueryInterface(?IID_IPersistFile,@ppf) = 0
mem.s = Space(1000)
MultiByteToWideChar_(#CP_ACP, 0, Link, -1, mem, 1000)
hres = ppf\Save(@mem,#True)
Result = 1
ppf\Release()
EndIf
psl\Release()
EndIf
CoUninitialize_()
ProcedureReturn Result
DataSection
CLSID_ShellLink:
Data.l $00021401
Data.w $0000,$0000
Data.b $C0,$00,$00,$00,$00,$00,$00,$46
IID_IShellLink:
Data.l $000214EE
Data.w $0000,$0000
Data.b $C0,$00,$00,$00,$00,$00,$00,$46
IID_IPersistFile:
Data.l $0000010B
Data.w $0000,$0000
Data.b $C0,$00,$00,$00,$00,$00,$00,$46
EndDataSection
EndProcedure
Findeste auch in meinem IncludeViewer

Verfasst: 11.11.2006 23:33
von jear
@ts-soft
Das kenne ich natürlich und nutze es so ähnlich in vielen Anwendungen.
Ich möchte aber statt die Datei "Bild_sowieso.jpg" oder "Test.doc" oder den Ordner "..\Bilder2006\" in einen Zielordner zu kopieren, lediglich Verknüpfungen dazu kopieren.
Da steh ich echt auf dem Schlauch.
Verfasst: 11.11.2006 23:37
von ts-soft
Ist doch genau dasselbe! "Verknüpfung mit" kannste selber im Namen
einfügen. Oder was hab ich jetzt falsch verstanden

Verfasst: 11.11.2006 23:49
von jear
Wie der Ochs vorm Berg steh ich da.
Rechtsklick auf eine beliebige Datei.
Im Kontextmenü auswählen: Verknüpfung erstellen.
Die Verknüpfung ausschneiden
und in einem anderen Ordner einfügen.
Diesen Vorgang will ich per Programm nachbilden.
Ich will und brauche nicht zu wissen, welches Programm mit der Datei verknüpft ist und so weiter.
Dank für Deine Hilfe
Verfasst: 12.11.2006 00:00
von ts-soft
jear hat geschrieben:
Rechtsklick auf eine beliebige Datei.
Im Kontextmenü auswählen: Verknüpfung erstellen.
erster Parameter
jear hat geschrieben:
Die Verknüpfung ausschneiden
und in einem anderen Ordner einfügen.
zweiter Parameter
jear hat geschrieben:
Diesen Vorgang will ich per Programm nachbilden.
Etwas mit Tastensimulationen? Ansonsten bleibts bei obiger Procedure, die
macht das, abgesehen von der Vorgehensweise.
Verfasst: 12.11.2006 00:20
von jear
Danke ts-soft
habe mich jetzt durch die MSDN geackert und es einfach mit Create Shell-Link probiert.
Man muss die anderen Parameter einfach leer lassen, dann entsteht der Link!
Zu kompliziert gedacht. Manches ist wirklich nur einfach.
jear
Verfasst: 12.11.2006 00:24
von ts-soft
>> Zu kompliziert gedacht. Manches ist wirklich nur einfach.
Das ist bestimmt schon jedem passiert
Und ich hab überlegt, was Du nun vermißt
