相比之前的操作系统,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. 怎样对ListView的项进行排序

    当您使用资源浏览器查看文件时,您能够随心所欲的按名称.大小.类型及改动日期不同的列对文件进行大小排序..Net提供的ListView组件没有直接提供这样的功能,但要实现并不难.   ListView. ...

  2. 试读《基于MVC的JavaScript Web富应用开发》

    前两年做jsp开发时,用了不少JavaScript(JS)和Ajax, 最近的项目一直在使用Flex做前台,虽然也有类似的ActionScript实现JS的功能,但没想到的是,短短几年JS发展如此迅速 ...

  3. MyEclipse7.0破解下载

    MyEclipse7.0 下载地址:downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse_7.0M1_E3. ...

  4. NSNotificationCenter通知中心

    概述 NSNotificationCenter通知中心,通常用于一对一或者一对多的消息传递,即当一个地方改变时,要求改变其他的一些地方,例如当网络请求回来了新的数据,需要刷新本地信息和本地内存里面的界 ...

  5. centos复制到另外一台电脑连不上网

    http://snow-berry.iteye.com/blog/1991754 从一台电脑virtual box克隆出来的centos.vdi复制到另外一台电脑,找不到网卡,提示Device eth ...

  6. 《嵌入式Linux基础教程学习笔记一》

    常用书目下载地址:http://www.cnblogs.com/pengdonglin137/p/3688029.html 第二章 1.进程上下文和中断上下文(Page20) 当应用程序执行系统调用, ...

  7. docker 中运行 redis 服务

    先使用 dockerfile 创建一个 redis 容器 FROM ubuntu:latest RUN apt-get update RUN apt-get -y install redis-serv ...

  8. H - Frequent values

    Problem F: Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasi ...

  9. G - Not so Mobile

    G - Not so Mobile Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu     Des ...

  10. Java SE ---类,方法,对象等

    1,面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism)     2,如何定义类?            修饰符 cla ...