Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupérer la cible d'un raccourci, oui mais...

2 réponses
Avatar
KiWin
Bonjour,

Je cherche à récupérer la cible d'un raccourci LNK ou URL. Y'a bien une
API, mais elle contenue ds VB5STKIT.DLL / VB6STKIT.DLL. Autant alors
faire appel au shell, ce que je fais pour l'instant...

N'y aurait t'il pas autre moyen, avec une système plus courante par
exemple ?

J'essaye d'utiliser la fonction GetOpenFileName pour récupérer la cible
du raccourci donné. Mais est-il possible d'utiliser cette fonction en
auto, c'est à dire sélection univoque du fichier sans afficher la bte de
dial.

Merci.


' Déclaration de l'API
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

' GetOpenFileName flags
Public Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Public Function OpenFileDialog(Optional DialogTitle As String, Optional
sFilter As String, Optional Flags As OFN_Constants, Optional InitialDir
As String, Optional hwndOwner As Long, Optional hInstance As Long) As
String

Dim OFName As OPENFILENAME

With OFName
.lStructSize = Len(OFName)
.hwndOwner = hwndOwner
.hInstance = hInstance
.lpstrFilter = sFilter
.lpstrFile = Space$(254)
.nMaxFile = 255
.lpstrFileTitle = Space$(254)
.nMaxFileTitle = 255
.lpstrInitialDir = InitialDir
.lpstrTitle = DialogTitle
.Flags = Flags
End With

If GetOpenFileName(OFName) Then
OpenFileDialog = Trim$(OFName.lpstrFile)
End If

End Function

Private Sub Form_Load()
Testa$ = OpenFileDialog("Choississez un fichier...", "Raccourci
(*.lnk)" + Chr$(0) + "Mon Fichier.lnk" & Chr$(0), OFN_NOCHANGEDIR,
"C:\WINDOWS\Menu Démarrer\Programmes\Accessoires\", Me.hWnd,
App.hInstance)
MsgBox Testa

End Sub

2 réponses

Avatar
François Picalausa
Hello,

Sur le dernier CD de VB, il y a un exemple utilisant l'interface IShellLink
qui permet cela.

--
François Picalausa

"KiWin" a écrit dans le message de news:

Bonjour,

Je cherche à récupérer la cible d'un raccourci LNK ou URL. Y'a bien
une API, mais elle contenue ds VB5STKIT.DLL / VB6STKIT.DLL. Autant
alors faire appel au shell, ce que je fais pour l'instant...

N'y aurait t'il pas autre moyen, avec une système plus courante par
exemple ?

J'essaye d'utiliser la fonction GetOpenFileName pour récupérer la
cible du raccourci donné. Mais est-il possible d'utiliser cette
fonction en auto, c'est à dire sélection univoque du fichier sans
afficher la bte de dial.

Merci.


Avatar
KiWin
François Picalausa nous racontait :

Hello,



Bonsoir,

Sur le dernier CD de VB, il y a un exemple utilisant l'interface
IShellLink qui permet cela.



Oui mais elle utilise VB5STKIT.DLL / VB6STKIT.DLL... :-)

Merci quand même.

KiWin