Quelqun pourrais-t-il me dire comment à partir d'un raccourci sur le bureau récuperer l'adresse d'éxécution de l'exe sur lequel point le raccourci.
Merci par avance
RACCOURCI sur le bureau
il veut dire avec du code... fais une recherche de "shell" et "link" sur le forum, tu devrais tomber sur un code de Regis...
[edit]
http://purebasic.hmt-forum.com/viewtopi ... shell+link
Dri
[edit]
http://purebasic.hmt-forum.com/viewtopi ... shell+link
Dri
sinon, la fonction exacte pour çà - en utilisant effectivement l'interface IShellLink (Code PB4) :
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")