选择显示字体大小

用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;


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons