日期:2011-03-20 18:14:00 来源:本站整理
用Delphi程序实现对光驱盘盒的开关掌握[Delphi编程]
本文“用Delphi程序实现对光驱盘盒的开关掌握[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
择要 介绍在Delphi编程环境下实现开启光驱盘盒的主要技术和办法,该程序以托盘方法驻留状况栏中,可以设置为随系统启动而启动,不但可以掌握一个光驱,并且还能动态检测某台电脑上的光驱数目,成立呼应的掌握菜单,实现有挑选性掌握光驱.
关键词 Delphi程序 光驱掌握 弹出菜单 历程 事件
引言
普通,我们翻开和关闭光驱是通过按动光驱上开关按钮来实现的,但有时刻手动方法显得很不便利,特别是在一台电脑上安装多个光驱的情形下,同光阴驱的损耗在手动方法下也是最大的,Delphi是个功效强盛且简单的编程工具,可不可以操纵编程办法来代替手工操作呢?通过摸索与实践终于将这一设法操纵Delphi编程得以实现,该程序不但可以掌握一个光驱,并且还可以挑选性地掌握某个光驱和全部光驱的开启与关闭,这对那些操作多个光驱而又懒得弯腰的电脑人确切会便利很多.
编程思绪
编程思绪:通过弹出菜单及事件掌握光驱.
1、弹出菜单的实现
运行Delphi并新建一个工程, 在uses部份引用Registry, Mmsystem两个单元文件,在窗体中增添一个名称为PopmenuCDctrl弹出菜单组建,并增添6个菜单项,窗体TForm1的Popupmenu 项设为PopmenuCDctrl,PopmenuCDctrl的名称和主要属性赋值见表1.
表1 TPopupmenu组建属性表
名称 |
组件范例 |
组件CAPTION |
主要历程及事件 |
阐明 |
mMenuTitle |
TMenuItem |
==光驱掌握== |
无 |
弹出菜单标签 |
mOpenCDROM |
TMenuItem |
翻开CDROM盒 |
生成子菜单( |
翻开光驱子菜单 |
mCloseCDROM |
TMenuItem |
关闭CDROM盒 |
生成子菜单 |
关闭光驱子菜单 |
mAutoRun |
TMenuItem |
置启动时履行 |
mAutoRunClick |
开机运行 |
mNotAutoRun |
TMenuItem |
自动履行无效 |
SetCDAutoRun(False) |
撤消开机运行 |
mCloseApp |
TMenuItem |
关闭掌握程序 |
Application.Terminate; |
关闭掌握程序 |
设置后的弹出菜单效果如图1所示所示,此中mOpenCDROM(翻开CDROM盒)和mCloseCDROM(关闭CDROM盒)菜单将按照电脑中光驱个数自动生成呼应的菜单栏目.
图1 弹出菜单效果图
2、声明的变量和函数:
… … procedure mCloseAppClick(Sender: TObject); procedure mAutorunClick(Sender: TObject); procedure mNotautorunClick(Sender: TObject); procedure PopmenuCDctrlPopup(Sender: TObject); private { Private declarations } procedure MenuOpenCdrom(Sender : TObject); procedure MenuCloseCdrom(Sender : TObject); var Form1: TForm1; MYDRIVE:char; Mycdrom:pchar; tmppopmenu1,tmpPopmenu2:TMenuItem; function OpenCDROM(Drive:pChar):Boolean; function CloseCDROM(Drive:pChar):Boolean; implementation … … |
1)列出光驱数目和生成子菜单
procedure TForm1.PopupMenu1Popup(Sender: TObject); var Drive :char; begin; mOpenCdrom.Clear; //排除翻开光驱子菜单项 mCloseCdrom.Clear; //排除翻开光驱子菜单项 //列出光驱数目和生成子菜单 for Drive:='a' to 'z' do begin Case GetDriveType(Pchar(Drive+':\')) of DRIVE_REMOVABLE: MyDrive:=Drive; DRIVE_FIXED: MyDrive:=Drive; DRIVE_CDROM: begin MyDrive:=Drive; tmppopmenu1:=TMenuItem.Create(Self); tmppopmenu1.AutoHotkeys:=maManual; tmppopmenu1.OnClick := menuOpenCdrom; mOpenCDROM.Add(tmppopmenu1); tmppopmenu1.Caption :=UpperCase(mydrive)+':'; tmppopmenu2:=TMenuItem.Create(Self); tmppopmenu2.AutoHotkeys:=maManual; tmppopmenu2.OnClick := menuCloseCdrom; mCloseCDROM.Add(tmppopmenu2); tmppopmenu2.Caption :=UpperCase(mydrive)+':'; end; DRIVE_RAMDISK: MyDrive:=Drive; DRIVE_REMOTE: MyDrive:=Drive; end; end; //当光驱多于1个生成"全部光驱"掌握菜单项 if mOpenCDROM.Count > 1 then begin tmppopmenu1:=TMenuItem.Create(Self); tmppopmenu1.Caption:='全部光驱'; tmppopmenu1.OnClick := menuOpenCdrom; mOpenCDROM.Add(tmppopmenu1); tmppopmenu2:=TMenuItem.Create(Self); tmppopmenu2.Caption:='全部光驱'; tmppopmenu2.OnClick := menuCloseCdrom; mCloseCDROM.Add(tmppopmenu2); end; end; |
2)翻开CDROM盒的函数
function OpenCDROM(Drive:pChar):Boolean; // 翻开CDROM var Res:MciError; OpenParm:TMCI_OPEN_Parms; Flags:Dword; s:string; DeviceID:Word; begin Result:=false; s:=Drive+':'; flags:=mci_Open_Type or mci_Open_Element; With OpenParm do begin dwCallBack:=0; lpstrDeviceType:='CDAudio'; lpstrElementName:=PChar(s); end; Res:=mciSendCommand(0,mci_Open,Flags,Longint(@OpenParm)); If Res<>0 then exit; DeviceID:=OpenParm.wDeviceID ; try Res:=mciSendCommand(DeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0); If Res=0 then exit; Result:=True; finally mciSendCommand(DeviceID,mci_Close,Flags,Longint(@OpenParm)); end; end; |
以上是“用Delphi程序实现对光驱盘盒的开关掌握[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论