Page 1 sur 1

RACCOURCI sur le bureau

Publié : mer. 06/sept./2006 16:41
par LOULOU25
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

Publié : mer. 06/sept./2006 17:42
par poshu
euh... aller dans les propriétés du raccourci?

Publié : mer. 06/sept./2006 18:00
par Dr. Dri
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

Publié : mer. 06/sept./2006 18:31
par Flype
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") 


Publié : mer. 06/sept./2006 19:08
par nico
Je reconnais cette procédure que je t'ai posté y a deux ans déjà! :lol:

Je l'avais juste adapté en Pure, il est complètement pompé du Web.

Publié : mer. 06/sept./2006 19:25
par LOULOU25
nico a écrit :Je reconnais cette procédure que je t'ai posté y a deux ans déjà! :lol:

Je l'avais juste adapté en Pure, il est complètement pompé du Web.
Il semble qu'elle fonctionne de maniére aléatoire