您现在的位置: 天下网吧 >> 网吧天地 >> 天下码农 >> 后端开发 >> PHP >> 正文

用Delphi实现对光驱盘盒的开关控制

2008-11-7网络佚名
  摘要 介绍在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;

 

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛 https://bbs.txwb.com

关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩

本文来源:网络 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下