科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用Delphi程序实现对光驱盘盒的开关控制

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

介绍在Delphi编程环境下实现开启光驱盘盒的主要技术和方法,该程序以托盘方式驻留状态栏中

作者:闫海忠 杨桃萍 来源:计算机与信息技术 2007年10月31日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 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;

  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
   // 在注册表中添加数值
   Reg.DeleteValue('MyStartup');
  end
  else
   MessageBox(Handle,'打开注册表失败。','错误',MB_OK+MB_ICONERROR);
  finally
   Reg.CloseKey;
   Reg.Free;
  end;
 end;

  6)打开光驱子菜单的事件过程

procedure TForm1.MenuOpenCdrom(Sender : TObject);
var i:integer;
begin
 with Sender as TMenuItem do begin
  if Menuindex = mOpenCDROM.Count-1 then //判断鼠标是否点击”所有光驱”子菜单项
  begin
   for i := 0 to Menuindex-1 do //打开所有光驱
   begin
    // Menuindex:=i;
    Mycdrom :=pchar(mopenCdrom.Items[i].Caption);
    OpenCdrom(Mycdrom);
   end;
  end else
  begin
   Mycdrom :=pchar(mopenCdrom.Items[Menuindex].Caption);
   OpenCdrom(Mycdrom);
  end;
 end;

  7)关闭光驱子菜单事件过程

procedure TForm1.MenuCloseCdrom(Sender : TObject);
var i:integer;
begin
 with Sender as TMenuItem do begin
  if Menuindex = mCloseCDROM.Count-1 then //判断鼠标是否点击”所有光驱”子菜单项
  begin
   for i := 0 to Menuindex-1 do // //关闭所有光驱
   begin
    Mycdrom :=pchar(mCloseCdrom.Items[i].Caption);
    CloseCdrom(Mycdrom);
   end;
   end else
    Mycdrom :=pchar(mCloseCdrom.Items[Menuindex].Caption);
    CloseCdrom(Mycdrom);
   end;
  end;

  8)关闭控制程序子菜单事件过程:

procedure TForm1.mCloseAppClick(Sender: TObject);
begin
 Application.terminate; //程序终止
end;

  通过上述的函数和过程实现了对光驱的控制,运行以下该程序,用鼠标右键点击所见窗口,弹出图2菜单效果,选择所要控制开关的光驱盘号,显然光驱盒开始听任程序的摆布。该程序可以进一步改造后将其窗体隐去,放入状态栏中,实现程序托盘功能等,由于限于篇幅,将此部分省去,需要程序或源代码的读者可以通过我的EMAIL:hzhyan@sohu.com索要并欢迎交流Delphi的编程经验。

  本程序Windows 2000操作系统+ Delphi 6.0 实现和调试通过。


图2 最终弹出菜单的效果图

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章