[resolu]Recupérer le fichier pointé par un raccourcis .Ink

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

[resolu]Recupérer le fichier pointé par un raccourcis .Ink

Message par lepiaf31 »

salut a vous,
je voudrais savoir comment obtenir le chemin du fichier vers lequel pointe un raccourcis.
merci a vous
Dernière modification par lepiaf31 le dim. 27/mai/2007 15:39, modifié 1 fois.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Dobro a pondu le code ci-desous !
Il fonctionne pas mal ! 8)

Code : Tout sélectionner


ProcedureDLL.s ShellLink_GetPath(ShellLinkFile.s)
  Protected ShellLink.IShellLinkA, PersistFile.IPersistFile, *buffer, result.s
  If CoInitialize_ (0) = #S_OK
    If CoCreateInstance_ (?CLSID_ShellLink, 0, 1, ?IID_IShellLink, @ShellLink) = #S_OK
      If ShellLink\QueryInterface(?IID_IPersistFile, @PersistFile) = #S_OK
        *buffer = AllocateMemory ( #MAX_PATH )
        If *buffer
          If MultiByteToWideChar_ ( #CP_ACP , 0, @ShellLinkFile, -1, *buffer, #MAX_PATH )
            If PersistFile\Load(*buffer, 0) = #S_OK
              If ShellLink\Resolve(0, 1) = #S_OK
                RtlZeroMemory_ (*buffer, #MAX_PATH )
                ShellLink\GetPath(*buffer, #MAX_PATH , 0, 0)
                result = PeekS (*buffer)
              EndIf
            EndIf
          EndIf
          FreeMemory (*buffer)
        EndIf
        PersistFile\Release()
      EndIf
      ShellLink\Release()
    EndIf
    CoUninitialize_ ()
  EndIf
  ProcedureReturn result
  DataSection
  CLSID_ShellLink: Data.q $0000000000021401,$46000000000000C0
  IID_IShellLink: Data.q $00000000000214EE,$46000000000000C0
  IID_IPersistFile: Data.q $000000000000010B,$46000000000000C0
  EndDataSection
EndProcedure

Debug ShellLink_GetPath( "c:\purebasic.lnk" )
Denis

Bonne Jounée à tous
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message par lepiaf31 »

Ca ne marche pas chez moi, j'ai mis:

Code : Tout sélectionner

Debug ShellLink_GetPath( "C:\Documents and Settings\<user>\Bureau\Audacity.Ink")
et le message du debogueur est vide
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Tu t'es trompé dans l'extension, c'est .lnk et pas .Ink
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

brossden a écrit :Dobro a pondu le code ci-desous !
Il fonctionne pas mal ! 8)
heu ! t'es sur que c'est de moi ça ? 8O :lol: :lol:

je suis sur que non :D (j'aime pas les pointeurs ! :) )
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

En fait ce code est de moi, une traduction d'un code trouvé sur le web. :)

[Edit: j'ai retrouvé le post du code que j'avais posté et apparemment il ne fonctionne plus, celui-ci est mieux et il n'est pas de moi :lol: )
Dernière modification par nico le dim. 27/mai/2007 15:58, modifié 1 fois.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Message par lepiaf31 »

nico a écrit :Tu t'es trompé dans l'extension, c'est .lnk et pas .Ink
Arf je suis bete
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Erratum est ! :oops:

Je rends à Flype ce que j'avais attribué à Dobro

Toutes mes excuses Flype ! :roll:
Denis

Bonne Jounée à tous
Répondre