API Application Program Interface 應(yīng)用編程接口
Application Programming Interface -- 應(yīng)用程序編程接口
API是一套用來(lái)控制Windows的各個(gè)部件(從桌面的外觀到為一個(gè)新進(jìn)程分配的內(nèi)存)的外觀和行為的一套預(yù)先定義的Windows函數(shù).用戶的每個(gè)動(dòng)作都會(huì)引發(fā)一個(gè)或幾個(gè)函數(shù)的運(yùn)行以告訴Windows發(fā)生了什么.
這在某種程度上很象Windows的天然代碼.其他的語(yǔ)言只是提供一種能自動(dòng)而且更容易的訪問(wèn)API的方法.VB在這方面作了很多工作.它完全隱藏了API并且提供了在Windows環(huán)境下編程的一種完全不同的方法.
這也就是說(shuō),你用VB寫出的每行代碼都會(huì)被VB轉(zhuǎn)換為API函數(shù)傳遞給Windows.例如,Form1.Print...VB 將會(huì)以一定的參數(shù)(你的代碼中提供的,或是默認(rèn)參數(shù))調(diào)用TextOut 這個(gè)API函數(shù).
同樣,當(dāng)你點(diǎn)擊窗體上的一個(gè)按鈕時(shí),Windows會(huì)發(fā)送一個(gè)消息給窗體(這對(duì)于你來(lái)說(shuō)是隱藏的),VB獲取這個(gè)調(diào)用并經(jīng)過(guò)分析后生成一個(gè)特定事件(Button_Click).
API函數(shù)包含在Windows系統(tǒng)目錄下的動(dòng)態(tài)連接庫(kù)文件中(如User32.dll,GDI32.dll,Shell32.dll...).
API 聲明
正如在"什么是API"中所說(shuō),API函數(shù)包含在位于系統(tǒng)目錄下的DLL文件中.你可以自己輸入API函數(shù)的聲明,但VB提供了一種更簡(jiǎn)單的方法,即使用API Text Viewer.
要想在你的工程中聲明API函數(shù),只需運(yùn)行API Text Viewer,打開Win32api.txt(或.MDB如果你已經(jīng)把它轉(zhuǎn)換成了數(shù)據(jù)庫(kù)的話,這樣可以加快速度.注:微軟的這個(gè)文件有很多的不足,你可以試一下本站提供下載的api32.txt),選擇"聲明",找到所需函數(shù),點(diǎn)擊"添加(Add)"并"復(fù)制(Copy)",然后粘貼(Paste)到你的工程里.使用預(yù)定義的常量和類型也是同樣的方法.
你將會(huì)遇到一些問(wèn)題:
假設(shè)你想在你的窗體模塊中聲明一個(gè)函數(shù).粘貼然后運(yùn)行,VB會(huì)告訴你:編譯錯(cuò)誤...Declare 語(yǔ)句不允許作為類或?qū)ο竽K中的 Public 成員...看起來(lái)很糟糕,其實(shí)你需要做的只是在聲明前面添加一個(gè)Private(如 Private Declare Function...).--不要忘了,可是這將使該函數(shù)只在該窗體模塊可用.
在有些情況下,你會(huì)得到"不明確的名稱"這樣的提示,這是因?yàn)楹瘮?shù).常量或其他的什么東西共用了一個(gè)名稱.由于絕大多數(shù)的函數(shù)(也可能是全部,我沒有驗(yàn)證過(guò))都進(jìn)行了別名化,亦即意味著你可以通過(guò)Alias子句使用其它的而不是他們?cè)械拿Q,你只需簡(jiǎn)單地改變一下函數(shù)名稱而它仍然可以正常運(yùn)行.
你可以通過(guò)查看VB的Declare語(yǔ)句幫助主題來(lái)獲取有關(guān)Alias的詳細(xì)說(shuō)明.
消息(Messages)
好了,現(xiàn)在你已經(jīng)知道什么是API函數(shù)了,但你也一定聽說(shuō)過(guò)消息(如果你還沒有,你很快就會(huì))并且想知道它是什么.消息是Windows告訴你的程序發(fā)生了哪些事件或要求執(zhí)行特定操作的基本方法.例如,當(dāng)用戶點(diǎn)擊一個(gè)按鈕,移動(dòng)鼠標(biāo),或是向文本框中鍵入文字時(shí),一條消息就會(huì)被發(fā)送給你的窗體.
所有發(fā)送的消息都有四個(gè)參數(shù)--一個(gè)窗口句柄(hwnd),一個(gè)消息編號(hào)(msg)還有兩個(gè)32位長(zhǎng)度(Long)的參數(shù).
hwnd即要接受消息的一個(gè)窗口的句柄,msg即消息的標(biāo)識(shí)符(編號(hào)).該標(biāo)識(shí)符是指引發(fā)消息的動(dòng)作類型(如移動(dòng)鼠標(biāo)),另外兩個(gè)參數(shù)是該消息的附加參數(shù)(例如當(dāng)鼠標(biāo)移動(dòng)時(shí)光標(biāo)的當(dāng)前位置)
但是,當(dāng)消息發(fā)送給你時(shí)你為什么看不到呢--就象有人在偷你的信一樣?請(qǐng)先別惱火,讓我告訴你.
小偷其實(shí)是Visual Basic.但它并沒有偷走你的信,而是在閱讀了之后挑出重要的以一種好的方式告訴你.這種方式就是你代碼中的事件(Event).
這樣,當(dāng)用戶在你的窗體上移動(dòng)鼠標(biāo)時(shí),Windows會(huì)發(fā)送一條WM_MOUSEMOVE消息給你的窗口,VB得到這條消息以及它的參數(shù)并運(yùn)行你在事件MouseMove中的代碼,同時(shí)VB會(huì)把這條消息的第二個(gè)32位數(shù)(它包含了x,y坐標(biāo),單位為像素(Pixel),每個(gè)位16位)轉(zhuǎn)換為兩個(gè)單精度數(shù),單位為緹(Twip).
現(xiàn)在,如果你需要光標(biāo)坐標(biāo)的像素表示,然而VB已經(jīng)把它轉(zhuǎn)換成了緹,因此你需要重新把它轉(zhuǎn)換為以像素為單位.在這里,Windows給了你所需要的,但VB"好意地"進(jìn)行了轉(zhuǎn)換而使你不得不重新轉(zhuǎn)換.你可能會(huì)問(wèn)--我難道不能自己接收消息嗎?答案是肯定的,你可以使用一種叫做子類處理(Subclass)的方法.但你除非必須否則最好不要使用,因?yàn)檫@與VB的安全程序設(shè)計(jì)有一點(diǎn)點(diǎn)的違背.(注:子類處理確實(shí)有很大的風(fēng)險(xiǎn),但如果使用得當(dāng),是很有用處的.不過(guò)有一點(diǎn)一定要注意,即千萬(wàn)不要使用VB的斷點(diǎn)調(diào)試功能,這可能會(huì)導(dǎo)致VB崩潰!)
需要補(bǔ)充說(shuō)明的是:你可以發(fā)送消息給你自己的窗口或其他的窗口,只需調(diào)用SendMessage或PostMessage(SendMessage會(huì)使接受到消息的窗口立刻處理消息,而PostMessage是把消息發(fā)送到一個(gè)稱為消息隊(duì)列的隊(duì)列中去,等候處理(它將會(huì)在該消息處理完后返回,例如有些延遲)).你必須制定接受消息的窗口的句柄,欲發(fā)送消息的編號(hào)(所有的消息的編號(hào)均為常量,你可以通過(guò)API Text Viewer查得)以及兩個(gè)32位的參數(shù)。
API:應(yīng)用程序接口(API:Application Program Interface)
應(yīng)用程序接口(API:application programming interface)是一組定義、程序及協(xié)議的集合,通過(guò) API 接口實(shí)現(xiàn)計(jì)算機(jī)軟件之間的相互通信。API 的一個(gè)主要功能是提供通用功能集。程序員通過(guò)使用 API 函數(shù)開發(fā)應(yīng)用程序,從而可以避免編寫無(wú)用程序,以減輕編程任務(wù)。
API 同時(shí)也是一種中間件,為各種不同平臺(tái)提供數(shù)據(jù)共享。根據(jù)單個(gè)或分布式平臺(tái)上不同軟件應(yīng)用程序間的數(shù)據(jù)共享性能,可以將 API 分為四種類型:
遠(yuǎn)程過(guò)程調(diào)用(RPC):通過(guò)作用在共享數(shù)據(jù)緩存器上的過(guò)程(或任務(wù))實(shí)現(xiàn)程序間的通信。
標(biāo)準(zhǔn)查詢語(yǔ)言(SQL):是標(biāo)準(zhǔn)的訪問(wèn)數(shù)據(jù)的查詢語(yǔ)言,通過(guò)通用數(shù)據(jù)庫(kù)實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)共享。
文件傳輸:文件傳輸通過(guò)發(fā)送格式化文件實(shí)現(xiàn)應(yīng)用程序間數(shù)據(jù)共享。
信息交付:指松耦合或緊耦合應(yīng)用程序間的小型格式化信息,通過(guò)程序間的直接通信實(shí)現(xiàn)數(shù)據(jù)共享。
當(dāng)前應(yīng)用于 API 的標(biāo)準(zhǔn)包括 ANSI 標(biāo)準(zhǔn) SQL API。另外還有一些應(yīng)用于其它類型的標(biāo)準(zhǔn)尚在制定之中。API 可以應(yīng)用于所有計(jì)算機(jī)平臺(tái)和操作系統(tǒng)。這些 API 以不同的格式連接數(shù)據(jù)(如共享數(shù)據(jù)緩存器、數(shù)據(jù)庫(kù)結(jié)構(gòu)、文件框架)。每種數(shù)據(jù)格式要求以不同的數(shù)據(jù)命令和參數(shù)實(shí)現(xiàn)正確的數(shù)據(jù)通信,但同時(shí)也會(huì)產(chǎn)生不同類型的錯(cuò)誤。因此,除了具備執(zhí)行數(shù)據(jù)共享任務(wù)所需的知識(shí)以外,這些類型的 API 還必須解決很多網(wǎng)絡(luò)參數(shù)問(wèn)題和可能的差錯(cuò)條件,即每個(gè)應(yīng)用程序都必須清楚自身是否有強(qiáng)大的性能支持程序間通信。相反由于這種 API 只處理一種信息格式,所以該情形下的信息交付 API 只提供較小的命令、網(wǎng)絡(luò)參數(shù)以及差錯(cuò)條件子集。正因?yàn)槿绱,交?API 方式大大降低了系統(tǒng)復(fù)雜性,所以當(dāng)應(yīng)用程序需要通過(guò)多個(gè)平臺(tái)實(shí)現(xiàn)數(shù)據(jù)共享時(shí),采用信息交付 API 類型是比較理想的選擇。
API 與圖形用戶接口(GUI)或命令接口有著鮮明的差別:API 接口屬于一種操作系統(tǒng)或程序接口,而后兩者都屬于直接用戶接口。
有時(shí)公司會(huì)將 API 作為其公共開放系統(tǒng)。也就是說(shuō),公司制定自己的系統(tǒng)接口標(biāo)準(zhǔn),當(dāng)需要執(zhí)行系統(tǒng)整合、自定義和程序應(yīng)用等操作時(shí),公司所有成員都可以通過(guò)該接口標(biāo)準(zhǔn)調(diào)用源代碼,該接口標(biāo)準(zhǔn)被稱之為開放式 API。
另一種含義:
1:美國(guó)石油協(xié)會(huì)(API:American Petrolenm Institute):
API610/682是機(jī)械密封的設(shè)計(jì)和選用標(biāo)準(zhǔn);
API676 轉(zhuǎn)子泵的標(biāo)準(zhǔn);
2:API還有一種含意:空氣污染指數(shù)!居⑽ air pollution index 的縮寫】
空氣污染指數(shù)(AIR POLLUTION INDEX,簡(jiǎn)稱API)是一種反映和評(píng)價(jià)空氣質(zhì)量的方法,就是將常規(guī)監(jiān)測(cè)的幾種空氣污染物的濃度簡(jiǎn)化成為單一的概念性數(shù)值形式、并分級(jí)表征空氣質(zhì)量狀況與空氣污染的程度,其結(jié)果簡(jiǎn)明直觀,使用方便,適用于表示城市的短期空氣質(zhì)量狀況和變化趨勢(shì)。
空氣污染指數(shù)的確定原則:空氣質(zhì)量的好壞取決于各種污染物中危害最大的污染物的污染程度。空氣污染指數(shù)是根據(jù)環(huán)境空氣質(zhì)量標(biāo)準(zhǔn)和各項(xiàng)污染物對(duì)人體健康和生態(tài)環(huán)境的影響來(lái)確定污染指數(shù)的分級(jí)及相應(yīng)的污染物濃度限值。目前我國(guó)所用的空氣指數(shù)的分級(jí)標(biāo)準(zhǔn)是:(1)空氣污染指數(shù)(API)50點(diǎn)對(duì)應(yīng)的污染物濃度為國(guó)家空氣質(zhì)量日均值一級(jí)標(biāo)準(zhǔn);(2)API100點(diǎn)對(duì)應(yīng)的污染物濃度為國(guó)家空氣質(zhì)量日均值二級(jí)標(biāo)準(zhǔn);(3)API200點(diǎn)對(duì)應(yīng)的污染物濃度為國(guó)家空氣質(zhì)量日均值三級(jí)標(biāo)準(zhǔn);(4)API更高值段的分級(jí)對(duì)應(yīng)于各種污染物對(duì)人體健康產(chǎn)生不同影響時(shí)的濃度限值,API500點(diǎn)對(duì)應(yīng)于對(duì)人體產(chǎn)生嚴(yán)重危害時(shí)各項(xiàng)污染物的濃度。
根據(jù)我國(guó)空氣污染的特點(diǎn)和污染防治工作的重點(diǎn),目前計(jì)入空氣污染指數(shù)的污染物項(xiàng)目暫定為:二氧化硫、氮氧化物和總懸浮顆粒物。隨著環(huán)境保護(hù)工作的深入和監(jiān)測(cè)技術(shù)水平的提高,再調(diào)整增加其它污染項(xiàng)目,以便更為客觀地反應(yīng)污染狀況。
空氣污染指數(shù)的計(jì)算與報(bào)告:
污染指數(shù)與各項(xiàng)污染物濃度的關(guān)系是分段線性函數(shù)(見表1和圖1),用內(nèi)插法計(jì)算各污染物的分指數(shù)In(具體計(jì)算方法請(qǐng)參見《環(huán)境監(jiān)測(cè)簡(jiǎn)報(bào)》1997年第9期),取各項(xiàng)污染物分指數(shù)中最大者代表該區(qū)域或城市的污染指數(shù)。即:API=max(I1,I2···Ii,···In)
該指數(shù)所對(duì)應(yīng)的污染物即為該區(qū)域或城市的首要污染物。當(dāng)污染指數(shù)API值小于50時(shí),不報(bào)告首要污染物。
3:在JAVA中,API除了有應(yīng)用“程序程序接口”的意思外,還特指JAVA API的說(shuō)明文檔,也稱為JAVA幫助文檔。
4.API Q1質(zhì)量體系認(rèn)證是您向用戶證明您有一套API認(rèn)可的完善的質(zhì)量管理體系, 有些石油、天然氣設(shè)備制造商所生產(chǎn)的產(chǎn)品目前沒有所適用API會(huì)標(biāo)產(chǎn)品的規(guī)范對(duì)應(yīng), 但他們又想向用戶證明他們的產(chǎn)品或服務(wù)符合API標(biāo)準(zhǔn)的要求,所以API Q1質(zhì)量體系認(rèn)證可以幫您辦到。API Q1質(zhì)量體系認(rèn)證特別適用于那些所生產(chǎn)的產(chǎn)品沒有相應(yīng)的API會(huì)標(biāo)產(chǎn)品規(guī)范所對(duì)應(yīng)的石油、天然氣設(shè)備生產(chǎn)廠家, 或向石油、天然氣行業(yè)提供服務(wù)的公司。
5.原料藥(Active Pharmaceutical Ingredients): 指的是藥物活性成分,也就是我們通常所說(shuō)的原料藥。
另一種含義:
使用API(應(yīng)用編程接口,英文全稱:Application Programming Interface)構(gòu)建業(yè)務(wù)是實(shí)現(xiàn)開放式業(yè)務(wù)結(jié)構(gòu)的關(guān)鍵技術(shù),也是下一代網(wǎng)絡(luò)區(qū)別于傳統(tǒng)電信網(wǎng)的主要特點(diǎn)之一。目前,關(guān)于下一代網(wǎng)絡(luò)的開放式業(yè)務(wù)API標(biāo)準(zhǔn)主要包括:由Parlay組織、3GPP和ETSI SPAN共同制定的Parlay/OSA API以及由SUN公司在Java平臺(tái)上推出的JAIN API。
Parlay API是由Parlay組織定義的便于業(yè)務(wù)開發(fā)者快速創(chuàng)建電信業(yè)務(wù)的應(yīng)用編程接口,自1999年成立以來(lái),Parlay組織已制定了4個(gè)版本的Parlay協(xié)議。開放式業(yè)務(wù)結(jié)構(gòu)(OSA)是3GPP制定的多媒體業(yè)務(wù)框架,選定Parlay作為其開放式業(yè)務(wù)接口API。兩者結(jié)合的Parlay/OSA API獨(dú)立于具體的實(shí)現(xiàn)技術(shù),可以應(yīng)用于固定網(wǎng)絡(luò)、移動(dòng)網(wǎng)絡(luò)以及下一代網(wǎng)絡(luò)的業(yè)務(wù)提供;獨(dú)立于具體的實(shí)現(xiàn)語(yǔ)言,可以用C、C++、Java等各種語(yǔ)言實(shí)現(xiàn);定義了完善的認(rèn)證和授權(quán)機(jī)制,以支持對(duì)第3方應(yīng)用的支持。
Parlay/OSA API位于由網(wǎng)絡(luò)運(yùn)營(yíng)商管理的Parlay網(wǎng)關(guān)和由業(yè)務(wù)提供商管理的應(yīng)用服務(wù)器之間。Parlay網(wǎng)關(guān)對(duì)應(yīng)用服務(wù)器屏蔽了下層網(wǎng)絡(luò)的技術(shù)實(shí)現(xiàn)細(xì)節(jié),使得應(yīng)用服務(wù)器可以使用統(tǒng)一的方式對(duì)網(wǎng)絡(luò)能力進(jìn)行訪問(wèn)。
Parlay/OSA API包括兩類接口:業(yè)務(wù)接口和框架接口。業(yè)務(wù)接口提供應(yīng)用訪問(wèn)網(wǎng)絡(luò)能力和信息的接口,框架接口提供業(yè)務(wù)接口安全、管理所必需的支持能力。業(yè)務(wù)接口保證用戶能夠接入傳統(tǒng)網(wǎng)絡(luò),如呼叫控制、呼叫管理、發(fā)送消息、用戶交互等;框架接口提供的功能有:業(yè)務(wù)登記、業(yè)務(wù)預(yù)訂、業(yè)務(wù)發(fā)現(xiàn)、認(rèn)證、授權(quán)和綜合管理。
JAIN API和Parlay/OSA API設(shè)計(jì)思想相近,功能上具有互補(bǔ)性。它采用專一的Java語(yǔ)言實(shí)現(xiàn),并且定義了比較完備的訪問(wèn)各種網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)議API。目前Parlay/JAIN聯(lián)合工作組正在進(jìn)行兩者的融合工作。
API:醫(yī)藥活性物原料藥