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 !
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 !
heu ! t'es sur que c'est de moi ça ?
je suis sur que non

(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

)
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 !
Je rends à Flype ce que j'avais attribué à Dobro
Toutes mes excuses Flype !
