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

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;

  3)关闭CDROM盒的函数

function CloseCDROM(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_CLOSED,0);
   If Res=0 then exit;
   Result:=True;
  finally
   mciSendCommand(DeviceID,mci_Close,Flags,Longint(@OpenParm));
  end;
 end;

  4)置程序启动时执行菜单鼠标事件

procedure TForm1.mAutorunClick(Sender: TObject);
var
 Reg: TRegistry;
begin
 if Application.ExeName='' then // 判断应用程序文件名是否为空
 begin
  MessageBox(Handle,'应用程序名称不可以为空。','错误',MB_OK+MB_ICONERROR);
  Exit;
 end;
 // 初始化AppFileName
 //GetMem(Application.ExeName,256);
 // edit1.text.GetTextBuf(AppFileName,256);
 Reg:=TRegistry.Create;
 try
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  if (Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',False))=True then
  begin
   // 在注册表中添加数值
   Reg.WriteString('MyStartup',Application.ExeName);
  end
  else
   MessageBox(Handle,'打开注册表失败。','错误',MB_OK+MB_ICONERROR);
  finally
   Reg.CloseKey;
   Reg.Free;
  end;
 end;
时间: 2024-08-07 15:45:06

用Delphi实现对光驱盘盒的开关控制(二)的相关文章

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

摘要 介绍在Delphi编程环境下实现开启光驱盘盒的主要技术和方法,该程序以托盘方式驻留状态栏中,可以设置为随系统启动而启动,不但能够控制一个光驱,而且还能动态检测某台电脑上的光驱数目,创建相应的控制菜单,实现有选择性控制光驱. 关键词 Delphi程序 光驱控制 弹出菜单 过程 事件 引言 通常,我们打开和关闭光驱是通过按动光驱上开关按钮来实现的,但有时候手动方式显得很不方便,尤其是在一台电脑上安装多个光驱的情形下,同时光驱的损耗在手动方式下也是最大的,Delphi是个功能强大且容易的编程工具

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

5)程序自动执行无效的菜单鼠标事件 procedure TForm1.mNotautorunClick(Sender: TObject);var Reg: TRegistry;begin Reg:=TRegistry.Create; try Reg.RootKey:=HKEY_LOCAL_MACHINE; if (Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',False))=True then begin // 在注册表中

Delphi中创建MIDAS服务器并注册(MIDAS之二)

Delphi中如何创建并注册MIDAS应用程序服务器COM程序   Delphi提供一些向导(如:RemoteDataModule,Automation Object,TypeLibrary)来自动产生COM程序的结构.   (法1)创建一个普通应用程序服务器        新建一个普通工程,然后通过New->Other->Multitier->Remote DataModule,来自动新建一个COM服务器结构.        注: 要注册创建的MIDAS应用服务器,可以运行应用程序或者

联想企业网盘——打通企业的任督二脉

随着近年信息化的发展,数据在企业中扮演的角色愈发重要.据统计,全球每天新产生20千兆字节的文件,并以每年60%的速度不断增长.如今,各类数据及文档已经成为企业长期发展的战略核心资源,就好比血液,是身体中最重要的组成部分之一.在市场竞争白热化的今天,企业想要跑得更快.跳得更高,则需要血液在身体中更高效地流动,即需要数据更高效地流转,带来更大的业务价值. 但反观目前国内企业数据流转,大都采用数年前较低效的方式,以邮件.FTP以及QQ等IM工具为主.这些工具传递文件时速度不稳定,安全性没保障,并且无法

延长笔记本电脑光驱寿命的十大法则_硬件维护

        一.保持光驱.光盘清洁 光驱采用了非常精密的光学部件,而光学部件最怕的是灰尘污染.灰尘来自于光盘的装入.退出的整个过程,光盘是否清洁对光驱的寿命也直接相关.所以,光盘在装入光驱前应作必要的清洁,对不使用的光盘要妥善保管,以防灰尘污染. 二.定期清洁保养激光头 光驱使用一段时间之后,激光头必然要染上灰尘,从而使光驱的读盘能力下降.具体表现为读盘速度减慢,显示屏画面和声音出现马赛克或停顿,严重时可听到光驱频繁读取光盘的声音.这些现象对激光头和驱动电机及其它部件都有损害.所以,使用者要

光驱不读盘怎么办

光驱不读盘的解决方法 电脑光驱由于经常读盘产生的摩擦,以及其他的一些原因,会出现不能读盘,下面为大家讲解一下光驱不读盘的可能原因与解决方法! 如果一个光驱不读盘,我们首先加电并放入一张正版的碟片后看看面板灯有没有闪烁,有没有"达.达.达"的声音,如果有,那么我们可以断定是激光头与主轴承之间的感应器坏了.因为当我们放入一张光盘时,光头首先需要通过感应器定位,如果感应器坏了,那么光头就不停地寻道,从而出现"达.达.达"的声音.如果出现了上述情况,我们只要打开光驱的外壳,

电脑光驱不读盘的解决方法

电脑光驱由于经常读盘产生的摩擦,以及其他的一些原因,会出现不能读盘,下面为大家讲解一下光驱不读盘的可能原因与解决方法! 如果一个光驱不读盘,我们首先加电并放入一张正版的碟片后看看面板灯有没有闪烁,有没有"达.达.达"的声音,如果有,那么我们可以断定是激光 头与主轴承之间的感应器坏了.因为当我们放入一张光盘时,光头首先需要通过感应器定位,如果感应器坏了,那么光头就不停地寻道,从而出现"达.达.达"的 声音.如果出现了上述情况,我们只要打开光驱的外壳,以LG光驱为例,在

更改虚拟光驱与物理光驱的盘符

  注册表法 打开注册表,搜索"键值"."只匹配整个字符串":"InstallSource",找到一个键值的数据为你的物理光驱盘符,时(如你的光驱盘符为m,则该值显示为"m:").就将这个值改为你的虚拟光驱盘符即可(如你的虚拟光驱盘符是n,则将此项改为"n:".输入时不要带引号)! 利用虚拟光驱软件 在你安装虚拟光驱软件后,虚拟光驱的盘符会排在原系统物理光驱的前面,使原物理光驱的盘符依次后退,这将造成已安装

C#能操作底层么??? 如监控U盘插入拔出、光驱监控的问题 进来看看

问题描述 C#WinForm要求:用timer1:判断U盘是否已经插上并可以使用如果是在label1上显示插入U盘的盘符标签:如果用户拔出了U盘在label1上显示"U盘被拔出!"(都要考虑多U盘插入和拔出的问题)/////////////////////////////////////////////////////////////////////////////////////////////////////用timer2:判断当前光驱状态是否是弹开着的如果是实现光驱自动收进去发现