xuehang吧 关注:9贴子:726
  • 9回复贴,共1

【API教程】如何学习一个API的使用?

只看楼主收藏回复

本教程主要建立在一定的计算机基础上,新手可以多多学习一些基础知识


IP属地:江西来自Android客户端1楼2016-02-07 14:41回复
    水平不算高,如果有错请指出!
    By Defanive


    IP属地:江西来自Android客户端3楼2016-02-07 14:42
    回复
      新手需具备的知识:
      1、VB的基本语法
      2、API、结构体、常数
      3、VB的数据类型,C语言的简单数据类型
      4、API Viewer 2004(或其他同类软件)的基本使用
      5、一定的英文阅读能力


      IP属地:江西来自Android客户端4楼2016-02-07 14:43
      回复
        那么要调用一个陌生的API,基本上遵循以下步骤
        1、找到相关API、结构体、常数的声明
        2、到MSDN阅读这个API的网页指南
        3、按照MSDN写代码


        IP属地:江西来自Android客户端5楼2016-02-07 14:43
        回复
          好吧看起来很简单,不过这样说了也是白说,实战一下吧
          这次实战的目标是:GetOpenFileName


          IP属地:江西来自Android客户端6楼2016-02-07 14:44
          回复
            首先介绍一下这个API吧,这个API会显示一个打开对话框,给用户选择一个文件打开
            这个跟CommonDialog里面的打开对话框是一样的(那干嘛不直接用那个控件?教程用来做演示嘛,而且用API也有他的好处)


            IP属地:江西来自Android客户端7楼2016-02-07 14:45
            回复
              第一步:找到声明
              找声明主要有两种方法
              第一种是通过软件找,例如API Viewer 2004,这类软件内置有绝大部分常用的声明,直接复制即可,方便快捷
              第二种是去MSDN找到API的页面,然后复制声明。MSDN是微软的网站,声明肯定是准确的,但是对于VB开发者的劣势是,绝大部分声明都是按照C语言的格式的(至今没见过一个API的页面有VB声明),所以如果不懂C语言的话要转换成VB的声明难度就大了
              还有其他方法,例如dump dll文件之类的
              本文主要讨论第一种方法,使用的软件是API Viewer 2004,其他同类软件操作大同小异


              IP属地:江西来自Android客户端8楼2016-02-08 13:38
              回复
                打开API Viewer 2004,打开Win32api.apv文件,然后选择Declarations一栏,然后选择Subs and Functions,在文本框输入GetOpenFileName,然后就找到这个API的声明了,复制下来,扔进VB的代码里面


                IP属地:江西来自Android客户端9楼2016-02-08 13:39
                回复
                  好了,现在来仔细看一下这个声明:
                  Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (ByRef pOpenfilename As OPENFILENAME) As Long
                  可以看到这里有一个陌生的参数类型OPENFILENAME,这明显不是VB的基本数据类型,所以我们需要这个OPENFILENAME的声明


                  IP属地:江西来自Android客户端10楼2016-02-08 13:39
                  回复
                    于是回到API Viewer 2004,选择Types一栏,在文本框输入OPENFILENAME,找到声明了,复制下来,扔到VB代码里面
                    Private Type OPENFILENAME
                    lStructSize As Long
                    hwndOwner As Long
                    hInstance As Long
                    lpstrFilter As String
                    lpstrCustomFilter As String
                    nMaxCustFilter As Long
                    nFilterIndex As Long
                    lpstrFile As String
                    nMaxFile As Long
                    lpstrFileTitle As String
                    nMaxFileTitle As Long
                    lpstrInitialDir As String
                    lpstrTitle As String
                    flags As Long
                    nFileOffset As Integer
                    nFileExtension As Integer
                    lpstrDefExt As String
                    lCustData As Long
                    lpfnHook As Long
                    lpTemplateName As String
                    End Type
                    继续仔细看这个结构体的声明,可以发现成员都是VB的基本数据类型,说明不需要在找其他声明了
                    好吧找声明这里就搞定了


                    IP属地:江西来自Android客户端11楼2016-02-08 13:41
                    回复