VB与Window API 间的呼叫技巧.docVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB与Window API 间的呼叫技巧

VB與Windows API 間的呼叫技巧 窗体顶端 一般會使用WINDOW API的情況,實在是因為VB本身不提供某些功能,但是,程式所需又不得不然,例如:讀取Registry內的資料,VB只提供SaveSetting、Getsetting 等系列的指令,但是它只能讀取特定地區的值,要讀、刪、更動其他區域的值時,就無法仔細看一看Combo Box的Events,其中沒有MouseMove,但這是我們經常用上的一個Event,那該如何呢?是的,那只有透過Winodow API。而VB呼叫Window API一般不都使用API檢視員,直接將相對應的API COPY到我們的程式中就好,那還用什麼技巧嗎?其實不然,因為VB資料格式的問題,又加上VB本身沒有指標,在許多地方需要一些小技巧才能解決,而且我們經常因應不同的需求,將API 檢視員的宣告COPY過來後再做一些修改,最重要的,如果有一個.DLL檔,它不在API 檢視員中定義,那時,就只有自己想辦法啦。 一、 整數參數 Windows Int, INT UNIT, DWORD BOOL WPARAM, LPARAM, LRESULT Handle(如HKEY) WORD, ATOM, SHORT BYTE, CHAR API32位元VB ByVal Long ByVal Long ByVal Long ture時為1 ByVal Long ByVal Long ByVal Long ByVal Integer ByVal Byte Eg. ----------------------------------------------------------------------------- Windows API 宣告 SHORT GetKeyState( int nVirtKey ) 對應的VB宣告 Declare Function GetKeyState Lib user32 (ByVal nVirtKey As Long) As Integer -------------------------------------------------------------------------------------------------------------- 這個API 可用來檢視某些KEY (如Insert鍵、Num Lock、CapsLock等)是on/off。程式如下:這個例子應該可十分楚的看到各個整數間的宣告對應。 ---------------------------------------------------------------------------------------------------------------- Dim InsertMode as Integer InsertMode = GetKeyState(vbKeyInsert) And vbShiftMask If InsertMode = 1 then Debug.print 表示 Insert Mode Else Debug.print 表示 OverWrite Mode End If 二、 指向整數的指標 Windows API LPINT LPUNIT LPBOOL LPDWORD LPHANDLE (如:PHKEY) LPWORD LPSHORT LPBYTE 32位元VB (ByRef ) Long (ByRef ) Long (ByRef ) Long (ByRef ) Long (ByRef ) Long (ByRef ) Integer (ByRef ) Integer (ByRef ) Byte VB內定是使用傳址呼叫,所以ByRef 可以省略,也就是說 Func(ByRef param1 as type) 與 Func(param1 as type) 是相同的,使用傳址呼叫的方式,不外乎想將參數傳給API 後將結果傳回來。然而LONG型態的傳址呼叫在VB中又佔了相當大的份量,因為32位元的指標都是LONG的型態,而字串、自定型態的Structure在Windows API中是以指標來傳遞的,而指標的傳遞事實

文档评论(0)

mi80868668 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档