Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo obtener la etiqueta de acceso directo en vb y mostrarla en el botón

Cómo obtener la etiqueta de acceso directo en vb y mostrarla en el botón

Primero déjame decirte el código sobre cómo obtener el ícono de archivo.

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

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