Software 版 (精华区)

发信人: checcy (老巴夺), 信区: Software
标  题: 在多媒体软件中 自动检测CD-ROM和声卡 
发信站: 哈工大紫丁香 (Sat Apr  4 15:58:12 1998), 转信

在多媒体软件中 
自动检测CD-ROM和声卡 
蔡可训 
  VB是目前WINDOWS平台上非常流行的可视化编程工具,
采用VB编制多媒体应用软件非常简单和快捷。一般在多媒
体系统中,CD-ROM光驱和声卡都是不可缺少的重要设备。
笔者在用VB开发的多媒体教学软件时,遇到了一个问题,由
于用户使用的每台微机的光驱和声卡情况不尽相同,如何
由程序自动检测系统中是否安装了CD-ROM光驱和声卡。经
过摸索,成功地解决了这一问题。

  一、用VB自动检测CD-ROM光驱的方法:

  1检测的关键:调用API函数GetDriveType。即以微
机上的可能盘符(A~Z)的对应值(0~25)作为该函数的入口
参数对该函数进行调用,然后检查其返回值。若返回值为4
,则表示检测到光驱或网络驱动器。

  2WINDOWS的API函数GetDriveType,其语法格式如下
:

  Declare Function GetDriveType Lib "Kernel" (By
Val DriveNumber As Integer) As Integer 

  入口参数:DriveNumber的取值为0、1、2、3等。函
数返回值是0为未检测到驱动器;2为软驱;3为硬盘;4为C
D-ROM光驱或网络驱动器。 

   3实现方法:

  控 件 NAME CAPTION

  窗体 FORM1 用VB自动检测CD-ROM光驱

  图像框 IMAGE1

  以下代码适用于WINDOWS 32和VB 30环境下: 

  Declare Function GetDriveType% Lib ″Kernel″
(ByVal nDrive%) 

  Sub Form_Click ()

  Dim DRIVE_NUMS%, DRIVE_VALUE%, DRIVE_CHRS$,
PIC_PATH$

  For DRIVE_NUMS% = 0 To 25

   DRIVE_VALUE% = GetDriveType(DRIVE_NUMS%)


   If DRIVE_VALUE% = 4 Then

   DRIVE_CHRS$ = Chr$(DRIVE_VALUE% + 65)M
sgBox ″CD-ROM盘符:″ + DRIVE_CHRS$

   PIC_PATH$ = DRIVE_CHRS$ + ″:\FPW26\FOX
.BMP″

   IMAGE1Picture = LoadPicture(PIC_PATH$
)

   End If

  Next

  End Sub

  以下代码适用于WINDOWS95,VB 40环境下:

  Declare Function GetDriveType Lib ″Kernel32″
Alias "GetDriveTypeA" (ByVal DriveNumber As Strin
g) As Integer 

  Sub Form_Click ()

  Dim DRIVE_NUMS%, DRIVE_VALUE%, DRIVE_CHRS$,
PIC_PATH$

  For DRIVE_NUMS% = 0 To 25

   DRIVE_CHRS$ = CHR$(DRIVE_NUMS% + 65)&″:


   DRIVE_VALUE% = GetDriveType(DRIVE_CHRS$)

   If DRIVE_VALUE% = 5 Then

   MsgBox ″CD-ROM盘符:″ + DRIVE_CHRS$


   PIC_PATH$=DRIVE_CHRS$+″\FPW26\FOX.B
MP″

   IMAGE1.Picture = LoadPicture(PIC_PATH$


   End If

  Next

  End Sub

  二、用VB自动检测声卡的方法:

  1.检测的关键:调用API函数waveOutGetNumDevs,可以
用来检测声音设备安装的数目。

  2.WINDOWS的API函数waveOutGetNumDevs,其语法格式
如下:

   Declare Function waveOutGetNumDevs Lib ″MMSY
STEM″() As Integer

  入口参数:无,返回值为0,则表示系统中未装声卡 

  3.实现方法:

   控 件 NAME CAPTION

   窗体 FORM1 用VB自动检测声卡

   OLE2.0 OLE1

   Declare Function waveOutGetNumDevs Lib ″MM
SYSTEM″() As Integer(适用于WINDOWS32,VB 3.0环境下
)

   Declare Function waveOutGetNumDevs Lib ″WI
NMM″Alias ″waveOutGetNumDevs″() As Long (适用
于WINDOWS95,VB 4.0环境下)

   Sub Form_Click ()

   DIM SOUNDS%

   SOUNDS = waveOutGetNumDevs()

   If SOUNDS = 0 Then

   MsgBox ″您的计算机中没有安装声卡
!″

   Else MsgBox ″您的计算机中有声卡,可以播
放DINGWAV!″

   OLE1.Class = ″SOUNDREC″

   OLE1.SourceDoc = ″C:\WINDOWS\DING
WAV″

   OLE1.Action = 1

   OLE1.Action = 7

   End If

   End Sub

  以上程序在同创P/133上、中文WINDOWS 3.2、WINDOW
S 95、VB 3.0、4.0 FOR WINDOWS环境中运行通过,用户可
将上述代码模块适当修改加入到自己的多媒体软件中去,
从而实现对CD-ROM光驱和声卡的自动检测。 -- 
*********************************
Chengyan Che - Software Freelancer
Harbin, P.R.China
mailto: checcy@public.hr.hl.cn
ICQ: 5116726

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: checcy@public.hr.hl.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.511毫秒