相比之前的操作系统,Window 7(or Vista)提供了很多新特性,我们在应用实现中可以利用这些特性来提升用户体验。

这些特性主要包括以下几个方面:

  • Shell Enhancements
  • DirectX Technologies
  • Application Restart and Recovery
  • Extended Linguistics Services (ELS)
  • Sensor Platform
  • Aero Glass

这些原生Windows特性在托管应用程序中需要基于COM Interop技术实现,因此微软开发了Windows API Code Pack提供必要的COM Interop代码,用于补充.NET Framework功能集,为托管代码提供针对原生Windows API的操作接口。

在最新版本的.NET Framework设计中,微软在WPF中包含了部分之前在Windows API Code Pack中实现的功能(如Shell相关功能),对于剩余的其他部分则推荐基于原生C/C++语言调用,不再提供官方程序包为托管程序开发提供支持,并取消了Windows API Code Pack项目。

因此,现在我们打开官方链接会看到“The Archive Gallery has been retired.”提示,无法在下载到Windows API Code Pack的代码。但是网上还可以找到第三方的1.1版的备份,如github(注3)。

在这里介绍Windows API Code Pack的前世今生(注2),原因是我需要在托管代码中使用最新的DirectX开发三维的应用程序。

使用托管代码开发三维程序(注1)使用的Wrapper有以下几个选择:

  • Managed Direct3D(微软官方)
  • XNA(微软官方)
  • Windows API Code Pack(DirectX) (微软官方)
  • SlimDx(第三方)
  • SharpDx(第三方)

这些选择中,MDX已经被淘汰掉,XNA在游戏开发方面有一些优势,但同时在新版本D3D支持上也有很多不足之处,而SlimDx和SharpDx为第三方提供的。

Windows API Code Pack(DirectX)相比以上其他选项的优势主要在于以下几个方面:

1/ 依赖项少,使用方便:只需在应用中引用一个1M左右大小的dll;

2/ 支持Dx11:封装目标基于Windows 7,对于需要升级DirectX并利用新特性的应用特别有吸引力;

3/ 稳定、高效:微软官方品质;

引用:

1/ 在.NET中使用DirectX

http://blogs.msdn.com/b/chuckw/archive/2010/12/09/directx-and-net.aspx

2/ windows api code pack v1_1

http://www.cnblogs.com/gnielee/archive/2010/12/29/windows-api-code-pack-v1_1.html

3/下载地址

https://github.com/dbarros/WindowsAPICodePack or 使用nuget

关于Windows® API Code Pack for Microsoft® .NET Framework的更多相关文章

  1. 利用 Windows API Code Pack 修改音乐的 ID3 信息

    朋友由于抠门 SD 卡买小了,结果音乐太多放不下,又不舍得再买新卡,不得已决定重新转码,把音乐码率压低一点,牺牲点音质来换空间(用某些人的话说,反正不是搞音乐的,听不出差别)… 结果千千静听(百度音乐 ...

  2. 适用于 Windows 7 SP1 和 Windows Server 2008 R2 SP1 的 .NET Framework 4.6、4.6.1、4.6.2 和 4.7 以及适用于 Windows Server 2008 SP2 的 .NET Framework 4.6 仅安全更新说明:2017 年 9 月 12 日

    https://support.microsoft.com/zh-cn/help/4040957/description-of-the-security-only-update-for-the-net ...

  3. Windows API Hooking in Python

    catalogue . 相关基础知识 . Deviare API Hook Overview . 使用ctypes调用Windows API . pydbg . winappdbg . dll inj ...

  4. Microsoft Win32 to Microsoft .NET Framework API Map

    Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles   ...

  5. Windows VS Code 配置 C/C++ 开发环境

    准备 Windows [这个相信大家都有 笑: )] VS Code MinGW-w64 C/C++ 安装 MinGw-w64 具体说明细节和安装体验可以在<⑨也懂系列:MinGW-w64安装教 ...

  6. C# Windows API

    API:应用程序接口(API:Application Program Interface)应用程序接口(API:application programming interface)是一组定义.程序及协 ...

  7. 初识【Windows API】--文本去重

    最近学习操作系统中,老师布置了一个作业,运用系统调用函数删除文件夹下两个重复文本类文件,Linux玩不动,于是就只能在Windows下进行了. 看了一下介绍Windows API的博客: 点击打开 基 ...

  8. C#调用windows API的一些方法

    使用C#调用windows API(从其它地方总结来的,以备查询) C#调用windows API也可以叫做C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2. ...

  9. 在VBA中使用Windows API

    VBA是一种强大的编程语言,可用于自定义Microsoft Office解决方案.通过使用VBA处理一个或多个Office应用程序对象模型,可以容易地修改Office应用程序的功能或者能够使两个或多个 ...

随机推荐

  1. SRM 449 div1 (practice)

    250pt: 暴力枚举所有的可能的情况就好了,求面积的时候我是用梯形的面积减去两个三角形的面积.. 550pt: 题意:给你一个蜂窝形状的特殊图形,有一些格子已经被占据了,问你将剩下的格子用1*2的砖 ...

  2. 关于pushState

    window.pushState({}, "title", "/index.html");---------------->改变URL的值,但是并不刷新 ...

  3. [Angular2 Router] Use Params from Angular 2 Routes Inside of Components

    Angular 2’s ActivatedRoute allows you to get the details of the current route into your components. ...

  4. Android 开发中使用Intent传递数据的方法

    Activity之间通过Intent传递值,支持基本数据类型和String对象及 它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.shor ...

  5. handler looper 和 线程

     Handler的概念: 顾名思义,handler在英语中是“操作着,处理者的意思”,而官方的文档给出的概念是,handler允许你发送或者处理Message对象或者Runable对象,这两个对象都是 ...

  6. systemtap-与 oracle 转

    https://baoz.net/using-systemtap/ http://nanxiao.me/category/%E6%8A%80%E6%9C%AF/systemtap-%E7%AC%94% ...

  7. QMap与QHash

    关联容器可以保存任意多个具有相同类型的项,且它们由一个键索引.Qt提供两个主要的关联容器类:QMap<K, T>和QHash<K, T>. QMap<K, T>是一 ...

  8. 关于修改Android手机的音量

    首先,必须要获取系统的声音服务权限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS&qu ...

  9. Jquery 扩展方法

    $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc() 那么你可以这样子:$("#div").abc(); 通常使 ...

  10. Code Jam 2008 APAC local onsites Problem C. Millionaire —— 概率DP

    题意: 你有X元钱,进行M轮赌博游戏.每一轮可以将所持的任意一部分钱作为赌注(赌注为0元表示这一轮不押),赌注可以是小数的,不是一定要整数.每一轮 赢的概率为P,赢了赌注翻倍,输了赌注就没了.如果你最 ...