当前位置:七道奇文章资讯编程技术Delphi编程
日期: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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 怎样ASP.NET MVC调用Delphi开辟的Web报表
  • 利用Delphi6的DBExpress组件衔接远程的Mysql数据库
  • 在C++Builder中利用Delphi文件
  • 在C++Builder中利用Delphi控件
  • <b>用Delphi实现对光驱盘盒的开关掌握</b>
  • 用Delphi程序实现对光驱盘盒的开关掌握
  • <b>用Delphi开辟视频聊天软件</b>
  • <b>用Delphi实现24位真彩色图标</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .