成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET聲明API詳細(xì)描述

開發(fā) 后端
這里介紹VB.NET聲明API,包括介紹VB6的代碼大家可以在下載的壓縮包中找到,作者提供了一個以記事本為基礎(chǔ)的實例,非常詳細(xì)無需詳細(xì)敘述了。

在向大家詳細(xì)介紹VB.NET聲明API之前,首先讓大家了解下API函數(shù)和DLL去修改目標(biāo)窗口的默認(rèn)處理函數(shù),然后全面介紹VB.NET聲明API。

我們都知道在VB6里面可以用API函數(shù)來進(jìn)行子類化,以處理自身的窗體過程;如果跨進(jìn)程,這就麻煩了,由于我們的函數(shù)在我們的進(jìn)程中(廢話),而目標(biāo)進(jìn)程的窗口的消息處理函數(shù)在目標(biāo)進(jìn)程(還是廢話),所以只能想辦法把我們的代碼放到對方進(jìn)程中去執(zhí)行——并且要告知我們的進(jìn)程得到了什么消息??峙聦憛R編就有點嚇人了,于是大家都寫DLL,其原理就是把回調(diào)函數(shù)放到一個DLL里面注入到對方進(jìn)程,DLL去修改目標(biāo)窗口的默認(rèn)處理函數(shù)——把消息發(fā)送給我們。

當(dāng)然也有“另類”一點的:http://www.it-berater.org/ThueDownloads/index.shtml上面有一個 DLL包,其中含有一個dssubcls.dll,用它,可以輕松的完成我們的工作:就像調(diào)用一個API一樣簡單,而且在我們的程序中使用回調(diào)函數(shù)!呵呵,省去了自己寫DLL的麻煩之后,這些好處足以吸引各位觀眾了吧?

好了,VB6的代碼大家可以在下載的壓縮包中找到,作者提供了一個以記事本為基礎(chǔ)的實例(在\dssubcls目錄下),非常詳細(xì)無需詳細(xì)敘述了。關(guān)鍵是在VB.NET里面如何使用它——如何聲明API,如何進(jìn)行回調(diào),看用來子類化的API的VB6聲明先:

  1. Declare Function SubClass& Lib "dssubcls" (ByVal HwndSubclass&, _  
  2. Optional ByVal Address& = 0, _  
  3. Optional ByVal OldStyle& = 0, _  
  4. Optional ByVal NewStyle& = 0, _  
  5. Optional ByVal Ext& = 0, _  
  6. Optional ByVal SubClass& = 0) 

轉(zhuǎn)化成VB.NET聲明API類似下面的樣子(習(xí)慣使然,我把&展開成了As Integer):

  1. Declare Function SubClass Lib "dssubcls" (ByVal HwndSubclass As Integer,   
  2. Optional ByVal Address As Integer = 0, Optional ByVal OldStyle As Integer = 0,   
  3. Optional ByVal NewStyle As Integer = 0, Optional ByVal Ext As Integer = 0,   
  4. Optional ByVal SubClass As Integer = 0) As Integer 

這不是很好嘛?問題來了,這樣的聲明在VB6里面可以使用Addressof function來傳入第二個參數(shù)(參見你下載的源碼),但是在VB.NET里面直接Addressof就不成了——我們需要委托一個回調(diào):

  1. Private Delegate Function HookCallBack(ByVal wMsg As Integer, 
    ByVal wParam As Integer, ByVal lParam As Integer) As Integer 

這個委托,對應(yīng)的是以下函數(shù):

  1. Private Function mCallback(ByVal wMsg As Integer, 
    ByVal wParam As Integer, ByVal lParam As Integer) As Integer  
  2. ‘在這里處理得到的消息  
  3. End Function 

使用時,需要注意先實例化這個委托:

  1. Private fix_COCD = New HookCallBack(AddressOf mCallback) 

此時,fix_COCD就是我們的mCallback函數(shù)引用了,用更直觀的觀點來看,fix_COCD就是一個指向mCallback的指針,相當(dāng)于 VB6里面的Addressof function得到的結(jié)果,看似問題解決了,于是我們寫了以下代碼來搞對方的進(jìn)程窗體消息:

  1. SubClass(Handle, fix_COCD, 0, 0, 0, 1) '修改處理函數(shù) 

問題真是接踵而至!IDE提示變量類型不符??!事實確實如此,我們把一個HookCallBack類型當(dāng)做Integer來傳遞,無法通過檢查,那么強(qiáng)行轉(zhuǎn)換吧?當(dāng)然,你可以去試試。這時,我所做的是,修改這個API聲明:

  1. Private Declare Function SubClass Lib "dssubcls" (ByVal HwndSubclass As Integer, 
    Optional ByVal Address As 
    HookCallBack = Nothing, Optional ByVal OldStyle As Integer = 0
    Optional ByVal NewStyle As 
    Integer = 0, Optional ByVal Ext As Integer = 0
    Optional ByVal SubClass As 
    Integer = 0) As Integet 

使之符合我們的調(diào)用?有點倒行逆施?并非如此,當(dāng)你習(xí)慣了修改API聲明之后,會發(fā)現(xiàn)有些事變得如此簡單,有些事需要你重新認(rèn)識——對于WIN32 API也是如此。

至此,VB.NET聲明API大功告成。

【編輯推薦】

  1. 詳細(xì)講述VB.NET開發(fā)控件
  2. VB.NET Control類的屬性和方法
  3. 解析VB.NET如何連接數(shù)據(jù)庫
  4. VB.NET應(yīng)用程序中多線程的應(yīng)用實例
  5. 淺析VB.NET程序?qū)W習(xí)經(jīng)驗
責(zé)任編輯:佚名 來源: chinaitlab
相關(guān)推薦

2009-10-13 17:16:40

VB.NET Web服

2009-10-15 15:04:42

VB.NET PadL

2009-10-10 16:15:49

VB.NET開發(fā)多線程

2009-10-20 14:21:55

VB.NET fnSi

2009-10-20 14:09:05

VB.NET反射功能

2009-10-27 12:06:01

VB.NET IDis

2009-10-16 11:02:40

VB調(diào)用動態(tài)連接庫

2009-10-19 14:22:13

VB.NET EIF體

2009-10-13 09:33:49

VB.NET Web

2009-10-30 11:20:54

VB.NET Proc

2009-10-28 09:55:29

VB.NET MyCl

2009-11-11 13:24:29

VB.NET事件

2010-01-21 16:37:56

VB.NET變量聲明

2010-01-22 10:41:33

VB.NET聲明結(jié)構(gòu)

2009-10-15 09:02:19

VB.NET申明數(shù)組

2009-10-14 13:56:05

VB.NET數(shù)據(jù)窗體

2009-10-10 16:44:52

VB.NET開發(fā)控件

2009-11-10 12:42:47

VB.NET Prin

2009-10-28 10:09:07

VB.NET Dire

2010-01-07 15:18:10

VB.NET常量
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 2021狠狠天天天| 国产精品九九视频 | 91精品国产欧美一区二区成人 | 欧美精品久久久久 | 99草免费视频 | 一区二区三区四区av | 国产成人精品午夜视频免费 | 欧美99| 天天草夜夜骑 | 日韩在线大片 | 91麻豆精品国产91久久久资源速度 | 9久久| 精品国产不卡一区二区三区 | 免费成人高清在线视频 | 久久久久久九九九九 | 最新国产精品精品视频 | 中文字幕av中文字幕 | 亚洲欧美日韩久久 | 在线免费国产 | 中午字幕在线观看 | 国产高清在线精品 | 黄色在线播放视频 | 日韩av一区二区在线观看 | 成人在线观看免费观看 | 一级片av| 久久精品国产亚洲a | 精品久久香蕉国产线看观看亚洲 | 亚洲欧美精 | 四虎影视一区二区 | 色眯眯视频在线观看 | 日本高清视频在线播放 | caoporn视频在线 | 免费视频一区 | 中国免费黄色片 | 欧美亚洲国产日韩 | 黄色欧美| 亚洲毛片在线观看 | 免费看91| 免费观看一级毛片 | 国产99久久精品一区二区永久免费 | 久久国 |