RACCOURCI sur le bureau

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
LOULOU25
Messages : 150
Inscription : mer. 19/mai/2004 20:40

RACCOURCI sur le bureau

Message 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
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

euh... aller dans les propriétés du raccourci?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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") 

Image
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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.
LOULOU25
Messages : 150
Inscription : mer. 19/mai/2004 20:40

Message 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
Répondre