windows API API初學,什麼是API?

         這幾天由於某學原因需要學習一下Windows API編程,一開始拿到這個問題事我就很懵,詢問了一些人也沒有很明白。當我又去找了一些視頻、教程以及看了一些文章之後才明白了其代表的意思。一下文章是我初學API時對其的理解,如有不對的地方還請各位大神及時批評指正。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我們先來談一下什麼是API。對於很多學習過編程的人應該都知道一個名詞“接口”。故名思極就是留出來供其他開發者使用其函數或功能的一個鏈接方式。API(Application Programming Interface,應用程序接口)是一些預先定義的函數,或指軟件系統不同組成部分銜接的約定。 [1]  目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問原碼,或理解內部工作機制的細節。(來自百度百科)

所以說windows API就是windows下的應用程序接口。windows作爲一個系統本身爲了能夠讓運行,其中就會擁有很多的函數或庫如.dll類的。這些函數或庫就可以直接調取windows的硬件設備如內存,鍵盤,鼠標等。而無論是任何一種操作系統爲了能夠日後的開發升級都會爲開發者留出各種各樣的“接口”。而這些ji接口我們就可以稱其爲API。所以說Windows API就是windows 系統下的應用程序接口,我們可以通過這些接口去直接使用windows的一些功能或應用。

綜上所述API 僅僅是一種用於進一步開發的函數庫。其並不是一種語言或軟件(我一開始一直在糾結它究竟是什麼語言/笑哭/)。無論是哪一種語言如C/C++,java,python,C#,PHP等都擁有其函數庫,我們直接調用即可。(由於本人技術有限僅僅不會全介紹)。如C/C++中的#include <Windows.h>;python中的import win32api等。先用一個C/C++程序來展示一下其使用方式:

#include <conio.h>
#include <Windows.h>//調用win頭文件
using namespace std;

int main()//使用windows系統函數也是使用main()函數
{
	//彈出一個消息框函數,第一個參數爲副窗口一般寫NULL,第二個參數是消息的內容,第三個參數是標題,第四個參數是按鈕(常量)
	MessageBox(NULL, TEXT("Hellow API"), TEXT("標題"), MB_OK);
	//設定鼠標位置SetCursorPos(int X,int Y)
	SetCursorPos(0,0);

	//無限設定(放棄鼠標/偷笑/)
	while (true)
	{
		SetCursorPos(0, 0);
		Sleep(50);//小延遲,減少資源佔用
		if (_kbhit()) {//如果有按鍵按下,則_kbhit()函數返回真
			int ch = _getch();//使用_getch()函數獲取按下的鍵值
			if (ch == 27) { break; }//按下ESC結束.
		}
	}
	system("pause");
	return 0;
}

下面我簡單的簡單的介紹一下API的整體運作過程:

 

       假設有一天你要去買一杯奶茶,這個奶茶店是上圖這個樣子,它擁有一個點餐口和一個出餐口,如果你要買一杯奶茶那麼你就需要去點餐口告訴店員你需要什麼樣的奶茶,然後店員會根據你的需求去將你的奶茶做好,你只需要去出餐口去等待你的奶茶即可。明白了這個例子我們對於API的整個過程就很好理解了,此時你所寫的程序就是你這個程序的中的客戶而奶茶店就是我們的系統;這兩個窗口就是系統所提供的API,我們需要聽過窗口選擇我們需要的奶茶即可不需要我們自己去製作奶茶,這樣能夠偶有效的保護系統內部的安全。例如上面那個程序,我們的目的是爲了將鼠標移動到左上角(0,0位置),但是鼠標是屬於系統內部的設備我們無法通過外部程序去移動他,所以系統給我們提供了一個接口函數即SetCursorPos(int X,int Y),我們通過這個函數就能夠實現將鼠標移動到左上角的操作。此時將鼠標移動至左上角就是我們的“奶茶”,SetCursorPos(int X,int Y)函數就是我們點奶茶的這個過程。同樣的在其他系統中的API原理於此大同小異此處不再進行過多講解。
       怎麼樣這樣一來對於API是不是很好理解了呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章