亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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起來了。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品久久久| 亚洲人成欧美中文字幕| 秋霞午夜一区二区| 91精品国产高清久久久久久| 欧美电影免费观看电视剧大全| 国产精品福利在线| 一区二区三区国产视频| 日韩在线观看免费高清| 久久久久久久久久国产精品| 日韩高清电影免费观看完整版| 国产精品久久激情| 久久久亚洲影院你懂的| 国产精品一区二区三| 性日韩欧美在线视频| 91精品在线观| 97国产一区二区精品久久呦| 在线播放日韩专区| 国色天香2019中文字幕在线观看| 亚洲精品wwww| 欧美精品成人在线| 78m国产成人精品视频| 97色在线观看免费视频| 欧美日韩国产在线看| 色噜噜狠狠色综合网图区| 国产伦精品一区二区三区精品视频| 久久久亚洲天堂| 欧美视频中文字幕在线| 伊人成人开心激情综合网| 少妇高潮久久77777| 国产亚洲精品久久久优势| 欧美老肥婆性猛交视频| 原创国产精品91| 91精品国产91久久久久久| 久久久女人电视剧免费播放下载| 国产精品wwww| 日韩国产高清污视频在线观看| 91免费电影网站| 日韩久久免费电影| 亚洲精品美女免费| 91精品久久久久久久久青青| 日韩av中文字幕在线| 欧美疯狂做受xxxx高潮| 综合久久五月天| 欧美精品一区二区免费| 亚洲欧美福利视频| 91在线视频精品| 日韩国产欧美精品一区二区三区| 中文字幕欧美日韩va免费视频| 国产精品99久久久久久www| 国产成人激情小视频| 欧美老肥婆性猛交视频| 亚洲xxx自由成熟| 国产精品久久久久久久久久久久久久| 久久99精品视频一区97| 成人情趣片在线观看免费| 亚洲女在线观看| 欧美成人合集magnet| 久久精品中文字幕电影| 久久久精品国产一区二区| 日韩一区视频在线| 成人精品视频久久久久| 国产亚洲精品一区二555| 色哟哟入口国产精品| 国产精品久久久久久久久久久久久| 成人性生交大片免费看小说| 国产精品最新在线观看| 国产日韩精品在线| 91国偷自产一区二区三区的观看方式| 国产婷婷色综合av蜜臀av| 日韩a**站在线观看| 亚洲va男人天堂| 日韩av电影在线播放| 亚洲美女激情视频| 国产精品欧美一区二区| 国产精品久久久久久久久男| 亚洲一区精品电影| 在线视频日韩精品| 色偷偷88888欧美精品久久久| 欧美另类极品videosbest最新版本| 久久综合九色九九| 伊人青青综合网站| 国产ts人妖一区二区三区| 亚洲国产精品一区二区三区| 久久免费国产精品1| 亚洲成人在线视频播放| 亚洲精品二三区| 555www成人网| 亚洲欧美日韩精品久久| 久久久久亚洲精品| 亚洲人a成www在线影院| 国产亚洲精品va在线观看| 97在线观看免费| 色视频www在线播放国产成人| 欧美理论片在线观看| 8090理伦午夜在线电影| 欧美精品一区二区免费| 国产亚洲精品日韩| 国内精品一区二区三区四区| 宅男66日本亚洲欧美视频| 欧美壮男野外gaytube| 亚洲国产精品久久久久| 一本色道久久88亚洲综合88| 欧美成人h版在线观看| 66m—66摸成人免费视频| 国产在线拍揄自揄视频不卡99| 亚洲人成网站999久久久综合| 热门国产精品亚洲第一区在线| 精品中文字幕在线观看| 伦理中文字幕亚洲| 国产主播欧美精品| 亚洲国产成人精品电影| 色99之美女主播在线视频| 成人午夜激情免费视频| 久久久久久久久久婷婷| 九九热精品视频在线播放| 国产精品1234| 久久影院免费观看| 欧美日本精品在线| 欧美另类极品videosbestfree| 最新国产精品亚洲| 456国产精品| 久久视频免费在线播放| 国产亚洲精品高潮| 欧美激情一二区| 欧美中文在线观看| 欧美激情女人20p| 亚洲国产欧美久久| 中文字幕亚洲无线码a| 超碰精品一区二区三区乱码| 伊人久久男人天堂| 久久久精品中文字幕| 欧美性极品xxxx做受| 伊人伊成久久人综合网站| 国产一区av在线| 亚洲美女av在线| 2020久久国产精品| 97国产精品视频人人做人人爱| 中文字幕亚洲第一| 久久久久久成人精品| 羞羞色国产精品| 亚洲第一男人av| 蜜臀久久99精品久久久无需会员| 91中文在线视频| 久久久久久久久久久网站| 国产丝袜精品第一页| 992tv成人免费影院| 国产不卡精品视男人的天堂| 亚洲jizzjizz日本少妇| 国产精品美女无圣光视频| 国产一区二区久久精品| 亚洲精品久久久久久久久久久久| 亚洲欧美在线免费| 日韩电影中文字幕一区| 日韩网站在线观看| 亚洲女同性videos| 91影院在线免费观看视频| 国内外成人免费激情在线视频| 日韩av一区在线观看| 国产精品自产拍在线观看| 7777精品久久久久久| 国产不卡视频在线| 日韩电影视频免费| 色狠狠久久aa北条麻妃| 欧美美女18p|