麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

VB的API編程精粹(一)

2019-11-18 17:46:17
字體:
供稿:網(wǎng)友
在上篇的中我們介紹了API編程的基礎知識和一些比較“酷”的API調(diào)用,這期我們將配合專題介紹關于注冊表編程的API函數(shù)及其應用實例,使讀者朋友何能夠?qū)⑶懊鎸W到的注冊表知識推廣到VB編程中,繼續(xù)向VB高手邁進(路漫漫……)。當然,上期說過要介紹更“酷”的API調(diào)用,可不能食言,后半部分介紹的平面工具條的生成定會使您的程序更“炫”!
一.注冊表的API編程
關于注冊表的知識相信您通過前面專題的介紹已經(jīng)有了較深入的了解。系統(tǒng)有六個預定義好的關鍵字,這六個關鍵字是用戶或系統(tǒng)訪問注冊表的入口點。我們常用到的只有前四個關鍵字。而在編程時我們一般用到只是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE這兩個關鍵字,因為與應用程序相關的數(shù)據(jù)存在于這兩個關鍵字下。
許多商品化的軟件或?qū)I(yè)化的軟件在您的機器上首次安裝的時候都會通過改寫注冊表來完成軟件的正確安裝運行,夢想成為編程高手的你當然需要掌握讀寫注冊表這一技術。利用好注冊表會為您的應用程序增色不少。
雖然VB本身提供了四個關于注冊表的函數(shù)GetSetting,SaveSetting、GetAllSettings、DeleteSetting(這四個函數(shù)的使用比較簡單讀者可以參考VB的聯(lián)機幫助),但是這四個函數(shù)只能在“HKEY_CURRENT_USER/Software/VBandVBAPRogramSettings”下讀取、刪除、修改鍵值。對于一般的應用程序利用它們可以達到您的目的,對于特殊的要求利用它們就顯的無能為力了。下面舉一個例子說明它們的局限性。
熟悉DOS操作系統(tǒng)的讀者都知道,可以編寫一個“Autoexec.bat”的批處理文件來實現(xiàn)某一個應用程序在系統(tǒng)啟動的時候自動運行,在Win95中我們可以把應用程序的快捷方式放到系統(tǒng)的啟動組中來達到同樣的效果。但是,假如我需要在我的應用程序首次安裝以后就能自動達到這種效果,那該如何呢?其實,注冊表中提供了三個這樣的鍵:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunServices
這三個鍵字的區(qū)別是:
Run:此鍵字下的應用程序在系統(tǒng)啟動的時候會自動運行;
RunOnce:此鍵字下的應用程序在系統(tǒng)下一次啟動的時候會自動運行,以后不再運行;
RunServices:功能和“Run”一樣,只是應用程序被啟動的時候不同而已。
現(xiàn)在您一定知道該如何利用注冊表達到您的要求了。實際上許多安裝軟件在安裝向?qū)瓿珊笠匦聠硬拍芡瓿勺罱K的安裝。它就是把安裝向?qū)枳龅淖詈蠊ぷ鞯某绦驅(qū)懙健癛unOnce”下實現(xiàn)的。但是,若只利用VB本身的那四個函數(shù)顯然是無法實現(xiàn)此功能的。筆者在實踐中通過調(diào)用API函數(shù)很好地解決了VB本身訪問注冊表的局限性,并把它做成了一個類模塊。所以調(diào)用起來非常方便。由于篇幅有限我只能從中抽取一部分來講,這一部分也是可以獨立運行的。讀者想要完整的源代碼請與我聯(lián)系([email protected])。
下面是應該放到您的模塊中的聲明部分代碼:
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
'返回數(shù)值類型常量
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
現(xiàn)在用注冊表編輯器去查看一下注冊表,一定生成了您所需的鍵值。
再例如:現(xiàn)在我想把剛才建立的鍵值刪掉,那您只需如下調(diào)用即可:
dimsuccessaslong
success=RegDeleteKey(HKEY_LOCAL_MACHINE,"Network/MyApi")
二.用API生成平面工具條
相信許多VB愛好者都曾千方百計地想使自己的工具條像Word97中的工具條一樣COOL起來。往往我們不得不去借用別人做好的ActiveBar控件,這樣先不說自己的程序變得大了,而且說實話那個控件并不好用。筆者在用VC5編程的時候用基類函數(shù)SendMessageLong()、FindWindowEx()輕松實現(xiàn)了這種COOL的效果。受此啟發(fā)在VB5中調(diào)用這兩個API也實現(xiàn)了同樣的效果。下面是源代碼:
把以下程序加到您的模塊中:
'----------------------
'常量聲明
'----------------------
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函數(shù)聲明
'-----------------
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()的調(diào)用方法:
1.在你的窗體上添加Toolbar控件(命名為:myTB)和ImageList控件。按通常的方法一樣在ImageList中播入幾個圖標并和Toolbar綁定建立一個平常的工具條。
2.在窗體的Load()事件中調(diào)用FlatBar()
CallFlatBar(myTB)
3.運行,您的工具條一定COOL起來了。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: teensexhd| 亚州欧美视频 | 天天夜夜操操 | av老司机久久 | 欧美精品免费一区二区三区 | 久久99在线 | 精品久久久91 | 香蕉黄色网 | 午夜影视一区二区 | 爽妇网国产精品 | 国产精品亚洲一区二区三区在线观看 | 天海翼无删减av三级在线观看 | 久久久久久久一区二区 | 精品国产一区二区三区四区阿崩 | 线观看免费完整aaa 一二区成人影院电影网 | 成人午夜在线免费观看 | 精品国产三级a | 久久露脸国语精品国产91 | 激情小说区 | 欧美成人免费在线视频 | 日本欧美一区二区三区视频麻豆 | 国产成人精品区一区二区不卡 | 亚洲五码在线观看视频 | 一级毛片电影网 | 亚洲免费观看视频 | 国产999精品久久久久 | 性高潮一级片 | 成年性羞羞视频免费观看 | 国产成人精品免费视频大全办公室 | 亚洲一区在线观看视频 | 色网免费观看 | 免费毛片视频播放 | 涩涩伊人| 蜜桃网在线观看 | 亚洲第一页夜 | 毛片在线免费观看网址 | 久久国产精品一区 | 国产精品一区二区三区在线 | 极品大长腿啪啪高潮露脸 | 成人毛片100部 | 久久亚洲精品国产一区 |