![]() ![]() |
|
用DEPHI、VFP自动检测计算机设备 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:51:25 文章录入:杜斌 责任编辑:杜斌 | |
|
|
计算机设备有很多,如:光驱、声卡、键盘和鼠标等。如何在计算机应用程序中自动控制这些设备的使用,将给你的工作带来极大的方便。笔者用DEPHI和VFP编制了两组应用实例自动检测CD-ROM光驱和声卡。 一、用DEPHI、VFP自动检测CD-ROM光驱的方法: 1.检测的关键:调用WINDOWS的API函数GetDriveType.即以微机上的可能盘符(A~Z)的对应值(0~25)作为该函数的入口参数对该函数进行调用,然后检查其返回值.若返回值为4,则表示检测到光驱或网络驱动器,否则未检测到. 2.WINDOWS的API函数GetDriveType,其语法格式如下: Declare Function GetDriveType Lib "Kernel" (ByVal DriveNumber As Integer) As Integer 入口参数DriveNumber的取值为0,1,2,3等,其中A驱动器为0;B驱动器B为1;C驱动器为2;依此类推.函数返回值是0为未检测到驱动器;2为软驱;3为硬盘;4为CD-ROM光驱或网络驱动器. 3.应用实例: 实例一:用DEPHI 4.0自动检测CD-ROM光驱。 窗体 FORM1 用DEPHI 4.0自动检测CD-ROM光驱 procedure TForm1.FormCreate(Sender: TObject); var drives,drivetype:string; drvs:pchar; x,i:integer; begin for i:=0 to 25 do begin drives:=chr(65+i)+:\; strpcopy(drvs,drives); x:=getdrivetype(drvs); case x of 2:drivetype:=drives+是可移动驱动器。; 3:drivetype:=drives+是固定驱动器。; 4:drivetype:=drives+是网络驱动器。; 5:drivetype:=drives+是CD-ROM驱动器。; 6:drivetype:=drives+是RAMDISK驱动器。; else drivetype:=drives+不是驱动器。; END; showmessage(drivetype); end; end;
实例二:用VFP 6.0自动检测CD-ROM光驱。 DECLARE LONG GetDriveType in win32api string nDrive clea for cs=asc("A") to asc("Z") drvs=chr(cs)+":\" drives=GetDriveType(drvs) do case case drives=2 @ 2,10 say subs(drvs,1,1)+"驱动器是可移动驱动器。" case drives=3 @ 3,10 say subs(drvs,1,1)+"驱动器是固定驱动器。" case drives=4< @ 4,10 say subs(drvs,1,1)+"驱动器是远程驱动器。" case drives=5 @ 5,10 say subs(drvs,1,1)+"驱动器是CD-ROM。" case drives=6 @ 6,10 say subs(drvs,1,1)+"驱动器是RAMDISK驱动器。" other @ 7,10 say "其余驱动器无效!" endc endf retu 二、用DEPHI、VFP自动检测声卡的方法: 1.检测的关键:调用WINDOWS的API函数waveOutGetNumDevs,它可以用来检测声音设备安装的数目. 2.WINDOWS的API函数waveOutGetNumDevs,其语法格式如下: Declare Function waveOutGetNumDevs Lib "MMSYSTEM" () As Integer 入口参数:无,函数返回值为0,则表示系统中未装声卡;否则必有声卡. 3.应用实例: 实例一:用DEPHI 4.0自动检测声卡。 (1)建立含有如下控件的窗体: NAME CAPTION FORM1 用DEPHI自动检测声卡 MEMO1 空 MEDIAPLAYER1
(2)程序清单:在USES语句中加入mmsystem. procedure TForm1.FormCreate(Sender: TObject); var devs:integer; begin devs:=waveOutGetNumDevs(); if devs$#@60;$#@62;0 then memo1.lines.add(计算机中有声卡,可以播放DING.WAV!); mediaplayer1.filename:=c:\windows\media\ding.wav; mediaplayer1.open; mediaplayer1.play; end; end. 实例二:用VFP 6.0自动检测声卡。 DECLARE LONG waveOutGetNumDevs in winmm DECLARE LONG mciSendString in winmm string,long,long,long x=waveOutGetNumDevs() if x$#@60;$#@62;0 wait wind "您的计算机中有声卡,可以播放DING.WAV!" cmstrs="play c:\windows\media\ding.wav" x=MciSendString(cmstrs,0,0,0) else wait wind "您的计算机中没有安装声卡!" endi retu 以上程序在WINDOWS 98、DEPHI 4.0、VISUAL FOXPRO 6.0 环境中运行通过. |
|
![]() ![]() |