Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何了解Win32 API?_C#_Windows_Winapi - Fatal编程技术网

C# 如何了解Win32 API?

C# 如何了解Win32 API?,c#,windows,winapi,C#,Windows,Winapi,我想学习如何使用Win32 API,因为最近我有很多任务需要完成,这些任务需要使用user32.dll中的函数,所以我正在尝试学习,我在谷歌上搜索了一下,但问题是:每一个关于它的教程都会告诉你如何做某件事。比如通过Win32 API显示MessageBox,但实际上您无法学习Win32框架 那么你到底是如何学习的呢?你怎么知道所有的功能?使用托管库非常容易,特别是使用提供IntelliSense、对象浏览器等的Visual Studio。但是Win32 API太凌乱了(至少从C#开发者的角度来看

我想学习如何使用Win32 API,因为最近我有很多任务需要完成,这些任务需要使用
user32.dll
中的函数,所以我正在尝试学习,我在谷歌上搜索了一下,但问题是:每一个关于它的教程都会告诉你如何做某件事。比如通过Win32 API显示
MessageBox
,但实际上您无法学习Win32框架

那么你到底是如何学习的呢?你怎么知道所有的功能?使用托管库非常容易,特别是使用提供IntelliSense、对象浏览器等的Visual Studio。但是Win32 API太凌乱了(至少从C#开发者的角度来看)

到目前为止,我一直在使用它,只是在谷歌上搜索一个任务,看到它可以用Win32 API完成(我不知道),然后复制函数并使用它(这对我来说很可怕,我觉得我失去了很多“能力”)

那么,我该如何学习呢

说清楚:我对书不感兴趣。虽然听起来很糟糕,但我需要这些知识来完成一个项目,我只是没有时间去投资一本书。尽管如此,我还是得到了答案。

谢谢大家。

首先,Win32是一组子系统。你可能不可能轻松地把它们全部学会。你只需要优先考虑

但是,要想说出你想学的东西,你可能需要一个大局。我相信接近Win32的最好方法是通过Charles Petzold的“编程窗口”。它非常清晰易懂。有很多例子你可以自己挑选和实验


在您学习了基本知识之后,我推荐Mark Russinovich的“Microsoft Windows内部构件”。它相当高级,但可以让您了解Windows core中的内容。

Win32 API-帮助文档和示例应在Windows SDK下载中提供。

从MSDN中可以找到WinAPI列表: 以下是Windows应用程序编程接口(API)的参考内容列表。

您可以通过VisualBasicWinAPI函数学习一些东西。示例非常容易理解和理解。然后你可以把代码翻译成C

55个类别中有598个Visual Basic Windows API函数
我个人认为你应该从

这将为您提供有关在c#中使用pinvoke的WINAPI所需的大部分基本知识。我也有MSDN提供的WINAPI函数的脱机版本,但我不记得从哪里下载的

最后,了解一些基本的易于理解的WINAPI代码,这是一个很好的例子

编辑:您可以下载。

也可以查看以下内容:

试图让您尽可能快速、清晰地开始使用Win32 API进行开发

我经常觉得这比msdn好。要真正理解pinvoke的核心,你必须先学习C语言。Pinvoke声明通常有意更改stock SDK定义中的声明,以使函数更易于使用。特别是采用PVOID或LPRAM的函数,如无处不在的SendMessage(),可以通过改变参数类型更好地声明。最好的求助地点是这里。