65.9K
CodeProject 正在变化。 阅读更多。
Home

托管 API 库

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.53/5 (3投票s)

2017年1月8日

CPOL

4分钟阅读

viewsIcon

7193

downloadIcon

144

将常见的 API 功能转换为易于使用的功能

托管 API 接口简介

Managed API Interface(或“msw32.dll”)是一个 .NET 动态链接库程序集,其中包含各种托管和非托管代码函数。这些函数大部分都使用了 Windows API,但已被修改为更易于管理的函数。例如,API "SHGetFileInfo" 被翻译为 "GetLargeIcon" 和 "GetSmallIcon"。

背景

我发现使用托管代码有很多事情是无法实现的,例如获取文件或文件夹关联的小图标(16x16)。通常,谷歌搜索会找到大量结果,它们要么使用注册表引用和 ExtractIcon,要么使用更简单的 SHGetFileInfo 方法。我决定将我在应用程序中最常用的 API 调用翻译成更易于使用的函数。

请在您的应用程序中,无论如何都给予 Cobalt Gaming 署名,并且如果您在本库的开发项目中使用它,请务必发送给我一个下载链接(或免费副本 :D)。提前感谢,尽情享用! :-)

下载演示,包含主要功能!

下载库和演示

msw32 是免费软件,但您不得将其声称为自己的作品。

使用代码

该库本身非常易于使用,仅参数名称就足以推断出函数的功能。您必须在您的应用程序顶部添加对“msw32.dll”的引用并插入此代码

Imports msw32.ManagedAPI

文档

ElevateButton() 函数,位于“ManagedAPI”类中

"ElevateButton()" 函数用于为任何按钮(标准样式或 CommandLinkEx)应用 UAC 盾牌。您应将一个 Button 控件传递给 hWnd 参数。当单击按钮执行需要管理员权限的操作时,请使用此函数。

ElevateButton(Button1)

ExtractResIcon() 函数,位于“ManagedAPI”类中

"ExtractResIcon()" 函数用于从 Windows 资源文件(通常是 .exe 或 .dll)中提取图标。最常见的图标资源文件是位于“System32”文件夹中的“imageres.dll”和“shell32.dll”。将资源文件路径作为第一个参数,将 True 作为第二个参数以获取大图标(32x32),将 False 作为第二个参数以获取小图标(16x16)。最后一个参数应该是您希望从中提取图标资源的资源索引。

ExtractResIcon("imageres.dll", True, 0) 'Gets the first icon in imageres.dll

GetLargeIcon() 函数,位于“ManagedAPI”类中

"GetLargeIcon()" 函数用于提取与文件/文件夹或驱动器关联的大图标(32x32)。将要从中提取图标的文件/文件夹/驱动器的路径作为第一个参数传递。

GetLargeIcon("C:\") 'Gets the icon for drive C, typically a hard disk with a Windows logo

GetShellFileInfo() 函数,位于“ManagedAPI”类中

"GetShellFileInfo()" 函数用于检索从传递的参数中获取的 SHFILEINFO 结构。将要从中提取结构的用于文件/文件夹/驱动器的路径作为第一个参数传递。此函数不是很有用,请使用 SHFILEINFO 之上的句柄,例如 "GetSmallIcon()" 和 "GetLargeIcon()"。

使用 SHFILEINFO 结构

GetShellFileInfo("C:\") 'Returns a SHFILEINFO structure containing data regarding drive C

GetSmallIcon() 函数,位于“ManagedAPI”类中

"GetSmallIcon()" 函数用于提取与文件/文件夹或驱动器关联的小图标(16x16)。将要从中提取图标的文件/文件夹/驱动器的路径作为第一个参数传递。

GetSmallIcon("C:\") 'Gets the icon for drive C, typically a hard disk with a Windows logo

IconResourceCount() 函数,位于“ManagedAPI”类中

"IconResourceCount()" 函数用于返回 Windows 资源文件中的图标资源数量。将资源文件路径作为第一个参数传递。

IconResourceCount("shell32.dll") 'Returns the amount of icons within shell32.dll

RegClassDescription() 函数,位于“ManagedAPI”类中

"RegClassDescription()" 函数用于返回与文件类型扩展名关联的描述。将扩展名(包括前面的点)作为第一个参数传递。

RegClassDescription(".txt") 'Returns the description for .txt, typically Text Document

SetExplorerTheme() 函数,位于“ManagedAPI”类中

"SetExplorerTheme()" 函数用于将 Explorer 主题应用于 ListView、TreeView 和 Form 控件。它可以与 StyleTreeView() 和 StyleListView() 函数一起使用(但应在其之前)。将 TreeView 或 ListView 控件作为 hWnd 参数传递。

已将所有主题应用于 ListView 和 TreeView 的示例

SetExplorerTheme(ListView1) 'Applies Explorer theming to ListView1

StyleTreeView() 函数和 StyleListView() 函数,位于“ManagedAPI”类中

使用枚举 ListViewTheme 和 TreeViewTheme

"StyleTreeView()" 函数和 "StyleListView()" 函数用于为任何 ListView 或 TreeView 控件应用额外的视觉样式。ListView 主题是半透明选择框,TreeView 主题是鼠标悬停节点展开器淡入淡出和节点展开自动滚动。

StyleTreeView(TreeView1, TreeViewTheme.Fade) 'Applies the Fade theme to TreeView1

SetHint() 函数,位于“ManagedAPI”类中

"SetHint()" 函数用于为 TextBox 控件应用提示。将 TextBox 作为 hWnd,将字符串作为提示传递。

SetHint(TextBox1, "This is a hint") 'Applies a hint to TextBox1

SetProgressState() 函数,位于“ManagedAPI”类中

使用枚举 ProgressBarState

"SetProgressState()" 函数用于设置 ProgressBar 的状态。状态包括暂停(黄色)、错误(红色)和正常(绿色)。

SetProgressState(ProgressBar1, ProgressBarState.Paused) 'Sets ProgressBar1's state to Pause

CommandLinkEx 类继承自 Button,位于 msw32 命名空间中

命令链接是一种特殊类型的按钮。使用 CommandLinkEx 将命令链接按钮放置在您的窗体上。Text 属性可以更改大/主文本,Misc.Note 属性将更改小底部文本。这些 CommandLinkEx 控件将根据窗体的 BackColor 属性进行更改,并且可以使用 ElevateButton() 函数进行提升。

Windows API 函数(SendMessage、SetWindowTheme、SHGetFileInfo、DestroyIcon、ExtractIconEx)也包含在此库中。SHFILEINFO_REF 类及其内容仅供此库内的其他函数使用,应被忽略且不使用。

历史

2017-01-05 创建了具有基本功能的程序集,2017-01-06 添加了 CommandLinkEx 和 SHGetFileInfo 函数。还删除了 SendUDP()(两个函数),2017-01-07 创建了 CodeProject 文章并记录了此库中的所有函数、枚举和类。

© . All rights reserved.