'此方法不需要引用IShellLink.
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type LNKHEAD
dwID As Long
dwGUID(3) As Long
dwFlags As Long
dwFileAttributes As Long
dwCreationTime As FILETIME
dwModificationTime As FILETIME
dwLastaccessTime As FILETIME
dwFileLen As Long
dwIconNum As Long
dwWinStyle As Long
dwHotkey As Long
dwReserved1 As Long
dwReserved2 As Long
End Type
Private Type FILELOCATIONINFO
dwSize As Long
dwFirstOffset As Long
dwFlags As Long
dwOffsetOfVolume As Long
dwOffsetOfBasePath As Long
dwOffsetOfNetworkVolume As Long
dwOffsetOfRemainingPath As Long
End Type
Private Type LOCALVOLUMETAB
dwSize As Long
dwTypeOfVolume As Long
dwVolumeSerialNumber As Long
dwOffsetOfVolumeName As Long
strVolumeName As Byte
End Type
Private Type NETWORKVOLUMETAB
dwSize As Long
dwUnknown1 As Long
dwOffsetOfNetShareName As Long
dwUnknown2 As Long
dwUnknown3 As Long
strNetShareName As Byte
End Type
Private Const LNK_HASIDLIST = &H1
Private Const LNK_FILEDIR = &H2
Private Const LNK_HASDES = &H4
Private Const LNK_HASPATH = &H8
Private Const LNK_HASWORKDIR = &H10
Private Const LNK_HASCMD = &H20
Private Const LNK_LOCALVOLUME = &H1
Private Const LNK_NETSHARE = &H2
Public Function GetLinkPath(ByVal strShortCut As String) As String
Dim objLinked As LNKHEAD
Dim intNo As Integer, intTmp As Integer
Dim objInfo As FILELOCATIONINFO
Dim intSeek As Integer
Dim bytBuffer() As Byte
intNo = FreeFile
Open strShortCut For Binary As #intNo
Get #intNo, , objLinked
intSeek = Len(objLinked)
If objLinked.dwFlags And LNK_HASIDLIST Then
Get #intNo, , intTmp
Else
Close #intNo
Exit Function
End If
intSeek = Seek(intNo)
intSeek = intSeek + intTmp
Seek #intNo, intSeek
Get #intNo, , objInfo
Seek #intNo, objInfo.dwOffsetOfBasePath + intSeek
If objInfo.dwFlags And LNK_NETSHARE Then
intSeek = objInfo.dwOffsetOfNetworkVolume - objInfo.dwOffsetOfBasePath
Else
intSeek = objInfo.dwOffsetOfRemainingPath - objInfo.dwOffsetOfBasePath
End If
ReDim bytBuffer(intSeek - 1)
Get #intNo, , bytBuffer
Close #intNo
GetLinkPath = StrConv(bytBuffer, vbUnicode)
End Function
分享到:
相关推荐
在VB(Visual Basic)编程环境中,实现文件拖拽并显示文件路径是一项常见的功能,尤其在设计用户界面时,能够提高用户的交互体验。本教程将详细解释如何通过VB来实现这一功能。 首先,我们需要理解VB中的DragDrop...
- **桌面**:可以使用`Environment.GetFolderPath(Environment.SpecialFolder.Desktop)`获取桌面路径,然后保存快捷方式。 - **程序组**:程序组通常位于开始菜单下,路径可能为`Environment.GetFolderPath...
总结来说,VB.NET中读取快捷方式文件的路径涉及的主要知识点有:导入`Shell32`命名空间,使用`ShellLinkObject`类解析快捷方式,以及通过`Target.Path`属性获取目标文件路径。理解并掌握这些内容,有助于开发者更...
首先,创建一个`Shell.Application`实例,然后使用`NameSpace`方法打开LNK文件所在的文件夹,再用`Items`方法获取该文件,最后调用`GetSpecialFolderItem`获取快捷方式的属性。 ```vb Dim shell As Object Set ...
- 创建文件的快捷方式:`FileInfo.CreateShortcut(targetPath)` - 删除文件:`fileInfo.Delete()` 4. 使用DirectoryInfo类获取目录属性: 如果需要获取目录的信息,可以使用DirectoryInfo类,其工作原理与...
在VB(Visual Basic)编程中,获取系统路径是一项常见的任务,它涉及到操作系统环境的交互,以便于读取、写入或执行与特定系统路径相关的文件和程序。系统路径包括多种类型,例如系统目录、用户文档目录、临时文件夹...
总的来说,VB获取桌面路径并删除ICO文件涉及的知识点包括:特殊目录访问、文件路径的构建、文件操作(如删除)、文件存在性的检查以及基本的错误处理。通过这些技巧,你可以编写出一个实用且安全的程序来管理用户...
在VB(Visual Basic)编程中,获取Windows操作系统中的一些常用文件夹路径是非常常见的需求,例如桌面、程序...这在编写需要与这些特定文件夹交互的软件时非常有用,例如备份、文件管理或者设置自定义快捷方式等。
- `lpstrLinkPath`:指向的目标文件路径。 - `lpstrLinkArguments`:启动时传递给目标文件的参数。 - 返回值:如果成功则返回非零值;失败则返回零。 - **OSfRemoveShellLink**:删除指定的快捷方式。 - 参数...
通过学习和理解这段代码,你可以扩展功能,比如动态获取程序路径,或者添加更多的快捷方式属性,如描述、热键等。这将帮助你更好地掌握VB在Windows桌面创建快捷方式的技术,并且在实际开发中提高效率,提供更友好的...
' 获取快捷方式对象 Dim shortcut As Object Set shortcut = CreateObject("WScript.Shell").CreateShortcut(shortcutFile.Path) ' 访问快捷方式属性,如TargetPath targetPath = shortcut.TargetPath ``` `Create ...
- 设置`TargetPath`为目标文件路径。 - 设置`Arguments`为命令行参数。 - 设置`WindowStyle`为最小化模式(值为1)。 - 设置`Hotkey`为热键。 - 如果`IconFileIconIndex`被设置,则使用该图标;否则,默认使用...
### 在VB中获取可执行文件及Windows 95快捷方式的图标 #### 一、概述 在Visual Basic(简称VB)编程中,有时我们需要获取一个可执行文件或Windows 95快捷方式的图标来增强程序的用户体验或者进行图标管理等工作。...
在VB中,你还可以增加错误处理机制,确保路径有效并检查权限,以及在创建快捷方式时提供更多的自定义选项,如图标、工作目录等。通过结合这些方法,你可以构建一个功能完善的程序,方便用户一键访问指定的网页。 ...
- **IconLocation**:指定显示在快捷方式上的图标的文件路径。如果没有提供,则默认使用目标文件的图标。 - **WorkingDirectory**:当运行快捷方式指向的应用程序时,当前工作目录将被设置为此路径。这对于需要特定...
4. **快捷方式对象**:一旦确定了一个项是快捷方式,可以使用`Shell.Namespace(0).GetDetailsOf(Item, ColumnIndex)`函数获取其详细信息,如目标路径、图标等。`ColumnIndex`可以根据需要指定,例如,0通常是名称,4...
4. **文件路径处理**:我们需要获取或输入EXE文件的完整路径,这涉及到字符串处理和文件系统知识。可以使用Environment.GetFolderPath获取常用文件夹路径,或者使用OpenFileDialog控件让用户选择文件。 5. **事件...
这种文件包含了指向实际程序或文件的路径信息,当用户点击快捷方式时,系统会根据这些信息启动目标程序。 要实现"登录电脑自动为应用系统创建快捷方式",我们可以采用以下步骤: 1. **登录事件检测**:首先,我们...
这样,`glob.glob()`会返回匹配该模式的所有文件路径。 在Java中,可以使用`Files.walk()`方法从给定的起始路径开始,递归地遍历文件树。配合`Files.isRegularFile()`判断是否为普通文件,以及`Path.getFileName()....
- **设置快捷方式属性**: 创建了快捷方式对象后,可以设置多个属性,如目标路径、工作目录、图标路径等。 ```vbscript Shortcut.TargetPath = "C:\path\to\application.exe" Shortcut.WorkingDirectory = "C:\...