Advertisement

Delphi获取快捷方式内的图标与路径数据.rar

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:RAR


简介:
本资源提供了一种使用Delphi编程语言来读取和提取Windows系统中快捷方式文件内嵌图标的详细方法及获取目标文件或目录路径的技术。包含示例代码和相关说明文档,适合开发人员学习研究。 在Windows操作系统中,快捷方式是一种方便用户快速访问目标文件或程序的链接形式。它包含了指向目标文件的位置、图标以及一些附加的信息。使用Delphi编程环境可以利用API函数来读取并处理这些信息。 本教程主要讲解如何用Delphi获取快捷方式(.lnk)中的图标和路径等信息,涉及两个关键Windows API库:`Shell32.dll` 和 `Shlwapi.dll`。这两个库提供了访问和解析快捷方式文件的接口,在Delphi中通过相应的单元来引入这些功能。 1. **读取快捷方式的路径** 使用`ShellAPI`单元中的相关函数可以加载一个快捷方式文件,然后通过调用`IShellLink`接口的方法获取目标文件的真实路径。具体来说,需要先创建一个 `IShellLink` 对象,并且加载指定的.lnk 文件。 ```delphi uses ShellAPI, ShlObj; var ShortcutFile: string; ShellLink: IShellLink; PathInfo: PATHUNION; begin ShortcutFile := C:\pathtoyourshortcut.lnk; OleCheck(CoCreateInstance(CLASS_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLink, Pointer(ShellLink))); OleCheck(ShellLink.Load(ShortcutFile, STGM_READ)); OleCheck(ShellLink.GetPath(PChar(PathInfo.lpszPath), SizeOf(PathInfo.lpszPath), PathInfo, SLGP_UNCPRIORITY)); // Now PathInfo.lpszPath contains the target path end; ``` 2. **读取快捷方式的图标** 要获取一个快捷方式图标的路径和索引,可以使用`IShellLink`接口中的`GetIconLocation`方法。此方法返回包含图标文件位置以及其在该文件中所对应的索引值。 ```delphi uses ShellAPI, ShlObj; var ShortcutFile: string; ShellLink: IShellLink; IconPath: string; begin ShortcutFile := C:\pathtoyourshortcut.lnk; OleCheck(CoCreateInstance(CLASS_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLink, Pointer(ShellLink))); OleCheck(ShellLink.Load(ShortcutFile, STGM_READ)); OleCheck(ShellLink.GetIconLocation(PChar(IconPath), MAX_PATH)); // IconPath now contains the icon file path and index end; ``` 3. **读取其他信息** 快捷方式还可能包含其它数据,比如工作目录、热键等。可以通过`IShellLink`接口的方法获取这些附加的信息。 4. **显示图标** 通过前面步骤获得的图标的路径和索引可以使用Windows API函数来加载并展示该图标图像到Delphi界面控件中如TImage或保存为文件。 ```delphi uses ShellAPI, ShlObj, Vcl.Imaging.bmp, Vcl.Controls; var ImageList: IImageList; IconHandle: HICON; begin OleCheck(SHGetImageList(SHIL_EXTRALARGE, IImageList, Pointer(ImageList))); IconHandle := ImageList.GetIcon(0); // Now you can use the icon handle to display or save the image end; ``` 以上介绍了使用Delphi读取快捷方式图标和路径信息的基本步骤,在实际应用中还需要考虑错误处理及兼容性问题。通过掌握这些API接口,可以创建出能够有效管理Windows系统中的各种快捷方式的应用程序。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Delphi.rar
    优质
    本资源提供了一种使用Delphi编程语言来读取和提取Windows系统中快捷方式文件内嵌图标的详细方法及获取目标文件或目录路径的技术。包含示例代码和相关说明文档,适合开发人员学习研究。 在Windows操作系统中,快捷方式是一种方便用户快速访问目标文件或程序的链接形式。它包含了指向目标文件的位置、图标以及一些附加的信息。使用Delphi编程环境可以利用API函数来读取并处理这些信息。 本教程主要讲解如何用Delphi获取快捷方式(.lnk)中的图标和路径等信息,涉及两个关键Windows API库:`Shell32.dll` 和 `Shlwapi.dll`。这两个库提供了访问和解析快捷方式文件的接口,在Delphi中通过相应的单元来引入这些功能。 1. **读取快捷方式的路径** 使用`ShellAPI`单元中的相关函数可以加载一个快捷方式文件,然后通过调用`IShellLink`接口的方法获取目标文件的真实路径。具体来说,需要先创建一个 `IShellLink` 对象,并且加载指定的.lnk 文件。 ```delphi uses ShellAPI, ShlObj; var ShortcutFile: string; ShellLink: IShellLink; PathInfo: PATHUNION; begin ShortcutFile := C:\pathtoyourshortcut.lnk; OleCheck(CoCreateInstance(CLASS_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLink, Pointer(ShellLink))); OleCheck(ShellLink.Load(ShortcutFile, STGM_READ)); OleCheck(ShellLink.GetPath(PChar(PathInfo.lpszPath), SizeOf(PathInfo.lpszPath), PathInfo, SLGP_UNCPRIORITY)); // Now PathInfo.lpszPath contains the target path end; ``` 2. **读取快捷方式的图标** 要获取一个快捷方式图标的路径和索引,可以使用`IShellLink`接口中的`GetIconLocation`方法。此方法返回包含图标文件位置以及其在该文件中所对应的索引值。 ```delphi uses ShellAPI, ShlObj; var ShortcutFile: string; ShellLink: IShellLink; IconPath: string; begin ShortcutFile := C:\pathtoyourshortcut.lnk; OleCheck(CoCreateInstance(CLASS_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLink, Pointer(ShellLink))); OleCheck(ShellLink.Load(ShortcutFile, STGM_READ)); OleCheck(ShellLink.GetIconLocation(PChar(IconPath), MAX_PATH)); // IconPath now contains the icon file path and index end; ``` 3. **读取其他信息** 快捷方式还可能包含其它数据,比如工作目录、热键等。可以通过`IShellLink`接口的方法获取这些附加的信息。 4. **显示图标** 通过前面步骤获得的图标的路径和索引可以使用Windows API函数来加载并展示该图标图像到Delphi界面控件中如TImage或保存为文件。 ```delphi uses ShellAPI, ShlObj, Vcl.Imaging.bmp, Vcl.Controls; var ImageList: IImageList; IconHandle: HICON; begin OleCheck(SHGetImageList(SHIL_EXTRALARGE, IImageList, Pointer(ImageList))); IconHandle := ImageList.GetIcon(0); // Now you can use the icon handle to display or save the image end; ``` 以上介绍了使用Delphi读取快捷方式图标和路径信息的基本步骤,在实际应用中还需要考虑错误处理及兼容性问题。通过掌握这些API接口,可以创建出能够有效管理Windows系统中的各种快捷方式的应用程序。
  • AnacondaRAR文件
    优质
    这段内容似乎是指一个包含Anaconda软件快捷方式和图标的RAR压缩文件。用户可以通过解压此RAR文件来获取Anaconda相关启动程序的快捷方式及图标资源,方便桌面环境下的快速访问与管理。 提供Spyder、Navigator、Prompt、Jupyter、IPython的快捷方式图标。
  • JSP中两种及URL法(推荐)
    优质
    本文介绍了在Java服务器页面(JSP)开发中,如何通过相对路径和绝对路径的方式获取文件或资源的位置,并重点讲解了使用URL对象来动态获取路径的方法。此方法特别适用于处理复杂的web应用环境下的路径需求。 下面为大家介绍在JSP中获取路径的两种方法以及获得URL路径的方法(推荐)。我觉得这些内容相当实用,现在分享给大家参考。希望对大家有所帮助。
  • 批量替换工具
    优质
    这是一款功能强大的软件工具,专门用于快速、批量地修改电脑上各种程序或文档的快捷方式路径,大大提高工作效率。 快捷方式路径批量替换工具可以快速查找并更改快捷方式的路径。
  • AndroidSD卡
    优质
    本文介绍了如何在Android系统中获取SD卡路径以及访问手机内部存储的方法,帮助开发者解决文件存取问题。 在Android开发过程中,获取SD卡路径及查询其内存大小是常见的需求之一,这对于应用程序的数据存储与管理至关重要。本段落将详细介绍如何实现此功能,并介绍相关的类和方法。 首先来看一下获取SD卡路径的两种常见方式: 1. **硬编码路径**: ```java private String folder = sdcard/DCIM/Camera; // 不推荐使用这种方式。 ``` 这种直接写死SD卡路径的方式虽然简单,但并不适用于所有设备。因为不同的Android设备可能会有不同的默认存储位置。 2. **使用Environment类**: ```java public String getSDPath() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory(); } return sdDir.toString(); } ``` 通过`Environment.getExternalStorageDirectory()`方法可以获取到SD卡的根目录,这种方式更为推荐,因为它能确保适应不同设备的存储路径。 接下来我们来详细分析与SD卡操作相关的两个核心类: 1. **Environment类**: `Environment`类提供了访问系统环境变量的方法,特别是关于外部存储(通常指SD卡)的状态和路径。其中,`getExternalStorageState()`方法用于获取SD卡的状态,返回值可以是以下常量之一: - `MEDIA_MOUNTED`: 表示SD卡已挂载并且可读写。 - `MEDIA_MOUNTED_READ_ONLY`: 表示SD卡已挂载但只读。 - `MEDIA_UNMOUNTED`: 表示SD卡已卸载。 - `MEDIA_REMOVED`: 表示SD卡已被物理移除。 - `MEDIA_CHECKING`: SD卡正在进行磁盘检查。 - `MEDIA_NOFS`: 表示SD卡为空或者使用了不支持的文件系统。 - `MEDIA_SHARED`: SD卡通过USB大容量存储共享。 - `MEDIA_UNMOUNTABLE`: 表示SD卡无法挂载。 除此之外,Environment还提供了一些获取特定目录的方法,如: - `getDataDirectory()`: 获取Android数据目录。 - `getDownloadCacheDirectory()`: 获取下载缓存内容目录。 - `getExternalStoragePublicDirectory(String type)`:根据指定的类型(例如`DIRECTORY_PICTURES`)获取公共外部存储目录。 2. **StatFs类**: `StatFs`类用于获取文件系统的统计信息,包括可用空间和总空间。例如,我们可以通过以下方式获取SD卡的剩余空间: ```java StatFs stat = new StatFs(getSDPath()); long blockSize = stat.getBlockSizeLong(); long availableBlocks = stat.getAvailableBlocksLong(); long totalBlocks = stat.getBlockCountLong(); long freeSpaceInBytes = availableBlocks * blockSize; long totalSpaceInBytes = totalBlocks * blockSize; ``` 这里,`blockSize`是每个块的字节数,`availableBlocks`是剩余可用的块数量,而`totalBlocks`则是总的块数量。通过这些信息可以计算出SD卡的实际总存储量和可用空间。 结合以上知识点,我们可以编写一个完整的示例代码来获取并展示SDCard的信息: ```java public class SDCardInfoActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sdcard_info); String sdPath = getSDPath(); if (sdPath != null) { displaySDCardInfo(sdPath); } else { Toast.makeText(this, SD Card not available, Toast.LENGTH_SHORT).show(); } } private String getSDPath() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return Environment.getExternalStorageDirectory().getPath(); } return null; } private void displaySDCardInfo(String path) { StatFs stat = new StatFs(path); long blockSize = stat.getBlockSizeLong(); long availableBlocks = stat.getAvailableBlocksLong(); long totalBlocks = stat.getBlockCountLong(); long freeSpaceInBytes = availableBlocks * blockSize; long totalSpaceInBytes = totalBlocks * blockSize; TextView tvFreeSpace = findViewById(R.id.tv_free_space); tvFreeSpace.setText(Free Space: + (freeSpaceInBytes / (1024 * 1024)) + MB); TextView tvTotalSpace = findViewById(R.id.tv_total_space); tvTotalSpace.setText(Total Space: + (totalSpaceInBytes / (1024 * 1024)) + MB); } } ``` 此示例代码将SD卡的总空间和可用空间显示在界面上,方便用户了解存储状态。 总之,Android开发者可以通过`Environment`和`StatFs`类来获取SD卡的路径及内存信息,并确保应用能够正确管理和使用外部存储。实际
  • 去除箭头
    优质
    本教程详细介绍如何在Windows操作系统中移除桌面快捷方式图标上的小箭头标记,使桌面更加整洁美观。 功能:执行BAT批处理脚本A以去除桌面快捷方式图标上的箭头,并通过执行BAT批处理脚本B来恢复操作系统默认的带有箭头的桌面图标状态。这两个脚本可以解决其他方法导致的问题,例如任务栏被锁定和快捷方式图标的箭头变成黑块。 特点: 1. 无后遗症。 2. 实现了视觉上完美无瑕的效果,通过放大镜程序任意级别放大检查均不会发现任何污染。 3. 使用了一个自定义的特殊图标文件作为箭头图标,并且没有添加其他系统文件。 4. 批处理脚本是明文形式,安全可靠,避免了潜在的安全隐患。 5. 一次运行即可立即生效,无需重启。 版本:此脚本适用于32位或64位操作系统。不同系统的路径可能有所不同,最初的脚本基于Windows7制作,并添加了WinXP的版本。使用其他系统时如发现差异可以自行修改以适应特定环境。 缺点:设置了获取障碍需要虚拟分3分。实际上脚本并不复杂,有能力的人完全可以自己完成类似的任务。设置分数是为了避免被随意复制和传播。 背景信息: 从2014年3月开始认真研究这个问题,并且在那时制作了这个脚本来彻底解决快捷方式图标的问题。早期网络上能找到的方法大多有后遗症或不能完全解决问题。 解决方案步骤包括:修改注册表以修复任务栏锁定问题;复制自定义的透明但非全透的箭头图标文件到系统目录下;更新注册表将快捷方式的箭头指向新图标的路径;结束并重启explorer进程,清除缓存。 制作背景: 从2013年10月开始关注这个问题,并在2014年决定彻底解决。通过分析网络上的各种方法发现它们要么有后遗症或不能完全解决问题。最终决定自己动手创建一个符合要求的特殊图标来完美替代原有的箭头图标,从而实现无污染的效果。 早期尝试的方法和问题: - 方法一试图删除注册表项,但会导致任务栏锁定。 - 方法二使用透明图标替换原有箭头图标的方案导致了黑块出现的问题。 - 方法三选择系统自带非全透的图标作为替代品,虽然避免了黑块问题但却带来了其他的视觉污染。 这些早期的方法都存在缺陷或后遗症。因此最终采用自己制作符合特定标准(视觉上透明但数据级别不完全透明)的特殊箭头图标的解决方案。
  • C#中当前7种
    优质
    本文详细介绍了在C#编程语言中获取当前执行文件或应用程序运行时路径的七种不同方法,帮助开发者灵活选择适合场景的技术方案。 C#获取当前路径的7种方法,在数据交互等编程应用上会有帮助。
  • Delphi全部串口号两种.rar
    优质
    本资源提供两种方法用于使用Delphi编程语言获取计算机上所有可用的串行端口(COM端口)名称。包含详细代码示例与注释说明,适用于需要进行串口通信开发的技术人员。 在Delphi 7环境下使用两种方法读取电脑所有的串口号,并打开串口列表以获取串口号。这两种方法各有特点,在Windows 7系统中测试结果正常。编写代码时需要引用Registry单元。运行窗体的效果可以通过点击不同的按钮来实现,一个按钮采用一种方法读取串口信息,另一个按钮则使用另一种方法。
  • Python书写法及目录
    优质
    本文介绍了在Python中正确编写文件路径的方法以及如何有效地获取和操作目录结构。 获取文件目录的方法: 导入os模块后可以使用以下方法来获取不同级别的目录: - 获取当前工作目录:`os.getcwd()` - 获取上级目录有两种方式:`os.path.abspath(os.path.dirname(os.getcwd()))` 或 `os.path.abspath(os.path.join(os.getcwd(), ..))` - 获取上上级目录:`os.path.abspath(os.path.join(os.getcwd(), ../..))` 此外,还可以使用以下方法改变当前工作目录和列出指定路径下的文件: - 改变到指定的路径:`os.chdir(path2)` - 列出指定路径下所有的文件与子目录名:`dir_list2 = os.listdir(path2)`
  • 使用Eclipse打开项目文件夹
    优质
    本教程介绍如何在Eclipse集成开发环境中快速查找并打开项目的本地文件夹路径,提高开发效率。 网上大多数的Eclipse文件目录插件需要通过右键菜单使用。而这款插件直接在工具栏显示,单击即可打开到文件目录。