狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

怎樣手工聲明API

怎樣手工聲明API

更新時間:2024-04-10 文章作者:未知 信息來源:網絡 閱讀次數:

盡管 Visual Basic 在 Win32api.txt 中提供了大量的預定義聲明,但還是需要知道如何親自編寫聲明。例如,有時希望訪問用其它語言編寫的 DLL 中的過程,或者改寫 Visual Basic 的預定義聲明,以滿足特殊需要。
  要聲明一個 API 過程,需要在代碼窗口的“聲明”部分增加一個 Declare 語句。如果該過程返回一個值,應將其聲明為 Function:

Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])] As Type

  如果過程沒有返回值,可將其聲明為 Sub:

Declare Sub publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])]

  缺省情況下,在標準模塊中聲明的 API 過程是公有的,可以在應用程序的任何地方調用它。在其它類型的模塊中定義的 API 過程是模塊私有的,必須在它們前面聲明 Private 關鍵字,以示區分。

 

  一.指定庫

  Declare 語句中的 Lib 子句用來告訴 Visual Basic 如何找到包含過程的 .API 文件。如果引用的過程屬于 Windows 核心庫(User32、Kernel32 或 GDI32),則可以不包含文件擴展名:

Declare Function GetTickCount Lib "kernel32" Alias _
"GetTickCount" () As Long
  對于其它 DLL,Lib 子句指定文件的路徑:

Declare Function lzCopy Lib "c:\windows\lzexpand.API" _
(ByVal S As Integer, ByVal D As Integer) As Long
  如果未指定 libname 的路徑,Visual Basic 將按照下列順序查找該文件:

.exe 文件所在的目錄


當前目錄


Windows 位系統目錄(通常為 \Windows\System)


Windows 目錄(不一定是 \Windows)


Path 環境變量中的目錄


下表中列出了通常的操作系統環境庫文件。
動態鏈接庫 描述
Advapi32.API 高級 API 服務,支持大量的 API(其中包括許多安全與注冊方面的調用)
Comdlg32.API 通用對話框 API 庫
Gdi32.API 圖形設備接口 API 庫
Kernel32.API Windows 32 位核心的 API 支持
Lz32.API 32 位壓縮例程
Mpr.API 多接口路由器庫
Netapi32.API 32 位網絡 API 庫
Shell32.API 32 位 Shell API 庫
User32.API 用戶接口例程庫
Version.API 版本庫
Winmm.API Windows 多媒體庫
Winspool.drv 后臺打印接口,包含后臺打印 API 調用。


  二.處理使用字符串的 Windows API 過程

  如果調用的 Windows API 過程要使用字符串,那么聲明語句中必須增加一個 Alias 子句,以指定正確的字符集。包含字符串的 Windows API 函數實際有兩種格式:ANSI 和 Unicode。因此,在 Windows 頭文件中,每個包含字符串的函數都同時有 ANSI 版本和 Unicode 版本。
  例如,下面是 SetWindowText 函數的兩種 C 語言描述。可以看到,第一個描述將函數定義為 SetWindowTextA,尾部的“A”表明它是一個 ANSI 函數:

WINUSERAPI
BOOL
WINAPI
SetWindowTextA(
HWND hWnd,
LPCSTR lpString);

  第二個描述將它定義為 SetWindowTextW,尾部的“W”表明它是一個 Unicode 函數:

WINUSERAPI
BOOL
WINAPI
SetWindowTextW(
HWND hWnd,
LPCWSTR lpString);

  因為兩個函數實際的名稱都不是“SetWindowText”,要引用正確的函數就必須增加一個 Alias 子句:

Private Declare Function SetWindowText Lib "user32" _
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal _
lpString As String) As Long

  請注意,Alias 子句后面的字符串必須是過程的真正名稱,而且必須是區分大小寫的。
  對于 Visual Basic 中使用的 API 函數,應該指定函數的 ANSI 版本,因為只有 Windows NT 才支持 Unicode 版本,而 Windows 95 不支持這個版本。僅當應用程序只運行在 Windows NT 平臺上的時候才可以使用 Unicode 版本。

 

  三.使用值或引用傳遞

  在缺省的情況下,Visual Basic 以引用方式傳遞所有參數。這意味著并沒有傳遞實際的參數值,Visual Basic 只傳遞了數據的 32 位地址。在 Declare 語句中不要求包含 ByRef 關鍵字,但是如果包含該關鍵字,就能夠清楚地看出數據是以何種方式傳遞的。
  許多 API 過程要求參數以值方式傳遞。這意味著它們需要實際的數據,而不是數據的內存地址。如果過程需要一個傳值參數,而傳遞給它的參數是一個指針,那么由于得到了錯誤的數據,該過程將不能正確地工作。
  要使參數以使用值方式傳遞,在 Declare 語句中需要在參數聲明的前面加上 ByVal 關鍵字。例如,InvertRect 過程要求第一個參數使用值,而第二個使用引用:

Declare Function InvertRect Lib "user32" Alias _
"InvertRectA" (ByVal hdc As Long, _
lpRect As RECT) As Long

  也可以在調用過程時使用 ByVal 關鍵字。
  字符串參數是一個特例。如果以使用值方式傳遞字符串,那么傳遞的將是該字符串中第一個數據字節的地址;如果以使用引用方式傳遞字符串,那么實際傳遞的將是用來保存另一個地址的內存單元的地址;后面的“地址”實際是字符串的第一個數據字節的內存地址。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
国产二区国产一区在线观看| 亚洲欧美精品在线观看| 国产精品一区二区男女羞羞无遮挡| 亚洲午夜三级在线| 亚洲同性gay激情无套| 国产精品久久久久三级| 国产精品三级av| 中文字幕日韩一区| 亚洲精品国产一区二区三区四区在线| 国产精品你懂的在线| 国产精品福利影院| 亚洲色图在线看| 亚洲品质自拍视频| 亚洲一二三级电影| 秋霞午夜av一区二区三区| 丝袜亚洲另类丝袜在线| 男男gaygay亚洲| 国产在线不卡一区| 成人丝袜18视频在线观看| av不卡一区二区三区| 欧美不卡视频| 亚洲麻豆一区| 色婷婷综合久久久中文字幕| 欧美日韩黄视频| 久久午夜羞羞影院免费观看| 国产精品免费久久| 亚洲一区在线观看免费观看电影高清| 午夜精品福利视频网站| 久色婷婷小香蕉久久| 成人综合婷婷国产精品久久| 97精品电影院| 国产精品区二区三区日本| 久久蜜桃资源一区二区老牛| 欧美亚洲另类激情小说| 欧美xxxxxxxx| 中文字幕综合网| 麻豆国产一区二区| 91视频com| 欧美主播一区二区三区美女 久久精品人| 欧美在线观看视频一区二区| 日韩一区二区免费在线观看| 国产精品免费网站在线观看| 亚洲成人在线网站| 成人午夜又粗又硬又大| 亚洲精品日韩在线观看| 欧美日韩五月天| 中文字幕+乱码+中文字幕一区| 亚洲妇女屁股眼交7| 国产成人亚洲综合a∨猫咪| 亚洲二区免费| 91麻豆精品国产91| 亚洲免费伊人电影| 国产成人精品在线看| 日韩午夜免费视频| 日韩欧美高清dvd碟片| 亚洲自拍偷拍麻豆| 99这里只有久久精品视频| 小嫩嫩精品导航| 久久久久久97三级| 激情综合亚洲精品| 永久91嫩草亚洲精品人人| 91精品国产高清一区二区三区| 中文字幕一区二区三区视频| 韩国在线一区二区| 一区二区三区偷拍| 2022国产精品视频| 久久成人综合网| 一本色道精品久久一区二区三区| 日韩精品中文字幕在线不卡尤物| 精久久久久久久久久久| 欧美片第1页综合| 日韩一区和二区| 婷婷久久综合九色国产成人| 欧美午夜精品| 日韩午夜av电影| 青青草原综合久久大伊人精品| 国产精品va| 久久美女艺术照精彩视频福利播放 | 狠狠久久婷婷| 久久影音资源网| 国产麻豆91精品| 日本高清视频一区二区| 亚洲综合成人网| 日韩午夜免费视频| ...xxx性欧美| 韩日欧美一区| 国产精品视频免费看| 91女厕偷拍女厕偷拍高清| 日韩视频在线一区二区| 久久国产免费看| 色婷婷综合久久久久中文| 一区二区三区 在线观看视频 | 精品99一区二区| 国产成人午夜视频| 欧美人牲a欧美精品| 男女视频一区二区| 欧美综合欧美视频| 精品一区二区三区av| 欧洲中文字幕精品| 久久66热偷产精品| 欧美日本国产一区| 国产精品正在播放| 欧美成人aa大片| 99re热这里只有精品免费视频| 日韩精品中文字幕一区二区三区| 国产精品小仙女| 日韩欧美一区二区久久婷婷| 国内成人自拍视频| 91精品综合久久久久久| 成人激情校园春色| 久久久99精品免费观看不卡| 欧美精品尤物在线| 综合网在线视频| 亚洲永久网站| 久久精品噜噜噜成人av农村| 91超碰这里只有精品国产| 成人免费高清在线观看| 国产日产欧美一区| 99精品免费| 美腿丝袜亚洲综合| 日韩三级伦理片妻子的秘密按摩| 成人av在线看| 国产精品乱人伦| 香蕉久久夜色精品| 国产一区二区主播在线| 久久午夜老司机| 亚洲精选久久| 男女男精品网站| 欧美精品一区二区三区蜜桃视频| 国产精品国产一区二区| 午夜电影一区二区| 91精品国产丝袜白色高跟鞋| 欧美成人午夜| 一个色综合av| 91精品国产高清一区二区三区| 欧美一区不卡| 日韩福利视频导航| 精品久久国产老人久久综合| 亚洲大片av| 国产高清成人在线| 亚洲色图视频网| 欧美一区中文字幕| 激情久久久久久| 精品一区二区三区日韩| 欧美激情综合在线| 欧洲视频一区二区| 99国产精品久久久| 日韩av电影免费观看高清完整版| 日韩精品一区二区三区在线观看| 在线观看欧美亚洲| 国产91精品一区二区麻豆网站| 亚洲女同一区二区| 日韩三级电影网址| 羞羞答答国产精品www一本| 丁香婷婷综合激情五月色| 一区二区三区在线免费| 精品乱人伦小说| 久久五月激情| 国产精品啊啊啊| 国产成人免费xxxxxxxx| 亚洲制服丝袜在线| 久久久国产精华| 欧美老年两性高潮| 中文字幕综合网| 精品国产欧美一区二区| 色视频一区二区| 在线观看日韩av电影| 成人黄色电影在线 | 欧美三级在线视频| 亚洲激情啪啪| 91亚洲国产成人精品一区二区三| 琪琪一区二区三区| 亚洲精品视频在线观看网站| 欧美成人在线直播| 欧美麻豆精品久久久久久| 国产伦精品一区二区三区四区免费| 99久久精品免费精品国产| 精东粉嫩av免费一区二区三区| 亚洲曰韩产成在线| 亚洲婷婷在线视频| 中文字幕 久热精品 视频在线| 日韩欧美国产麻豆| 91精品国模一区二区三区| 91电影在线观看| 校园激情久久| 国产精品久久久久久模特 | 欧美国产精品一区二区三区| 日韩一区二区在线看片| 欧美视频一区二区| 在线一区二区观看| 日本韩国一区二区三区视频| 亚洲一区二区高清视频| 亚洲精品欧洲| 99在线精品免费视频九九视| 在线看无码的免费网站| 国产精品成人观看视频免费| 色综合天天天天做夜夜夜夜做| 国产91色综合久久免费分享| 国产精品一区专区| 国产精品一二三区|