国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VB的API編程精粹(一)

2019-11-18 17:46:17
字體:
來源:轉載
供稿:網友
在上篇的中我們介紹了API編程的基礎知識和一些比較“酷”的API調用,這期我們將配合專題介紹關于注冊表編程的API函數及其應用實例,使讀者朋友何能夠將前面學到的注冊表知識推廣到VB編程中,繼續向VB高手邁進(路漫漫……)。當然,上期說過要介紹更“酷”的API調用,可不能食言,后半部分介紹的平面工具條的生成定會使您的程序更“炫”!
一.注冊表的API編程
關于注冊表的知識相信您通過前面專題的介紹已經有了較深入的了解。系統有六個預定義好的關鍵字,這六個關鍵字是用戶或系統訪問注冊表的入口點。我們常用到的只有前四個關鍵字。而在編程時我們一般用到只是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE這兩個關鍵字,因為與應用程序相關的數據存在于這兩個關鍵字下。
許多商品化的軟件或專業化的軟件在您的機器上首次安裝的時候都會通過改寫注冊表來完成軟件的正確安裝運行,夢想成為編程高手的你當然需要掌握讀寫注冊表這一技術。利用好注冊表會為您的應用程序增色不少。
雖然VB本身提供了四個關于注冊表的函數GetSetting,SaveSetting、GetAllSettings、DeleteSetting(這四個函數的使用比較簡單讀者可以參考VB的聯機幫助),但是這四個函數只能在“HKEY_CURRENT_USER/Software/VBandVBAPRogramSettings”下讀取、刪除、修改鍵值。對于一般的應用程序利用它們可以達到您的目的,對于特殊的要求利用它們就顯的無能為力了。下面舉一個例子說明它們的局限性。
熟悉DOS操作系統的讀者都知道,可以編寫一個“Autoexec.bat”的批處理文件來實現某一個應用程序在系統啟動的時候自動運行,在Win95中我們可以把應用程序的快捷方式放到系統的啟動組中來達到同樣的效果。但是,假如我需要在我的應用程序首次安裝以后就能自動達到這種效果,那該如何呢?其實,注冊表中提供了三個這樣的鍵:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunServices
這三個鍵字的區別是:
Run:此鍵字下的應用程序在系統啟動的時候會自動運行;
RunOnce:此鍵字下的應用程序在系統下一次啟動的時候會自動運行,以后不再運行;
RunServices:功能和“Run”一樣,只是應用程序被啟動的時候不同而已。
現在您一定知道該如何利用注冊表達到您的要求了。實際上許多安裝軟件在安裝向導完成后要您重新啟動才能完成最終的安裝。它就是把安裝向導所需做的最后工作的程序寫到“RunOnce”下實現的。但是,若只利用VB本身的那四個函數顯然是無法實現此功能的。筆者在實踐中通過調用API函數很好地解決了VB本身訪問注冊表的局限性,并把它做成了一個類模塊。所以調用起來非常方便。由于篇幅有限我只能從中抽取一部分來講,這一部分也是可以獨立運行的。讀者想要完整的源代碼請與我聯系(yue_xiang@263.net)。
下面是應該放到您的模塊中的聲明部分代碼:
OptionExplicit
'注冊表的入口常量
PublicConstHKEY_CLASSES_ROOT=&H80000000
PublicConstHKEY_CURRENT_USER=&H80000001
PublicConstHKEY_LOCAL_MACHINE=&H80000002
PublicConstHKEY_USERS=&H80000003
'注冊表的訪問權限常量
PublicConstKEY_QUERY_VALUE=&H1
PublicConstKEY_SET_VALUE=&H2
PublicConstKEY_CREATE_SUB_KEY=&H4
PublicConstKEY_ENUMERATE_SUB_KEYS=&H8
PublicConstKEY_NOTIFY=&H10
PublicConstKEY_CREATE_LINk=&H20
PublicConstKEY_ALL_access=&H3F
'打開/建立鍵值的可選項常量
PublicConstREG_OPTION_NON_VOLATILE=0&
PublicConstREG_OPTION_VOLATILE=&H1
'建立新鍵或打開已存在的鍵常量
PublicConstREG_CREATED_NEW_KEY=&H1
PublicConstREG_OPENED_EXISTING_KEY=&H2
'預先定義的訪問注冊表的權限常量
PublicConstSTANDARD_RIGHTS_ALL=&H1F0000
PublicConstSPECIFIC_RIGHTS_ALL=&HFFFF
'API的返回代碼常量
PublicConstERROR_SUCCESS=0&
PublicConstERROR_ACCESS_DENIED=5
PublicConstERROR_NO_MORE_ITEMS=259
'返回數值類型常量
PublicConstREG_NONE=(0)
PublicConstREG_SZ=(1)
PublicConstREG_EXPAND_SZ=(2)
PublicConstREG_BINARY=(3)
PublicConstREG_DWord=(4)
PubliCConStREG_DWORD_LITTLE_ENDIAN=(4)
PublicConstREG_DWORD_BIG_ENDIAN=(5)
PublicConstREG_LINK=(6)
PublicConstREG_MULTI_SZ=(7)
PublicConstREG_RESOURCE_LIST=(8)
PublicConstREG_FULL_RESOURCE_DESCR'關閉關鍵字
RegCloseKeyphkResult
現在用注冊表編輯器去查看一下注冊表,一定生成了您所需的鍵值。
再例如:現在我想把剛才建立的鍵值刪掉,那您只需如下調用即可:
dimsuccessaslong
success=RegDeleteKey(HKEY_LOCAL_MACHINE,"Network/MyApi")
二.用API生成平面工具條
相信許多VB愛好者都曾千方百計地想使自己的工具條像Word97中的工具條一樣COOL起來。往往我們不得不去借用別人做好的ActiveBar控件,這樣先不說自己的程序變得大了,而且說實話那個控件并不好用。筆者在用VC5編程的時候用基類函數SendMessageLong()、FindWindowEx()輕松實現了這種COOL的效果。受此啟發在VB5中調用這兩個API也實現了同樣的效果。下面是源代碼:
把以下程序加到您的模塊中:
'----------------------
'常量聲明
'----------------------
PublicConstWM_USER=&H400
'用戶自定義消息的起點
PublicConstTB_SETSTYLE=WM_USER 56
'設置工具條風格消息
PublicConstTB_GETSTYLE=WM_USER 57
'取得工具條風格消息
PublicConstTBSTYLE_FLAT=&H800
'使工具條COOL起來
PublicConstTBSTYLE_TOOLTTPS=&H100
PublicConstTBSTYLE_WRAPABLE=&H200
PublicConstTBSTYLE_ALTDRAG=&H400
PublicConstTBSTYLE_LIST=&H1000
PublicConstTBSTYLE_CUSTOMERASE=&H2000
'-----------------
'API函數聲明
'-----------------
PublicDeclareFunctionSendMessageLongLib"user32"Alias"SendMessageA"(ByValhwndAsLong,
ByValwMsgAsLong,ByValwParamAsLong,ByVal1ParamAsLong)AsLong
PublicDeclareFunctionFindWindowExLib"user32"Alias"FindWindowExA"(ByValhWnd1AsLong,
ByValhWnd2AsLong,ByVal1psz1AsString,ByVal1psz2AsString)AsLong
'-----------------------
'通用生成平面工具條過程
'入口:工具條的名字
'-----------------------
PublicSubFlatBar(ByValtbAsToolbar)
DimstyleAsLong
DimhToolbarAsLong
DimrAsLong
'獲的工具條窗口句柄
hToolbar=FindWindowEx(tb.hwnd,0&,"ToolBarWindow32",vbNullString)
'獲的當前工具條的風格
style=SendMessageLong(hToolbar,TB_GETSTYLE,0&,0&)
IfstyleAndTBSTYLE_FLATThen
style=styleXorTBSTYLE_FLAT
Else
style=styleorTBSTYLE_FLAT
EndIf
'設置工具條的平面風格
r=SendMessageLong(hToolbar,TB_SETSTYLE,0,style)
tb.Refresh
EndSub
過程FlatBar()的調用方法:
1.在你的窗體上添加Toolbar控件(命名為:myTB)和ImageList控件。按通常的方法一樣在ImageList中播入幾個圖標并和Toolbar綁定建立一個平常的工具條。
2.在窗體的Load()事件中調用FlatBar()
CallFlatBar(myTB)
3.運行,您的工具條一定COOL起來了。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长海县| 杭锦后旗| 商丘市| 福州市| 大方县| 精河县| 柘荣县| 文山县| 马关县| 布尔津县| 锡林郭勒盟| 朝阳市| 多伦县| 石阡县| 华蓥市| 溧水县| 化德县| 枝江市| 宁国市| 沙坪坝区| 永春县| 高尔夫| 丰宁| 冕宁县| 武宁县| 洪洞县| 临颍县| 富宁县| 雷山县| 新津县| 舒城县| 云林县| 山东| 三原县| 永城市| 梁平县| 惠来县| 大城县| 武安市| 隆化县| 塘沽区|