Page 1 sur 1

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

Publié : dim. 27/mai/2007 13:37
par lepiaf31
salut a vous,
je voudrais savoir comment obtenir le chemin du fichier vers lequel pointe un raccourcis.
merci a vous

Publié : dim. 27/mai/2007 14:29
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" )

Publié : dim. 27/mai/2007 14:35
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

Publié : dim. 27/mai/2007 15:29
par nico
Tu t'es trompé dans l'extension, c'est .lnk et pas .Ink

Publié : dim. 27/mai/2007 15:32
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 ! :) )

Publié : dim. 27/mai/2007 15:35
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: )

Publié : dim. 27/mai/2007 15:39
par lepiaf31
nico a écrit :Tu t'es trompé dans l'extension, c'est .lnk et pas .Ink
Arf je suis bete

Publié : dim. 27/mai/2007 16:29
par brossden
Erratum est ! :oops:

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

Toutes mes excuses Flype ! :roll: