狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
日韩一区二区在线看| 亚洲免费观看视频| 中文字幕一区二区三区精华液| 一区二区日韩av| 韩国成人精品a∨在线观看| 99精品久久免费看蜜臀剧情介绍| 亚洲三级网站| 日韩午夜电影在线观看| 亚洲精品乱码久久久久久日本蜜臀| 免费看精品久久片| 欧美日韩一卡| 欧洲一区在线电影| 国产精品网曝门| 九九精品视频在线看| 欧美特黄一级| 5月丁香婷婷综合| 亚洲欧美日韩国产手机在线| 国产精品白丝av| 亚洲欧美日韩精品久久久| 欧美成人精品高清在线播放| 一区二区高清视频在线观看| 成人av午夜电影| 色综合av在线| 日韩一区在线播放| 北条麻妃一区二区三区| 久久这里有精品15一区二区三区| 成人免费高清视频在线观看| 国产精品免费一区二区三区观看| 成人一道本在线| 国产精品手机在线| 国产欧美一区二区精品秋霞影院 | 欧美日韩精品伦理作品在线免费观看| 在线欧美小视频| 国产精品国产三级国产专播品爱网 | 成人综合在线观看| 欧美色视频在线| 亚洲成人自拍网| 黄色亚洲在线| 欧美激情一区二区在线| 成人丝袜18视频在线观看| 色菇凉天天综合网| 亚洲一级电影视频| 亚洲美女色禁图| 欧美国产综合一区二区| 成人国产精品免费观看动漫| 欧美日韩国产另类不卡| 日韩黄色片在线观看| 亚洲高清不卡| 欧美国产一区视频在线观看| av爱爱亚洲一区| 欧美大胆一级视频| 国产成人av一区二区三区在线观看| 麻豆成人在线| 亚洲电影一级黄| 先锋影音久久| 亚洲午夜一二三区视频| 一区二区三区久久网| 中文字幕一区二区三区蜜月| 欧美日韩国产在线一区| 久久久久88色偷偷免费 | 国产精品久久久久9999吃药| 欧美一区二区三区在线播放| 日韩欧美在线影院| caoporn国产一区二区| 日韩午夜av电影| 成人免费看的视频| 欧美成人综合网站| 99国产一区二区三精品乱码| 国产性色一区二区| 亚洲婷婷免费| 亚洲黄色小说网站| 国产精品毛片va一区二区三区| 亚洲最快最全在线视频| 国产精品腿扒开做爽爽爽挤奶网站| 日韩一区在线看| 国产精品伊人日日| 视频一区国产视频| 欧美三级韩国三级日本三斤| 国内一区二区在线| 欧美xxxx老人做受| 欧美成人日本| 亚洲人成网站在线| 久久福利影视| 蜜臀99久久精品久久久久久软件| 欧美日韩国产免费| av不卡一区二区三区| 欧美国产日韩亚洲一区| 99日韩精品| 日本亚洲天堂网| 日韩一卡二卡三卡国产欧美| 色综合欧美在线视频区| 亚洲男人天堂av网| 欧美在线不卡视频| 成人午夜看片网址| 国产精品久久久久三级| 一本到三区不卡视频| 成人午夜激情片| 欧美国产日韩a欧美在线观看| 亚洲高清视频在线观看| 日韩av高清在线观看| 欧美xxx久久| 国产欧美综合一区二区三区| 精品中文字幕一区二区小辣椒| 精品国内片67194| 91久久中文| 国产乱国产乱300精品| 中文成人综合网| 在线日韩一区二区| 99久久精品国产麻豆演员表| 国产欧美精品一区二区色综合| 国产视频一区免费看| 国产乱理伦片在线观看夜一区| 国产精品视频第一区| 一本一本大道香蕉久在线精品| 丁香五精品蜜臀久久久久99网站| 亚洲色图视频网| 欧美美女网站色| 99精品热视频只有精品10| 国产在线看一区| 亚洲品质自拍视频| 日韩欧美亚洲一区二区| 99re热精品| 成人a级免费电影| 三级成人在线视频| 中文字幕av资源一区| 欧美精品一二三区| 中日韩视频在线观看| youjizz久久| 日韩av一二三| 中文字幕一区三区| 精品免费一区二区三区| 一本在线高清不卡dvd| 欧美日韩一卡| 成a人片国产精品| 奇米在线7777在线精品| 国产精品国产三级国产aⅴ无密码| 欧美精品v日韩精品v韩国精品v| 国产精品美女黄网| 国模精品娜娜一二三区| 国产精品一区二区在线观看不卡| 亚洲一级片在线观看| 中文字幕av免费专区久久| 欧美一区二区播放| 日本二三区不卡| 一本色道久久综合亚洲精品不| 99精品在线免费| 国产成人免费视频| 狠狠色丁香久久婷婷综合丁香| 亚洲无线码一区二区三区| 欧美激情综合五月色丁香小说| 日韩免费观看2025年上映的电影| 色婷婷一区二区三区四区| 一本不卡影院| 国内精品久久久久久久果冻传媒| 99在线精品免费| 风流少妇一区二区| 国产精品综合视频| 国产一区二区调教| 久久精品国产免费看久久精品| 亚洲一区二区精品3399| 亚洲激情成人在线| 亚洲三级在线免费观看| 国产精品国产三级国产有无不卡| 国产亚洲欧洲一区高清在线观看| 欧美一区二区三区视频在线| 欧美日本一道本| 欧美猛男超大videosgay| 欧美丝袜自拍制服另类| 在线观看亚洲精品视频| 日本韩国欧美一区二区三区| 久久久国产亚洲精品| 久久亚洲色图| 色视频一区二区| 欧美亚洲丝袜传媒另类| 欧美精品乱码久久久久久按摩| 欧美精品视频www在线观看| 欧美在线一区二区三区| 精品视频1区2区3区| 欧美精品xxxxbbbb| 91精品视频网| 精品欧美乱码久久久久久1区2区| 日韩精品中文字幕在线一区| 日韩精品一区二区三区swag | 91美女片黄在线观看91美女| 欧美日韩国产在线一区| 日韩视频二区| 色8久久人人97超碰香蕉987| 欧美日韩亚洲丝袜制服| 在线成人高清不卡| 2020日本不卡一区二区视频| 国产精品免费免费| 亚洲欧美欧美一区二区三区| 亚洲va欧美va人人爽午夜| 免费在线欧美视频| 高清不卡一区二区在线| 97久久久精品综合88久久| 国产精品成人一区二区网站软件| 亚洲日本激情| 欧美在线free| 久久亚洲综合av|