Verknüpfung auf eine Datei erstellen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Verknüpfung auf eine Datei erstellen

Beitrag 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.
Zuletzt geändert von jear am 12.11.2006 00:29, insgesamt 1-mal geändert.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
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 »

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 :wink:
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
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
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 »

Ist doch genau dasselbe! "Verknüpfung mit" kannste selber im Namen
einfügen. Oder was hab ich jetzt falsch verstanden :roll:
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
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
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 »

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.
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
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
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 »

>> Zu kompliziert gedacht. Manches ist wirklich nur einfach.
Das ist bestimmt schon jedem passiert :D
Und ich hab überlegt, was Du nun vermißt :lol:
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