文档库 最新最全的文档下载
当前位置:文档库 › 针对API初学者的教程

针对API初学者的教程

针对API初学者的教程
针对API初学者的教程

针对API初学者的教程第一篇

文章来源:vb大世界

什么是API?

API(Advanced Programmers Interface,高级程序员接口)(注:API实际是指Application Programming Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制Windows的各个部件(从桌面的外观到位一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么.

这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法. VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法. 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数.

同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click).

API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...).

API 声明

正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer.

要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api3 2.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法.

你将会遇到一些问题:

假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如Privat e Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用.

在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行.

你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明.

消息(Messages)

好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么.消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体.

所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数. hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)

但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样?请先别恼火,让我告诉你.

小偷其实是Visual Basic.但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event).

这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip).

现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换.你可能会问--我难道不能自己接收消息吗?答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)

需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(Se ndMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数.

针对API初学者的教程第二篇

文章来源:vb大世界

Windows的一些特别之处

这个主题是要告诉你Windows 的一些与在VB中的不同的细节

Windows通过句柄(Handle)识别每个窗体,控件,菜单,菜单项或其他任何你能想得到的东西.当你的程序运行时,它所包含的每个部件都有一个唯一确定的句柄用来同其他的部件相区别.例如,某个按钮得句柄就与其他部件不同,当你想要通过API来执行有关该按钮的某种操作时就必须使用这个句柄.从哪儿得到它呢?VB 为每个拥有Windows句柄的控件都提供了Hwnd属性来表示其句柄.

Windows 使用像素(Pixel)而不是缇(Twip).因此,把涉及API函数调用的控件的ScaleMode属性设为3--(Pixel)是个不错的主意,这样你可以通过ScaleXXX属性得到它们的国际单位值.尽管这样,你可能有时仍需要进行从Twip到Pixel的转换(反之亦然),你可以通过Screen对象的TwipsPerPixelX和TwipsPerPixelY来实现.举例如下:

PixelXValue=TwipXValue\Screen.TwipsPerPixelX

PixelYValue=TwipYValue\Screen.TwipsPerPixelY

TwipXValue=PixelXValue*Screen.TwipsPerPixelX

TwipYValue=PixelYValue*Screen.TwipsPerPixelY

我并没有在实际中见到过TwipsPerPixelX 和TwipsPerPixelY 的值有什么不同,但你最好是把它们区别开来而不是混用,这至少是一种好的程序设计风格.另外需要注意的是,这里用的是" \ "(整除) 而不是" / " ,这是因为像素值必须是整数.

另外需要提到的是,Windows函数中用到了不同的坐标系统,因此需要注意.

最后要注意的是,一旦你使用了API 函数,VB就可能不再可靠了---API调用中一个简单的语法错误就会导致VB 崩溃!(请经常保存您的工程).VB 并不能识别API调用中的错误,因此一旦你的程序出现异常,要先检查API调用---是否缺少ByVal,或者是错误的类型,参数等等.

从哪里得到有关函数的说明?

这个主题不会告诉你如何通过API函数改变按钮文字或如何快速查找一个文件.这不是一个API函数文档. 为了得到有关函数的说明,你需要SDK帮助或微软的SDK文档(至少有40M---我怎么可能放在这里?).这些S DK帮助通常都包含在Borland Dephli 3.0 开发包或者MS Visual C++中.到网上去或找您的朋友要一个,版本越新越好

注意Win3.x 的SDK 帮助对你并没有用,因为很多函数已经过于陈旧甚至废弃不用,尽管他们中的大多数由于与Windows95兼容而依然存在.

API参数类型

如果你已经有了一个SDK帮助,你肯定主意到了函数的返回之或参数有很多奇怪的类型如VOID,LPCSTR, 和DWORD.如果你对C语言比较熟悉的话,那你肯定明白它们的意思.对于其他不熟悉C语言的人,这里有一张摘自VB Books Online(标题是:C语言声明到Visual Basic的转换)

注释:

你应该注意到了BOOL类型(Boolean)求出的值为Long而不是Boolean.因此0表示"假"(False),其他任何值表示"真"(True).

HWND,HDC,HMENU,etc.---etc.指其他所有与于前面所述相似的类型.它们都以"H"开头来表示不同对象的句柄.举例来说,HBITMAP表示一副位图的句柄,HBRUSH标是一个刷子的句柄等等.它们均为Long而且要按值传递(ByVal).

同样要注意LPVOID被声明为Any型变量,本文将会有独立的一个主题用来论述Any类型.

有些类型以"LP"开头.LP 是Long Pointer的缩写.因此LPWORD实际表示数据所存的内存地址.不过,你并没有必要调用某个函数来获取这个地址.当你按引用(ByRef)传递参数时,你实际上传递的就是它的地址.在这里你只需记住:如果某个参数的类型以"LP"开头,应该按引用(ByRef)传递.顺便说一句,LPARAM 与Lparam 很相似但不是Lparam,Lparam不是一个指针,在这里你必须传递它的真实值,因此要按值(ByVal)传递.

NULL也是一种奇怪的类型.你可以从VB 中了解到有关它的描述,这里我不去讨论它.按你需要的形式传递它吧,在大多数情况下,可以用ByVal 0& 或vbNullString.

最后,VOID是用来指那些没有返回值的函数的.API中没有SUBs,这就是它们的标志.只要记住:如果一个函数被声明为VOID ,你必须在VB 中把它声明为SUB.

针对API初学者的教程第三篇

文章来源:vb大世界

Any

有些消息的参数声明为Any.这表示该参数是一种可变的类型(你可以以整型,字符串,用户自定义或其他的类型来传递).

这有一个这样的例子:

Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as Any) as Long

lParam 声明为Any并按引用(ByRef)传递.

这里是在这个函数中如果lParam是不同类型的值时应遵循的规则:

如果该值是传递形式

numeric ByVal(as Long,or as Any)

Null ByVal(as Long,or as Any)

String ByRef(as String,or as Any)

Type ByRef(as Any)

array of Type ByRef(as Any)

如果你的函数声明同上面的一个而且你想传递一个Long型数,你应该这样写:

Call SendMessage(Me.Hwnd,WM_XXXX,0&,ByVal LongValue)

注意尽管头三个参数也是数值,但它们前边并没有ByVal.这是因为在函数声明中它们已经被声明为按值传递(ByVal).第四个参数,由于是按引用传递(ByRef)(VB并不知道你要传递参数的类型),因此你必须加上ByVa l 你可以使用别名技术来传递不同类型的参数:

Public Declare Function SendMessageLng Lib "User32" Alias "SendMessageA"(ByVal Hwnd as Long, By Val wMsg as Long, ByVal wParam as Long, ByVal lParam as Long) as Long

或:

Public Declare Function SendMessageStr Lib "User32" Alias "SendMessageA"(ByVal Hwnd as Long, ByV al wMsg as Long, ByVal wParam as Long, lParam as String) as Long

注意API参数类型本身是不会改变的.例子中的第四个参数总是一个4字节的长型数.当你按值(ByVal)传递一个Long或Null时,该4字节长的数值就直接传递给函数.如果你传递一个String或其他的什么,你是按引用(ByRef)传递,VB传递的实际上是变量的地址,也是4个字节.

参数传递

你已经知道如何传递参数了,只需把他放到调用的函数中即刻.然而,当你使用API函数时,在传递参数是有一些你应该注意的细节. ByVal还是ByRef. 通常情况下,你不用为此担心,VB的API浏览器已经为你做好了一切,只需你输入数值它就会照所声明的方式传递.总的来说,ByVal是把实际的数值传递给函数,而ByRef是把地址传给函数.唯一的麻烦就是Any 类型. 把字符串传递给API函数也并不难.API函数需要的是字符串首字符的地址,然后读取该地址直到遇到一个Null字符.听起来很糟糕,但只是VB处理字符串的实际方法.你唯一要记住的是一定要按引用传递(ByRef)字符串当你想得到所需的函数返回值信息时,情况有稍微的一点不同.

这里是GetComputerName函数的声明:

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA"(ByVal lpBuffer As String, nSize As Long) As Long

第一个参数是一个指向字符串的远程指针,第二个参数是字符串的长度.

如果你只是简单的声明一个字符串类型的变量并把它传递给函数,就会出现错误.因此,你首先需要初始化字符串.这里是如何得到计算机名字的例子: Dim Buffer As String

Buffer = Space(255)

Ret& = GetComputerName(Buffer, Len(Buffer))

if Ret& > 0 then CompName$ = Left(Buffer, Ret&)

在这里,待传递的字符串被初始化为有255个空格的字符串.我们把它传递给函数同时还有它的长度.如果出错则返回值为0.

CompName中将保存计算机名. 有些函数也需要传递数组,这里是一个例子:

Declare Function SetSysColors Lib "user32" Alias "SetSysColors" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long

最后两个参数是Long型数组.为了传递数组,你只需传递它的第一个元素.下面是示例代码:

Const COLOR_ACTIVECAPTION = 2

Const COLOR_INACTIVECAPTION = 3

Const COLOR_CAPTIONTEXT = 9

Const COLOR_INACTIVECAPTIONTEXT = 19

Dim SysColor(3) As Long

Dim ColorValues(3) As Long

Dim Ret& SysColor(0) = COLOR_ACTIVECAPTION

SysColor(1) = COLOR_INACTIVECAPTION

SysColor(2) = COLOR_CAPTIONTEXT

SysColor(3) = COLOR_INACTIVECAPTIONTEXT

ColorValues(0) = RGB(58, 158, 58) '深绿

ColorValues(1) = RGB(93, 193, 93) '浅绿

ColorValues(2) = 0 '黑色

ColorValues(3) = RGB(126, 126, 126) '灰色

Ret& = SetSysColors(4&, SysColor(0), ColorValues(0))

该程序将改变所有活动和非活动窗口的标题栏背景和文本的颜色.

针对API编程初学者的教程第四篇

文章来源:vb大世界

回调(CallBacks)

所谓回调,就是你自己定义一个函数,并告诉Windows何时为何调用.你可以写一个有特定数量和类型参数的函数,然后告诉Windows何时调用,并传递给它所需的参数.Windows就会调用你定义的函数,处理参数,并给你返回值.

回调的一个典型应用是从Windows获得连续的数据流.这里是一个需要回调的函数的声明:

Declare Function EnumWindows Lib "User32"ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

第一个参数是你的回调函数的地址,第二个参数是你想传递的的任意数值.该值将被传递到你的函数,于是你就知道了它要调用什么.

VB 5.0已经提供了一个很有用的操作符AddressOf ,可以得到一个函数的地址.当你调用一个函数时它只能用在参数的前面,下面这种用法是错误的并且会导致出错:

FuncP = AddressOf MyFunction

因此你必须这样调用EnumWindows函数:

Success& = EnumWindows(AddressOf cbFunc, 58&)

你必须也要自己写回调函数.问题是有很多不同类别的回调并且有各种各样的参数,有关这些参数的描述可以在SDK帮助或MS SDK文档中找到.这里是一个回调的声明:

Function cbFunc (ByVal Hwnd, ByVal lParam) as Long

这里是一个回调的例子:

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"(ByVal hwnd As Long,B yVal lpString As String,ByVal cch As Long) As Long

Success& = EnumWindows(AddressOf cbFunc, 58&)

Function cbFunc (ByVal Hwnd, ByVal lParam) as Long

If lParam = 58 then 'enum windows

Str$ = Space(255)

Ret& = GetWindowText(Str$, Len(Str$))

Debug.Print Left(Str$, Ret&)

End If

End Function

这个例子将列出窗口的标题,(不包含子窗体)

窗口程序

Windows并不知道事件. 这些是VB特有的隐藏Windows获取你的窗口发生事件的真正方法的一种方式.V B很像是一个将Windows语言翻译成VB语言的解释器.

但是事实并非如此,你很快就会遇到.设想你想知道用户何时加亮了菜单选项(不是点击,只是加亮即选择了)V B并不提供这种事件,但你可能见到其他的程序,但你浏览它的菜单时状态栏会出现相应的文字.如果他们能,你为何不能?

OK,这里是大致的真实情况.每个窗口都有一个特殊的程序叫做窗口程序.它实际上是一个回调函数.该函数将在你的窗口发生事件的任何时间发送消息.这样当用户加亮一个菜单项时就会发送一条消息(WM_COMM AND).

那为什么我看不到这条消息呢?这是因为是VB创建窗口程序而不是你.当Windows发送消息时,该程序将为之分派特定的事件,并将其参数转换为比较容易用的事件的参数.但是在有些情况下,它会忽略有些消息而不能收到真实的输入.如果你真的想得到这些消息,你必须对你的窗体进行子类处理,我们将在另外一个主题中谈到.

这里是一个回调窗口程序的声明:

Function WindowProc(ByVal Hwnd As Long, ByVal wMsg As Long,ByVal wParam As Long, ByVal lPa ram As Long) As Long

第一个参数指定窗口的句柄,第二个参数是消息的标识符(如WM_COMMAND或WM_MOUSEMOVE),wPa ram和lParam时两个32位的数值,它们的意义依赖于消息的类型.

针对API编程初学者的教程第五篇

文章来源:vb大世界

子类处理

当你一最大限度利用了VB所给你的并且还想知道更多的东西,或只是想更多地了解你自己的窗口,你将会发现子类处理的优势.

子类处理是指用一个新的窗口函数来取代当前活动窗口函数.这个用户自定义函数能处理任何需要的消息,并能调用原来的窗口函数,它将在原来的窗口函数之前收到各种消息.但原来的那个窗口处理函数依然存在,并没有消失.如果你不想处理某条消息,你应该让原来的窗口函数去处理它.

子类处理是通过调用SetWindowLong函数实现的,该函数将改变指定窗口的特殊属性.下面是它的声明: Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"(ByVal hwnd As Long, ByVal n Index As Long,ByVal dwNewLong As Long) As Long

第一个参数代表要进行子类处理的窗口,第二个参数应该是GWL_WNDPROC(-4),第三个参数是新的窗口函数的地址.参见回调和窗口函数一节.

此函数将在窗口取得焦点,发生事件,或其他情况下(如其他进程改变了系统的某些参数)被随时调用.

如果发生错误SetWindowLong函数将返回0,否则将返回原来的窗口函数的地址.这个地址特别重要,你应该把它保存在一个变量中或其他地方.当你不处理某些消息时(实际上,你可能只处理不到1%的消息,其他的都将由原窗口函数处理),调用原来的窗口函数就需要该地址.

调用原窗口函数将由CallWindowProc来完成.这里是它的声明:

Declare Function CallWindowProc Lib "user32" Alias"CallWindowProcA"(ByVal lpPrevWndFunc As Long, ByVal hWnd As Long,ByVal Msg As Long,ByVal wParam As Long, ByVal lParam As Long) As Long 第一个参数是原窗口函数的地址,其他的同你接收到的四个参数一样.你可以改变其中的值来控制对消息的处理.例如,当你收到了一条WM_MOUSEMOVE消息时,你从lParam中得到鼠标所在位置的坐标并将其改成了其他的坐标.那么原窗口函数就会认为鼠标位于其他的位置从而做出一些有趣的事如显示其他控件的Too ltip.

你指定的返回值也是有意义的,它依赖于发送的消息.

在结束你的程序时将控制权交回给原窗口函数是很重要的,通常在Form_Unload中完成如下:

Ret& = SetWindowLong(Me.Hwnd, GWL_WNDPROC, oldWndProcAddress)

如果你在VB中启动程序时忘掉了这一行,结果将是VB崩溃并会丢失尚未保存的数据.千万要小心.

这里是子类处理的一个简单示例:

Dim oldWndProc As Long

Private Sub Form_Load()

oldWndProc = SetWindowLong(Me.Hwnd, GWL_WNDPROC, AddressOf MyWndProc)

End Sub

Private Sub Form_Unload()

Ret& = SetWindowLong(Me.Hwnd, GWL_WNDPROC, oldWndProc)

End Sub

Function MyWndProc(ByVal Hwnd As Long,ByVal wMsg as Long,ByVal wParam As Long,ByVal lPara m As Long)

Debug.Print wMsg & " " & wParam & " " & lParam

Ret& = CallWindowProc(oldWndProc, Hwnd, wMsg, wParam, lParam)

End Function

处理参数

有时函数并不以你所需的方式返回信息.一个典型的例子是将两个代表鼠标位置的整形(2 byte)数合并为一个4 Byte的数.还有一个例子是判断一个数的某位是否为1.你还可能得到一个代表一个结构地址的Long型数.

合并和分离一个数并不需要过多的描述.你能在下面的网站(https://www.wendangku.net/doc/c110868931.html,/SiliconValley/Lab/1632/)上找到APIMacro.bas,它包含了你需要的多种函数.

可以用一下方法检查一个数的第N位是否为1:

If Value and (2^N) then ...

置1

Value = Value Or 2^N

置0

Value = Value And Not 2^N

如果你想设定或取得预先知道的某位的信息,用1024代替2^10要快的多.因为这样VB无需自己进行计算(V B憎恨"^" ?).

如果你接收到一个类型的指针,你要做的工作将稍多一点.你可以使用CopyMem函数来取得信息.下面是它的声明:

Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, By Val ByteLen As Long)

如果你接收到了一个指向RECT 类型的指针并存在Long型变量Addr 中,可以这样处理:

Dim Info As Rect

Call CopyMem(Info, ByVal Addr, len(Info))

注意ByVal关键字.现在,如果你想把信息写回,使用:

Call CopyMem(ByVal Addr, Info, Len(Info))

结束语

我希望这份教程能帮助你理解如何控制API函数的威力和如何正确使用它们.但是要小心!就像火,如果你让它失去控制,你就会玩蛋.当然,不要忘了VB是进行简单.安全程序设计的语言,而API函数则正好相反.如果你想得到更多的控制功能,最好转移到VC++ 或者Delphi.(这一点,洞主不敢苟同).

祝你在API探险中好运!

什么是SDK

什么是SDK 其实很简单,SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。 这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。 呵呵,其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。 首先要接触的是“API”,也就是 Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。其实早在 DOS 时代就有 API 的概念,只不过那个时候的API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将 AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在Windows 中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在Windows 中你所要做的就是调用GetVersionEx() 函数。

可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。 DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。 DLL,即 Dynamic Link Library(动态链接库)。我们经常会看到一些 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,我们必须要有 API 函数的声明(.H)和其导入库(.LIB),函数的原型声明不难理解,那么导入库又是做什么用的呢?我们暂时先这样理解:导入库是为了在DLL 中找到 API 的入口点而使用的。 所以,为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。到此为止,我们才真正的解释清楚了 SDK 的含义。 由于 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架

sdk编程说明

一、整体说明: 1、使用环境及编程环境: 本SDK以DLL的形式提供给用户调用,适用于Windows xp、Windows 2003、Windows XP、Windows7等Windows 32位开发环境;本SDK库和DEMO均在Microsoft Visual studio 2005下编译开发; 2、主要功能说明: a. 处理器配置信息读取; b. 信号窗口的控制,如打开、关闭、移动、改变大小等; c. 信号属性的调节,如视频图像亮度、对比度等; 二、文件目录说明: 1. 头文件目录include: include\api.h //主要包含宏定义、数据结构定义和函数定义 2. 库文件目录lib: lib\empeasy.lib //sdk的导入库 3. 可执行文件目录bin: bin\empeasy.dll //sdk的动态链接库 bin\sample1.exe //例子1的可执行文件 4. 文档目录doc: doc\编程说明.pdf //本文档 5. 例子目录sample: sample\sample1 //例子1,示例如何使用本sdk 三、宏定义说明: #define NAME_LEN 64 //名称长度 #define HOST_NAME_LEN NAME_LEN //主机名称长度 #define PARAM_FILE_NAME_LEN NAME_LEN //参数文件名称长度 #define CMD_NAME_LEN 256 //命令行长度 #define MAX_PARAM_FILE 8 //信号参数保存成文件的最大数 #define TITLE_LEN 64 #define TITLE_LENV2 256 #define MAX_VIDEO_INPUT_MODE 8 //视频信号模式的最大数 #define MAX_RGB_INPUT_MODE 36 //RGB信号模式的最大数 #define MODE_NAME_LEN 32 //模式名称的最大长度 备注:视频信号模式主要有:如NTSC、PAL、SECAM等;RGB信号模式主要有:800x600@60Hz、1024x768@60Hz等。 信号类型定义:

Android SDK目录结构和工具介绍

由麦可网整理,转载请注明出处 Android SDK目录结构和工具介绍 Android SDK目录下有很多文件夹,主要都是干什么的呢? 1. add-ons 这里面保存着附加库,比如google Maps,当然你如果安装了OPhone SDK,这里也会有一些类库在里面。 2. docs 这里面是Android SDK API参考文档,所有的API都可以在这里查到。 3. market_licensing 作为Android Market版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。 4. platforms 是每个平台的SDK真正的文件,里面会根据API Level划分的SDK版本,这里就以Android 2.2来说,进入后有一个android-8的文件夹,android-8进入后是Android 2.2 SDK 的主要文件,其中ant为ant编译脚本,data保存着一些系统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。 5.platform-tools 保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android 2.3开始这些工具被划分为通用了。 6. samples 是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander 都是不错的例子,对于Android主题开发Home则是android m5时代的主题设计原理。 7. tools 作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏幕截图和文件管理器,而draw9patch则是绘制android 平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库,而monkeyrunner 则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是android模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。 8. usb_driver 顾名思义,保存着android平台google官方机型的驱动如nexus one、nexus s,同时也有一些老机型驱动的支持,比如说htc dream、htc magic和Motorola的droid。

Android QQ SDK API

【QQ登录】Android_SDK使用说明 QQ登录Android SDK以Jar包形式提供,封装了QQ登录的登录授权以及大部分OpenAPI,应用只需要修改少量代码,不需要理解验证授权流程,即可快速实现QQ登录功能。 Android平台上的应用,请在申请appid,appkey后,使用QQ互联提供的Android SDK。 注意: 1. QQ登录Android SDK支持的Android版本: 2.1及以上版本。 2. 支持的第三方浏览器:Android系统自带浏览器,Firefox,Opera Mobile。 3. 支持web view与浏览器两种方式,即支持跳转到手机浏览器上进行QQ登录与验证流程,开发者可在SDK包中选择浏览器模式即可,但浏览器方式用户跳跃较大,不建议使用。 4. 仅适用于移动应用,即基于【QQ登录】使用Implicit_Grant方式获取Access_Token接入的应用。 1. Android SDK 下载 请到【QQ登录】SDK下载页面下载QQ登录Android SDK。 2. 创建工程及引用SDK源码文件 以下以eclipse为开发的IDE进行范例说明: 1. 创建一个工程,并把tencent_openapi.jar 放到lib中,如下图所示:

2. 将tencent_openapi.jar加入编译路径中。 具体的操作步骤为:选中tencent_openapi.jar ,右键菜单中选择Build Path,选择Add to Build Path,如下图所示:

看到类似以下的样子,说明已经成功将jar包加入build path : 3. 修改必要的代码 3.1 使用SDK提供的按钮样式 SDK提供了大中小3种登录按钮,开发者可以在代码中设置按钮样式。 示例代码如下(在SDK包中的位置:\TAuthDemo\src\com\tencent\tauthdemo\TAuthDemoActivity.java )ImageViewloginBtn = (ImageView) findViewById(R.id.login); //大按钮 loginBtn.setImageDrawable(TencentOpenRes.getBigLoginBtn(getAssets())); //中按钮 //loginBtn.setImageDrawable(TencentOpenRes.getLoginBtn(getAssets())); //小按钮 //loginBtn.setImageDrawable(TencentOpenRes.getSmallLoginBtn(getAssets())); 3.2 获取access token (1)获取Access token 需要访问网络,所以需要修改AndroidManifest.xml,加入以下代码:

需求和SDK说明

音视频采集播放模块需求 一、功能说明 1、音视频的实时采集本地播放 2、实时编码后传输给远程主机实时解码播放(网络传输不需要实现,只须提供数据buffer) 3、实时本地录像,并存盘 4、视频文件播放(类似简单播放器功能) 5、实时添加字幕(类似于电影字幕,不能挡住有效图像) 6.、视频画面大小320*240(字幕以外尺寸) 7、音频和视频可实时独立采集和播放 8、视频编码为MP4 9、音频编码为g711 二、Linux音视频采集API说明 视频见文档sprs640.pdf 和v412.pdf(v412.pdf 第251页有视频采集的例子); 系统支持信息请看sprs640.pdf 中V ideo Capture Driver项3.6.Supported V4L2 ioctls; 音频见文档audio 三、DSP音视频采集SDK 下载文件:dvsdk_3_01_00_10_Setup.bin SDK下载地址: https://www.wendangku.net/doc/c110868931.html,/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_3_00/latest/in dex_FDS.html 安装方法:https://www.wendangku.net/doc/c110868931.html,/index.php/GSG:_OMAP35x_DVEVM_Software_Setup 播放和录制示例代码: https://www.wendangku.net/doc/c110868931.html,/index.php/UserGuideAudioDriver_PSP_03.00.00.05#Sample_Applic ations 四、应用平台 1、采集端为嵌入式Linux系统,ARM架构,同时本地播放,DSP芯片处理音视频 2、远端播放为Linux或Windows系统PC机

TOP-SDK使用说明

自动化SDK使用指南 目录 一、新SDK的介绍 (1) 二、为什么要使用最新的SDK (1) 三、如何使用最新的SDK (2) 1、新SDK的目录结构 (2) 2、SDK命名规则 (3) 3、SDK使用代码示例(java版,php版,.net版) (3) 4、高级功能 (6) 四、下载SDK的地址 (6) 一、新SDK的介绍 淘宝开放平台最新的SDK是由程序通过API的结构、业务数据等自动化生成的代码包,目前支持主流的三种语言版本(java、php、.net)。是淘宝开放平台为了减少广大开发者使用API的开发成本而提供的一种开发工具包,其中包含了已经开放的API的请求、加密、返回解析等一些必要的功能。 二、为什么要使用最新的SDK 最新的自动化SDK区别之前的版本(前期为人工手写的代码),有着以

下多种优势: 1、SDK代码全自动化生成,完全和对外公开的API文档一致 2、自动化生成,避免人工编写产生的Bug 3、在每次API升级发布后,会及时自动升级各语言SDK版本,并向下保持 兼容 4、SDK提供了一些基本协议级的封装,提高API访问成功率 5、错误日志自动打印,错误发生时可完全收集现场数据 三、如何使用最新的SDK 1、新SDK的目录结构 JAVA SDK目录结构 .NET SDK目录结构

2、SDK命名规则 a)数据结构类名与API线上文档中完全一样 b)API请求类名:去掉api名字中的”taobao”,把”.”后的首字母大写, 再掉所有的”.”号,并加上”Request”,即为最终的类名。比如 https://www.wendangku.net/doc/c110868931.html,er.get对应的请求类的类名为UserGetRequest。 c)API返回结果类名:去掉api名字中的”taobao”,把”.”后的首字母 大写,再掉所有的”.”号,并加上”Response”,即为最终的类名。比 如https://www.wendangku.net/doc/c110868931.html,er.get对应的响应类的类名为UserGetResponse。 3、SDK使用代码示例(java版,php版,.net版) JAVA版本 ●不需要登录(sessionKey)的API调用 T aobaoClient client = new DefaultTaobaoClient(url, appkey, secret); UserGetRequest req = new UserGetRequest(); req.setFields("nick,sex,buyer_credit,seller_credit ,created,last_visit");

什么是SDK开发包

什么是SDK开发包? 2008-9-26 13:48 提问者:haorenjia10|浏览次数:7273次 我来帮他解答 推荐答案 2008-9-26 14:13 其实很简单,SDK 就是Software Development Kit 的缩写,中文意思就是“软件开发工具包”。 这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 具体到我们这个系列教程,我们后面只讨论广义SDK 的一个子集——即开发Windows 平台下的应用程序所使用的SDK。 呵呵,其实上面只是说了一个SDK 大概的概念而已,理解什么是SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是SDK 我们不得不引入API、动态链接库、导入库等等概念。^ _^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。 首先要接触的是“API”,也就是Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API 而使操作系统去执行应用程序的命令(动作)。其实早在DOS 时代就有API 的概念,只不过那个时候的API 是以中断调用的形式(INT 21h)提供的,在DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将AH 置为30h 后调用INT 21h 就可以得到DOS 操作系统的版本号。而在Windows 中,系统API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在Windows 中你所要做的就是调用GetVersionEx() 函数。 可以这么说,DOS API 是“Thinking in 汇编语言”的,而Windows API 则是“Thinking in 高级语言”的。 DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。 DLL,即Dynamic Link Library(动态链接库)。我们经常会看到一些 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。 跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装

关于服务端和客户端SDK代码及编译步骤的说明

关于服务端和客户端SDK代码及编译步骤的说明1.服务端代码结构 服务器端的代码由4个Project组成,分别是:CommonClass, ServiceDemo, ServiceParam, ServiceSDK。 1.1. CommonClass CommonClass是一个通用的类库,可以被服务端和客户端SDK上层的代码使用。 只是由于编译平台的不同,类库中的类有所删节。 GenericObject:对象池模板中的对象的基类,所有用对象池管理的对象都需要使用该类作为基类; ObjectHolder:对象池模板中用到的对象管理模板,用于对对象进行管理,里面存储的对象都由GenericObject类派生而来; SinglitonPoolMgr:单模式的对象池模板,使用ObjectHolder实现的,单态的对象池模板; PolymorphicPoolMgr:多模式的对象池模板,使用ObjectHolder实现的,可以出现多个对象的对象池模板; CADOObj:继承自GenericObject的数据库连接对象; CDBCPool:使用PolymorphicPoolMgr生成的数据库连接池,其中PolymorphicPoolMgr模板使用的数据类型是CADOObj; CDBCPoolCollection:多个CDBCPool的集合,可以显现多个数据库的连接; CframeContainer:数据帧容器,实现了传输协议的功能,数据存储等; CframeContainer的对象由CframeContainerPool实现工厂模式; CframeContainerPool:CframeContainer对象池,采用工厂模式;CframeContainer 对象都在需要时向CframeContainerPool申请,不再使用时,回收到CframeContainerPool; CpriorityFrameQueue:带有优先级排队的帧容器队列,存储的对象是CframeContainer对象,可以根据CframeContainer对象的优先级,并按照先来后到的顺序进行排队; CrecordSetParser:封装了Recordset操作的一个类; CworkerThreadPool:实现线程池的一个类;

初学者必看:VC++、Win32 SDK、MFC的区别

这是一个初进行开发人员都可能遇到过的概念不清的问题,自己当年也同样有过误解,做 技术我感觉一定要专,但是,不代表毫不关心相关的知识,至少概念层次上要知道,所以,这里还是再把这些内容纪录下来,好记性不如烂笔头: C/C++都是一种编程语言,程序员用它来创作(我喜欢用创作这个词,让写代码有一些艺术气息...)各种各样的程序,简单如计算闰年,复杂到一个系统地实现。当然,编写标准C程序的时候,我们还经常会调用各种库函数来辅助完成某些功能;初学者使用得最多的C库函数就是printf了,这些库函数是由你所使用的编译器厂商提供的。在Windows平台下,也有类似的函数可供调用;不同的是,这些函数是由Windows操作系统本身提供的。 Windows操作系统提供了各种各样的函数,以方便我们开发Windows应用程序。这些 函数是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称为API函数。我们在编写Windows程序时所说的API函数,就是指系统提供的函数,所有主要的Windows函数都在Windows.h头文件中进行了声明。使用windows API创建的能在windows上运行的程序统称为windows程序。 这些API随着系统的更新升级,他们也是在不断更新和扩充,但是,其行为基本保持 不变以保证不同平台对应用程序的兼容性,面对越来越多地API,我们怎么获取可靠的帮 助呢?最大的帮助就是MSDN,你可以把MSDN理解为微软向开发人员提供的一套帮助系统,其中包含大量的开发文档、技术文章和示例代码。MSDN包含的信息非常全面,程序 员不但可以利用MSDN来辅助开发,还可以利用MSDN来进行学习,从而提高自己。对于初学者来说,学会使用MSDN并从中汲取知识,是必须要掌握的技能。 我们还经常听人说Win32 SDK开发,那么什么是SDK呢。SDK的全称是Software Development Kit,中文译为软件开发包。假如现在我们要开发呼叫中心,在购买语音卡的同时,厂商就会提供语音卡的SDK开发包,以方便我们对语音卡的编程操作。这个开发包通常都会包含语音卡的API函数库、帮助文档、使用手册、辅助工具等资源。也就是说,SDK实际上就是开发所需资源的一个集合,再具体点说,你知道CreatePorcess这个API, 那怎么使用,你需要有头文件,当然还需要提供功能的系统DLL库的引出库lib,这些都在SDK中。现在读者应该明白Win32 SDK的含义了吧,即Windows 32位平台下的软件开发包,包括了API函数、帮助文档、微软提供的一些辅助开发工具。 提示:API和SDK是一种广泛使用的专业术语,并没有专指某一种特定的API和SDK,例如,语音卡API、语音卡SDK、Java API、Java SDK等。自己公开的DLL函数也可以叫API!!! 一般来讲,狭义上的API指 MS公开的函数。比如MSDN中介绍的函数。广义的API 可以包括所有的函数,你自己的函数也算,未公开的也是。指世界上一切函数。都可以叫API--pplication Programming Interface ; SDK也不仅仅指MS的开发包,你自己的 程序如果需要让别人作2次开发,你就会提供一些函数接口让别人编程,你提供的材料也

Android 各版本SDK的区别

Android 各个版本SDK的区别---转载 Android 1.5 API变更概要: UI framework · Framework for easier background/UI thread interaction ·新SlidingDrawer 组件 ·新HorizontalScrollview 组件 AppWidget framework ·一些关于创建桌面AppWidget 的API. ·提供根据自定义的内容创建LiveFolders的API Media framework ·原声录音和回放APIs ·交互式的MIDI 回放引擎 ·开发者使用的视频录像API (3GP format). ·视频相片分享Intents ·媒体搜索Intent Input Method framework ·输入法服务framework ·文本预测引擎 ·提供具有下载能力的IME给使用者 Application-defined hardware requirements 应用可定义硬件需求,应用程序可以定义说明此程序需要什么硬件需求.比如是否需要物理键盘或者轨迹球. Speech recognition framework ·支持语音识别库. Miscellaneous API additions · LocationManager -应用可以接收到位置改变的信息. · WebView - 触摸start/end/move/cancel DOM 事件的支持 ·重建Sensor Manager APIs · GLSurfaceView - 创建OpenGL 应用更加方便的framework . ·软件升级安装成功的Broadcast Intent - 更加平和优秀的软件升级体验 Android 1.6 API变更概要: UI framework ·新的类android.view.animation 控制动画行为: o AnticipateInterpolator o AnticipateOvershootInterpolator

开发者如何调用直播SDK或API接入直播功能

趣看云视频直播点播服务 视频直播推流SDK iOS开发指南 版本:1.0 2016.05

SDK 概述 趣看IOS视频直播推流SDK 是一个强大的实时直播推流引擎,可用于构建直播互动、美女秀场、远程教育等产品。 SDK 提供了构建直播推流所需要的所有核心技术,包括:音视频管理、音视频采集、编码、网络传输、显示等功能。 SDK 支持iOS 7.0 及以上系统。 开发准备 ?在趣看后台生成账号,获取到账号对应的APPKEY ?下载视频直播推流iOS SDK ?解压下载的视频直播推流SDK 开发包,将头文件和静态库都导入工程。 ?添加IPCameraSDK依赖库 o UIKit.framework o CoreImage.framework o QuartzCore.framework o AVFoundation.framwork o OpenGLES.framework o CoreMedia.framework o CoreVideo.framework o CoreGraphics.framework o Security.framework o Foundation.framework o CFNetwork.framework ?在Other Linker Flags 中添加-ObjC ?在需要使用SDK 的地方import IPCameraSDK.h

直播流程展示图 IOS接口函数调用图 趣看直播使用接入非常简易,只需要接入SDK后,实现流程图中的5个方法,即可实现实时视频直播。 SDK 类说明 SDK 所有功能都封装在IPCameraSDK类中,下面详细介绍下IPCameraSDK类的功能。

Android_SDK编译,带自己api的android.jar编译

Android SDK编译 ——如何将自己源代码加入android.jar 在Android源码编译成功的基础上重新编译带自己API的android.jar需要进行以下几步操作。 1 添加自己源代码,在Android源码frameworks/base目录下新建一个文件夹保存代码,如tv,以包的形式命名添加的文件所在的路径,如/tv/java/android/tv,添加的java文件开头定义的包即是编译成功的class文件所在的包。 2 修改makefile文件 2.1 修改build/core/pathmap.mk文件 在FRAMEWORKS_ BASE_ SUBDIRS变量后添加tv\,代码如下(makefile 文件中的语句以Tab键空格开头) FRAMEWORKS_BASE_SUBDIRS := \ $(addsuffix /java, \ core \ graphics \ location \ media \ opengl \ sax \ telephony \ wifi \ vpn \ keystore \ tv \ ) 2.2修改frameworks/base/Android.mk 文件 在packages_to_ document变量后添加自己源代码的包名称,如android/tv,结果如下(makefile文件中的语句以Tab键空格开头) packages_to_document := \ android \ javax/microedition/khronos android/tv 3 在ubuntu命令行终端使用如下命令进行编译: make clean make update-api make PRODUCT-sdk-sdk 最后一行也可以用如下两个命令代替: make –j4 make sdk 4 编译结果 4.1 android.jar文件所在的目录为 /out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar 并在/out/target/common/obj/JA V A_LIBRARIES/android_stubs_current_interme diates/src目录下重新以package形式组织所有生成到android.jar中的源代码。 4.2 SDK所在目录为

API接口文档

tagParam[i] = t; } int i = PushManager.getInstance().setTag(context,tagParam, System.currentTimeMillis() +""); String text = "设置标签失败,未知异常"; switch (i) { case PushConsts.SETTAG_SUCCESS: text = "设置标签成功"; break; case PushConsts.SETTAG_ERROR_COUNT: text = "设置标签失败, tag数量量过?大, 最?大不不能超过200个"; break; case PushConsts.SETTAG_ERROR_FREQUENCY: text = "设置标签失败, 频率过快, 两次间隔应?大于1s"; break; case PushConsts.SETTAG_ERROR_REPEAT: text = "设置标签失败, 标签重复"; break; case PushConsts.SETTAG_ERROR_UNBIND: text = "设置标签失败, 服务未初始化成功"; break; case PushConsts.SETTAG_ERROR_EXCEPTION: text = "设置标签失败, 未知异常"; break; case PushConsts.SETTAG_ERROR_NULL: text = "设置标签失败, tag 为空"; break; case PushConsts.SETTAG_NOTONLINE: text = "还未登陆成功"; break; case PushConsts.SETTAG_IN_BLACKLIST: text = "该应?用已经在?黑名单中,请联系售后?支持!"; break; case PushConsts.SETTAG_NUM_EXCEED: text = "已存 tag 超过限制"; break;

小程序开发之API与SDK的区别

小程序开发之API与SDK的区别 API是什么 ?API即“应用程序编程接口”,是一些预先定义的函数,目的是作为“介面”沟通两个不同的东西,提供应用程序与开发人员基于某软件或硬件得以访问一 组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 ?目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 SDK是什么 ?SDK即“软体开发工具包”,一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 ?通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。 ?通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。也有针对某项软件功能的SDK,如推送 技术、图像识别技术、移动支付技术、语音识别分析技术等,在互联网开 放的大趋势下,一些功能性的SDK已经被当作一个产品来运营。 ?开发者不需要再对产品的每个功能进行开发,选择合适稳定的SDK服务并花费很少的经历就可以在产品中集成某项功能。 二者对比 ?SDK相当于开发集成工具环境,api 就是数据接口。在sdk环境下调用api 数据。 ?实际上SDK包含了API的定义,API定义一种能力,一种接口的规范,而SDK可以包含这种能力、包含这种规范。但是SDK又不完完全全只包含 API以及API的实现,它是一个软件工具包,它还有很多其他辅助性的功能。 ?SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写Windows 应用程序的开发方式叫做“SDK编程”。

简述sdk与api之间的关系

浅谈Sdk与Api 之前一直没搞懂sdk和api之间的关系,官方的解释也是似懂非懂。 在百度百科中,sdk定义为软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 好吧,看到这里我还是一头雾水,这些话语太官方,简直不给新手留一条活路。后面参照了一些文章后才真正理解sdk和api的意思。 类比来说,api可以比作房门钥匙。在一个房子里,每间房间有其不同的用途与资源。而当要获取到相应房间的资源时,我们需要先用钥匙打开房门。譬如我们要从书房里拿书、要去卧室拿枕头,我们都需要先找到相应房间钥匙,继而进入房间拿书、拿枕头。调用 api的过程,就是用钥匙开门的过程。 而sdk则是把这些钥匙串在一块儿,将api集成在一块儿。拥有sdk,你便可以在该房子里畅通无阻,想要获得哪个房间里的资源,用手中的钥匙打开房门,进去拿取即可。 Api又分为open api和私有api。Open api 顾名思义,即是向所有人公开的接口,允许任何人调用它并获取到它背后的数据。它就好比于图书馆,你只需要进行相应的身份认证,就可以进入里面获取到相应的图书及资源,而身份认证便是你获取资源的钥匙。 现在很多公司都开放自己的open api,并为了用户调用方便,他们大多采用sdk文档方式打包。用户在调用时只需要下载该sdk文档,根据相应规范进行调用即可。这样就省去了

泛微SDK API接口说明描述

泛微法务部提请浏览者保护本文件的知识产权!谢谢您的配合! Weaver e-cology Server API 【文档目的】 本文档将介绍泛微e-cology Server所提供的二次扩展功能,包括API接口的说明、二次扩展应用的实现、以及部分扩展功能的示例程序。通过本文档,您可以了解到如何通过泛微e-cology Server所提供的API接口进行一些个性化的功能扩展以及应用集成。 【应用范围】 泛微e-cology Server作为企业管理平台,一方面为企业提供丰富的内部管理的功能模块(人力资源管理、工作流程管理、知识管理、项目管理、客户管理、财务管理、资产管理等),另一方面为企业的其他应用提供了丰富的集成、扩展接口。基于Server API的扩展,可实现企业应用在ERP系统、财务系统,PDM等方面的集成以及无线应用方面的快速增强。 【开发人员】 泛微e-cology Server SDK 为开发人员提供C、Jave 以及基于COM的API接口,适合于Windows平台上支持COM标准的任何开发语言和平台(VB、VC++、ASP、JA V A、PB、Delphi、LotusScript等)。 Weaver Server SDK 同时提供一个轻量HTTP Server,使非Windows平台也能够以HTTP请求的方式调用SDK。 本SDK的示例程序将以Java 为主。 【示例源程序】 本SDK接口的测试源程序位于SDK安装目录下的Sample目录,通过所提供的VBScript测试程序,可以快速了解、检测SDK安相关接口的功能。 【最后更新】 2004年01月 一、概述 概述】 通过这个章节的学习,您在能够在短短的几分钟迅速成为Weaver Server SDK 应用专家。 1. 进入门篇:第一个程序:Hello,world 2. 初级篇:HTTP SDK 跨平台调用 3. 提高篇:面向对象编程 4. 进阶篇:高性能与复杂应用

SDK总结

SDK总结 Android SoftWare development kit. 永远只用最新的SDK版本,这是Google官方强烈建议的。你的app能运行的Android 版本不是由SDK决定的,是由每一个项目的minSDK决定的,通过minSDK确定app应用能安装运行在目标设备的最低SDK版本。 SDK都是向下兼容的。SDK在不断改进中,新的SDK会提供更强大开发工具,而且用4.0的SDK编译的2.1的apk的执行效率会比用2.1的SDK编译的更高。至于每个app应该用什么 minSDK ,应该根据应用具体的API来,如果app没有用到1.6以上SDK新提供的API,那么用1.6会在提供相同体验下反而会比2.1兼容更多机型。 开发在最新版本(target),测试在最低版本(min)。 SDK目录 add-ons 这里面保存着附加库,第三方公司为Android 平台开发的附加功能系统。比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。 docs 这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。 extras 该文件夹下存放了Android support v4,v7,v13,v17包;还有google提供额USB 驱动、Intel提供的硬件加速等附加工具包,和market_licensing作为AndroidMarket 版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。 platforms 是每个平台的SDK真正的文件,存放了不同版本的android系统。里面会根据APILevel 划分的SDK版本,这里就以Android2.2来说,进入后有一个android-8的文件夹,android-8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data保存着一些系统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建

SDK

sdk SDK(Software Development Kit, 即软件开发工具包)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 目录 SDK,Software Development Kit 的缩写,中文即“软件开发工具包”。广义上指辅助开发某一类软件的相关文档、范例和工具的集合。 SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发 Windows 平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口API 的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。 为了鼓励开发者使用其系统或者语言,许多 SDK 是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。例如,营销公司会免费提供构件SDK 以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。 SDK 可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如产品供应商提供一个专有的SDK可能与自由软件开发抵触。GPL能使SDK 与专有软件开发近乎不兼容。LGPL下的SDK则没有这个问题。 编辑本段

API API(Application Programming Interface)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。其实早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在Windows 中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。 可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。 DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。 DLL DLL,即 Dynamic Link Library(动态链接库)。在windows环境下含有大量 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实Windows 的三大模块就是以 DLL 的形式提供的(Kernel32.dll, User32.dll,GDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,必须要有 API 函数的声明(.H)和其导入库(.LIB),导入库可以先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。 为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数。 编辑本段 sdk与mod的关系

相关文档