回覆列表
  • 1 # 使用者8616219450500

    API並非只是由Windows提供的.誰也可以提供API函式供VB呼叫.當然你也可以.但大多書籍只介紹了Windows提供的眾多API函式.

    可以用另一種邏輯理解VB中呼叫的API函式:

    在VB中呼叫由其他語言寫的(也可以包括由VB寫的)函式.這些函式是公開的.

    例如你可以使用C來寫一些有用的函式,當你需要在VB中完成同等的功能時,你至少有兩種選擇:

    1.用VB語言來改寫C的函式(可謂內部函式),每當某專案需要此功能時就重寫一遍吧;

    2.直接呼叫C語言已經寫好的函式(可謂外部函式),與多少專案無關,任何專案都可使用,不必再寫了.

    對於第2種情形,就相當於API呼叫了.

    API通常被封裝在動態庫(DLL)或者ActiveX控制元件/庫中(也是動態庫).

    在VB怎麼呼叫?

    在VB中需要呼叫動態庫中的函式時,VB語言有個Declare關鍵字.該關鍵字的作用是對需要呼叫的函式先進行宣告(這個宣告的解釋是:Declare語句告知VB執行庫,呼叫的API的函式名或序號是什麼,這個函式在哪個動態庫中,有什麼引數,返回什麼).

    例如:

    PrivateDeclareFunctionFlashWindowLib"user32.dll"(ByValhWndAsLong,ByValbInvertAsLong)AsLong

    這個例子聲明瞭一個FlashWindow的Windows提供的API函式,它叫FlashWindow,在User32.dll中(user32.dll是Windows自帶的,所以它是Windows提供的API函式),有兩個引數,返回Long值.

    至於函式的功能這裡就不詳細介紹了.

    聲明後,你就可以像使用自己寫的函式一樣呼叫了:

    FlashWindowMe.hWnd,0

    所以你最後一個問題:有多少API函式.這個問題是沒有意義的,API函式可以有無限多.

    看書籍可以儘快熟悉API的呼叫機制及原理,同時也是對Windows的理解更進一步(因為這些書籍多數是以Windows提供的API為例子的).

    除了Declare可以使用其他語言提供的API外,引用ActiveX其實也是API的呼叫,不過習慣上不這麼叫罷了.例如VB人員經常使用的ADO,其實正是使用了ADO動態庫提供的眾多API函式.(ActiveX提供的API使用比需要Declare宣告的更廣更容易.而且它可以在VB的物件瀏覽器中查閱.)

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

    再次,API不是Windows獨有的,它可以由任何人提供.所以沒有API大全,最多隻是WindowsAPI大全(新推出的Windows可能會提供更多的新API,或者丟棄一些過時的舊API).這一點不要被誤導.

  • 中秋節和大豐收的關聯?
  • 搬了新家婆婆執意不跟我們一起住,不幫忙帶娃,該怎麼辦?