• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在VB中設置常用的外部設備

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 24次 | 進入軟件測試論壇討論

    領測軟件測試網 空軍導彈學院 劉建都

    ---- 本文首先說明了在VB中設置常用外圍設備的方法。然后給出了一個實際例子。

    ---- 1. 在VB中啟動控制面板來設置外部設備

    ---- 在VB中對外部設備進行設置的最簡單的方法是直接啟動Windows的控制面板,讓使用者直接使用控制面板來進行設置,不僅輕松,也不易出錯。雖然控制面板不是一個.exe文件,但通過VB提供的Shell語句可調出控制面板,具體的語句如下:

    Shell “rundll32.exe shell32.dll,
    Control_RunDLL”,vbNormalFocus

    ---- 以上語句的作用就好象是按下“開始”菜單的“設置->控制面板”一樣,如果希望直接調出控制面板中的子功能設置窗口,則是要對上述的語句中加適當的修改,直接調出常用外部設備設置窗口的語句如下:
    Shell “rundll32.exe shell32.dll,Control_RunDLL
    desk.cpl”,vbNormalFocus ‘調出顯示器的設置窗口
    Shell “rundll32.exe shell32.dll,Control_RunDLL main.cpl”,
    vbNormalFocus ‘調出鼠標的設置窗口
    Shell “rundll32.exe shell32.dll,Control_RunDLL main.cpl @1”,
    vbNormalFocus ‘調出鍵盤的設置窗口
    Shell “rundll32.exe shell32.dll,Control_RunDLL main.cpl @2”,
    vbNormalFocus ‘調出打印機的設置窗口

    ---- 大家可能已經注意到,調出子功能設置窗口的命令是在調出控制面板主屏幕的命令中加了以.cpl為擴展名的文件及其參數,要使上述命令順利的執行,在機器的Windows\System的目錄下必須有desk.cpl和main.cpl這兩個文件;實際上,如果我們在資源管理器中雙擊這一類以為.cpl擴展名的文件,結果也可以執行該文件而顯示出控制面板的某一個子功能。
    ---- 如果您想知道您的機器中的某些.cpl文件是何用途,最簡單的方法就是執行它們。由于“鍵盤”和“打印機”等子功能都沒有對應的.cpl文件,它們均包含在main.cpl之中,若要調出它們須加入相應的參數,例如:調出鍵盤的設置窗口加入“@1”, 調出打印機的設置窗口加入“@2”等。當我們在VB中打開了控制面板主窗口或控制面板中子功能設置的窗口后,就可很方便對常用的外部設備進行設置,設置完成后,關閉打開的設置窗口,又會回到VB運行環境下,就可以進行其它的工作了。

    ---- 2. 直接利用程序來設置外部設備

    ---- 有時候我們不想調出控制面板,而想直接利用程序來設置常用的外部設備,此時最常用的方法是調用Windows API函數來完成常用外部設備的設置。

    ---- 2.1 調用SystemParametersInfo API函數來設置鍵盤、鼠標和顯示器

    ---- SystemParametersInfo API函數可用來設置系統的參數,讓我們首先看看這個函數的定義語句及參數的含義:

    Declare Function SystemParametersInfo Lib "user32"
    Alias "SystemParametersInfoA" (ByVal uAction As Long,
    ByVal uParam As Long, ByVal lpvParam As Any, ByVal
    fuWinIni As Long) As Long
    其中:uAction—決定函數用途的參數,此參數的設置值有90種,
    完整的設置值及每一種設置值的意義請查閱MSDN/CD
    (以SystemParametersInfo為關鍵值進行查詢)。
    uParam—此參數的用途取決于uAction參數
    lpvParam—此參數的用途取決于uAction參數
    fuWinIni—此參數一般設置為:SPIF_UPDATEINIFILE(值為1)
    Or SPIF_SENDWININICHANGE(值為2),其意義為立即更新Win.ini
    (或登錄數據庫)并且對其它窗口廣播(也就是通知所有執行中
    的窗口,系統狀態已經有所改變)。
    下面就分別說明用該函數來設置常用外部設備的方法。

    ---- 2.1.1 設置健盤的延時時間及重復速度
    ---- 要設置健盤的延時時間,參數uAction的值為:SPI_SETKEYBOARDDELAY(值為23);參數uParam的值的范圍從0(延時時間約250毫秒)到3(延時時間約1秒),并且與硬件有一定的關系,下例中設置該參數的值為0;參數lpvParam的值為:vbNullString ;參數fuWinIni的值如前所述;然后在VB中用下面的語句就可使健盤的延時時間變為約250毫秒。

    SystemParametersInfo SPI_SETKEYBOARDDELAY, 0,
    vbNullString,
    SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
    要設置健盤的重復速度,參數uAction的值為:

    ---- SPI_SETKEYBOARDSPEED(值為11);參數uParam的值的范圍從0(每秒重復約2.5次)到31(每秒重復約30次),下例中設置該參數的值為31;參數lpvParam的值為:vbNullString ;參數fuWinIni的值如前所述;然后在VB中用下面的語句就可使健盤的重復速度變為每秒重復約30次。
    SystemParametersInfo SPI_SETKEYBOARDSPEED, 31,
    vbNullString,
    SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    ---- 2.1.2 設置鼠標的雙擊時間及按鈕配置
    ---- 要設置鼠標的雙擊時間,參數uAction的值為:SPI_SETDOUBLECLICKTIME(值為23);參數uParam的值的范圍從100毫秒900毫秒,下例中設置該參數的值為900毫秒;參數lpvParam的值為:vbNullString ;參數fuWinIni的值如前所述;然后在VB中用下面的語句就可使鼠標的雙擊時間變為約900毫秒。

    SystemParametersInfo SPI_SETDOUBLECLICKTIME, 900,
    vbNullString,
    SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    ---- 要設置鼠標的按鈕配置,參數uAction的值為:SPI_SETMOUSEBUTTONSWAP(值為11);參數uParam的值的可為True(習慣用右手)或False(習慣用右手),下例中設置該參數的值為True(習慣用右手);參數lpvParam的值為:vbNullString ;參數fuWinIni的值如前所述;然后在VB中用下面的語句就可使鼠標的按鈕配置設置為習慣用右手。
    SystemParametersInfo SPI_SETMOUSEBUTTONSWAP,
    True,vbNullString,
    SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    ---- 2.1.3 設置屏幕保護程序的啟用狀態及等待時間
    ---- 要設置屏幕保護程序的啟用狀態,參數uAction的值為:SPI_SETSCREENSAVEACTIVE(值為23);參數uParam的值的可為True(啟用屏幕保護程序)或False(不啟用屏幕保護程序),下例中設置該參數的值為True(啟用屏幕保護程序);參數lpvParam的值為:0& ;參數fuWinIni的值如前所述;然后在VB中用下面的語句就可使屏幕保護程序的為啟用狀態。

    SystemParametersInfo SPI_SETSCREENSAVEACTIVE,True,
    0&, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    ---- 要設置屏幕保護程序的等待時間,參數uAction的值為:
    SPI_SETSCREENSAVEACTIVEOUT(值為23);參數uParam的值為屏幕保護程序的等待時間,單位為秒,下例中設置等待時間為240秒(4分鐘);參數lpvParam的值為:0& ;參數fuWinIni的值如前所述;然后在VB中用下面的語句就可使屏幕保護程序的等待時間變為約240秒(4分鐘)。
    SystemParametersInfo SPI_SETSCREENSAVEACTIVEOUT,240,0&,
    SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)

    ---- 2.1 調用其它 API函數來設置打印機和顯示器
    ---- 2.2.1 設置系統的默認打印機

    ---- 要設置系統的默認打印機,我們首先必需知道系統安裝了哪些打印機驅動程序,利用VB所提供的Printers集合對象可列舉出系統已安裝的打印機,方法如下:

    Dim i As Integer
    For i = 0 To Printers.Count - 1
    print Printers(i).DeviceName & ","
    &Printers(i).DriverName & "," & Printers(i).Port
    Next

    ---- 要把已安裝的某個打印機設置為系統的默認打印機,須在Win.ini中的[windows]節區中寫入”Device”Value,然后用通知當前的應用程序,使剛才的設置起作用。
    ---- 具體方法如下:

    Device=打印機名稱,驅動程序名稱,輸出端口
    SendMessage HWND_BROADCAST, WM_WININICHANGE,
    32767&, ByVal "windows"

    ---- 2.2.2 設置屏幕的顏色數及分辨率
    ---- 要改變屏幕的顏色數(例如:16、256、65535)及分辨率(例如:640×480、800×600、1024×768),所要調用的API函數是:

    Declare Function ChangeDisplaySettings Lib
    "user32" Alias "ChangeDisplaySettingsA"
    (lpDevMode As Any, ByVal dwflags As Long) As Long

    ---- 其中:第一個參數是一個用戶自定義的類型,含有與屏幕顏色及分辨率有關的項,將要設置的顏色及分辨率填入該數據結構的變量中,然后使用此參數傳入。
    ---- 第二個參數一般填入CDS_UPDATEREGISTRY(值為1),表示除了改變目前屏幕的設置值外,也改變登數據庫中屏幕的設置值。

    ---- 該函數的返回值若為0時,則表示成功;該函數的返回值若為1時,則表示必須重新啟動才能生效;該函數返回值若為其它值,則表示失敗。

    ---- 下面通過一個具體的例子來說明來把屏幕設置為(800×600)256色的方法。創建一個標準的EXE工程,給其添加一個一般模塊,給窗體添加一個命令按鈕(名稱為command1),并輸入下面的代碼:

    ‘一般模塊中輸入下面的代碼
    '定義要用到的常數、用戶自定義類型、API函數及變量
    Public Const CCHFORMNAME = 32
    Public Const CCHDEVICENAME = 32
    Public Const DM_BITSPERPEL = &H40000
    ‘表示要更改屏幕的顏色數
    Public Const DM_PELSWIDTH = &H80000
    ‘表示要更改屏幕的寬度
    Public Const DM_PELSHEIGHT = &H100000
    ‘表示要更改屏幕的高度
    Public Const CDS_UPDATEREGISTRY = 1
    ‘表示要更改屏幕的高度并修改登錄數據庫
    Type DEVMODE
    dmDeviceName As String * CCHDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    ‘填入自定義類型的大小
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCHFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    ‘2^ dmBitsPerPel =顏色數
    dmPelsWidth As Long
    ‘分辨率的寬
    dmPelsHeight As Long
    ‘分辨率的高
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
    End Type
    Declare Function ChangeDisplaySettings Lib
    "user32" Alias "ChangeDisplaySettingsA"
    (lpDevMode As Any, ByVal dwflags As Long) As Long

    ‘窗體代碼項中的代碼:
    Dim ret As Integer, devM As DEVMODE
    Private Sub Command1_Click()
    devM(List1.ListIndex).dmFields =
    DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL
    devM.dmSize = Len(devM) ‘填入自定義類型的大小
    devM. DmBitsPerPel=8 ‘2^ 8=256色
    devM. dmPelsWidth =800 ‘屏幕的寬度為800
    devM. dmPelsHeight =600 ‘屏幕的高度為600
    ‘devM的其它項可以不填
    Ret= ChangeDisplaySettings(devM, CDS_UPDATEREGISTRY)
    If ret = 0 Then
    MsgBox "設置成功,登錄數據庫也跟著更改了!"
    Elseif ret=1 then
    MsgBox "重開機方能生效!"
    Else
    MsgBox "設置失效!"
    End If
    End Sub

    ---- 運行該工程后,當用戶單擊命令按鈕上時,若你的顯示器支持(800×600)256色的設置,則會將顯示器設置為(800×600)256色,否則顯示提示信息。上述例子筆者用VB6在Windows 95下運行通過,讀者可不加修改的運行;另外要說明的是,除了上述例子外,文中所述的其它設置方法,筆者均用VB6在Windows 95下運行通過,由于篇幅有限,未給出全部代碼。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>