Cómo obtener la etiqueta de acceso directo en vb y mostrarla en el botón
Código en módulo
Opción explícita
public Const SHGFI _ nombre para mostrar = & ampH2000
Const pública SHGFI _ LARGEICON = & amp Hipótesis nula
Construcción pública SHGFI _ SHELLICONSIZE = & ampH4
Const pública SHGFI _ SMALLICON = & ampH1 p>
Const pública SHGFI_SYSICONINDEX = & ampH4000
Const pública SHGFI_TYPENAME = & ampH400
Const pública BASIC_SHGFI_FLAGS = SHGFI_TYPENAME o SHGFI_SHELLICONSIZE o SHGFI_SYSICONINDEX o SHGFI_DISPLAYNAME o SHGFI_EXETYPE
Constante pública MAX_PATH = 260
Construcción pública ILD transparente = & ampH1
Tipo público SHFILEINFO
hIcon tiene la misma longitud
iIcon tiene la misma longitud
Los atributos de datos tienen la misma longitud
szDisplayName as String * MAX_PATH
szTypeName as String * 80
Tipo de fin
Función de declaración pública SHGetFileInfo Lib _
" shell32.dll "Alias" SHGetFileInfoA " u
(ByVal pszPath como cadena de caracteres, _
ByVal dwFileAttributes As Long, _
psfi As SHFILEINFO, _
ByVal cbSizeFileInfo As Long, _
ByVal uFlags Misma longitud)
Función de declaración pública ImageList _ Draw Lib " comctl 32 . dll " u
(solo ByVal himl, solo ByVal i, _
ByVal hdc La prueba tiene la misma longitud, el ByVal _ usefile atributos = & H10
Public Const SHGFI _ ICON = & H100
'==================== = ===============================
Cree un nuevo formulario y agregue un cuadro de texto para ingresar el ruta del archivo.
Y utiliza dos cuadros de imagen para mostrar los iconos extraídos.
El siguiente es el código del formulario.
La ruta al icono privado Sub Text1_Change() que se mostrará.
Atenuar hImgSmall As Long
Atenuar fName As String 'Letra de unidad, nombre de carpeta y nombre de archivo.
Dim r As Long
Dim hImgLarge Siempre que
Dim Info1 sea una cadena e Info2 sea una cadena
fName = Text1 . text
hImgSmall & amp= SHGetFileInfo(fName$, 0 & amp, shinfo, Len(shinfo), SHGFI_ICON o SHGFI_SMALLICON o SHGFI_SYSICONINDEX o SHGFI_USEFILEEATTRIBUTES)
Shimlag Corporation. = SHGetFileInfo(fName$, 0 & amp, shinfo, Len(shinfo), SHGFI_ICON o BASIC_SHGFI_FLAGS o SHGFI_SYSICONINDEX o SHGFI_USEFILEATTRIBUTES)
info 1 = Izquierda $(shinfo . szdisplay name, InStr(shinfo.szDisplayName, Chr $(0)) - 1)
Info2 = Left$(shinfo.szTypeName, InStr(shinfo.szTypeName, Chr$(0)) - 1)
Depurar. Imprimir información 1; información 2
Imagen 1. Imagen = LoadPicture()
Imagen 1. AutoRedraw = Verdadero
Imagen 2. Imagen = LoadPicture()
Imagen 2. AutoRedraw = True
r = ImageList_Draw(hImgSmall &, shinfo.iIcon, Picture1.hDC, 0, 0, ILD_Transparent)
r = ImageList_Draw( hImgLarge &, shinfo.iIcon , Picture2.hDC, 3, 3, ild_transparent)
Establecer imagen 1. Imagen = Imagen1. Imagen
Establecer imagen 2. imagen = imagen2. Imagen
Conector final
Usando el código anterior, puedes ver el ícono ingresando una ruta de archivo en Texto1, pero lo que quiero decirte es que no es correcto que lo hagas. ingrese directamente a la ruta de acceso directo de. Primero debe obtener la ruta del archivo señalada por el acceso directo y luego mostrar el icono de esta ruta del archivo. Esto es bastante simple.
Si tienes alguna pregunta, ¡ven a verme!
Halo~
Obtener información sobre los accesos directos es más fácil, consulte a continuación:
Opción explícita
Cita: Automatización y controles de Microsoft Shell
Subcomando privado 1_Click()
Ocultar ruta de la carpeta como una cadena
Atenuar el nombre del acceso directo como una cadena
Marcar el directorio de trabajo como una cadena
El parámetro Dim es una cadena, la descripción es una cadena
Dim IconIdx tiene la misma longitud, ShowCommand tiene la misma longitud
folderpath = " c:\ documentos y settings\administrador\desktop\ " 'El directorio donde se encuentra el acceso directo.
ShortcutName = "ToolBox.exe.lnk " 'El nombre de archivo del acceso directo y asegúrese de agregar lnk.
Mostrar el archivo de icono como una cadena
Llamar a GetShellLinkInfo(FolderPath, ShortcutName, WorkDir, Argumentos, Descripción, IconFile, IconIdx, ShowCommand)
Finalizar conector
private Sub GetShellLinkInfo(ByVal FolderPath es una cadena, ByVal ShortcutName es una cadena, WorkDir es una cadena, _
Parámetros en forma de cadena, descripción en forma de cadena, archivo de icono en forma de cadena, índice de icono en forma de cadena larga, _
ShowCommand es largo)
Atenuar mShell como Shell, mFile como FolderItem, mFolder como carpeta
Atenuar lnk Como ShellLinkObject, siempre
Establecer mShell = New Shell
Establecer mFolder = mShell. Espacio de nombres (ruta de la carpeta)
Continúe con el siguiente paso si ocurre un error
Establezca mFile = mFolder. Items.Item(nombre del acceso directo)
Si ocurre un error, entonces
Nombre del acceso directo de MsgBox y amplificador "¡Inaccesible!"
Uh. borrar
ir a exit_sub
otro
si mFile. Luego vincúlelo
Establezca lnk = mFile. GetLink
WorkDir = lnk. directorio de trabajo
Parámetro = lnk. argumento
descripción = lnk. Descripción
IconIdx = enlace. GetIconLocation(archivo de icono)
ShowCommand = lnk. Mostrar comando
MsgBox "nombre:" & ampmFile. Nombre y designación. vbCrLf&_
Descripción:& amplnk.Descripción&vbCrLf&_
Ruta:&lnk.Path&path.vbCrLf&_
"Directorio de trabajo:" & amplnk. , información de VB
Otro
Nombre de acceso directo de MsgBox &" no es un acceso directo. ", información de VB
Terminará si...
Terminará si...
exit_sub:
Establecer lnk = Ninguno
p>
Establecer mFile = Nada
Establecer mFolder = Nada
Establecer mShell = Nada
Conector final