CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

如何才能让程序自已认有几个光驱

楼主xly371(朋友)2003-05-03 23:25:48 在 Delphi / VCL组件开发及应用 提问

var   x:integer;  
  driver:pchar;  
  s:pchar;  
  begin  
  s:='g'+':';  
  driver:=s;  
  x   :=   GetDrivetype(driver);  
  if   x=5   then     begin  
  form1.Memo1.Text   :=driver+'是光驱'  
  这是我写的,现在不知道如何才能让程序自已认有几个光驱 问题点数:100、回复次数:8Top

1 楼shuixin13(犬犬(心帆))回复于 2003-05-04 00:19:07 得分 40

 
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi]  
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0]  
  "FirstBusScanTimeInMs"=dword:0000000a  
  "DMAEnabled"=dword:00000003  
  "Driver"="atapi"  
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0\Scsi   Bus   0]  
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0\Scsi   Bus   0\Initiator   Id   255]  
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0\Scsi   Bus   0\Target   Id   0]  
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0\Scsi   Bus   0\Target   Id   0\Logical   Unit   Id   0]  
  "Identifier"="MAXTOR   4K040H2"  
  "Type"="DiskPeripheral"  
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0\Scsi   Bus   0\Target   Id   1]  
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   0\Scsi   Bus   0\Target   Id   1\Logical   Unit   Id   0]  
  "Identifier"="ST320413A"  
  "Type"="DiskPeripheral"  
   
  #   主通道(Scsi   Port   0)下的主盘(Target   Id   0)   为硬盘   MAXTOR   4K040H2  
  #   主通道(Scsi   Port   0)下的从盘(Target   Id   1)   为硬盘   ST320413A  
   
   
   
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   1]  
  "FirstBusScanTimeInMs"=dword:00000bbc  
  "DMAEnabled"=dword:00000001  
  "Driver"="atapi"  
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   1\Scsi   Bus   0]  
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   1\Scsi   Bus   0\Initiator   Id   255]  
   
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   1\Scsi   Bus   0\Target   Id   0]  
  [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi   Port   1\Scsi   Bus   0\Target   Id   0\Logical   Unit   Id   0]  
  "Identifier"="ASUS   CD-S500/A"  
  "Type"="CdRomPeripheral"  
  "DeviceName"="CdRom0"  
   
  #   从通道(Scsi   Port   1)下的主盘(Target   Id   0)   为CDROM       ASUS   CD-S500/A  
  #   从通道(Scsi   Port   1)下的从盘(Target   Id   1)   为   ........(不存在)  
        #   如果有的话它在  
   
    HKEY_LOCAL_MACHINE  
        \HARDWARE\DEVICEMAP  
            \Scsi  
                \Scsi   Port   1  
                    \Scsi   Bus   0  
                        \Target   Id   1  
                            \Logical   Unit   Id   0  
  下的   "Identifier"   键上有设备名Top

2 楼xiaozhanger(你好--绝地反击!)回复于 2003-05-04 08:26:30 得分 20

var  
      a:integer;  
   
  for   i:=65   to   90   do  
      begin  
          a:=getdrivetype(pchar(i));  
          case   a   of  
          begin  
              drive_cdrom:showmessage('this   is   a   cd_rom');  
          end;  
      end;  
  Top

3 楼dawnming(笨小孩)回复于 2003-05-04 09:29:48 得分 20

给你一段代码,你可以看看。  
  var    
      typ:   Integer;    
      s:       string;    
  begin    
      s       :=   'c:\';    
      typ   :=   GetDriveType(PChar(s));  
      if   Typ   <>   0   then   case   typ   of    
              DRIVE_REMOVABLE:    
                  begin    
                      ShowMessage('Drive   Removable   /   Diskette');    
                  end;    
              DRIVE_FIXED:    
                  begin    
                      ShowMessage('Drive   fixed   /   Festplatte');    
                  end;    
              DRIVE_CDROM:    
                  begin    
                      ShowMessage('CD   ROM   Drive');    
                  end;    
              DRIVE_RAMDISK:    
                  begin    
                      ShowMessage('RAM   Drive');    
                  end;    
              DRIVE_REMOTE:    
                  begin    
                      ShowMessage('Remote   Drive   /   Netzlaufwerk');    
                  end;    
          end;  
  end;  
  至于要判断哪几个是光驱,那就用一个循环,从a-z一个个检查。方法就是上面那老兄写的  
  我只会瞎说  
  Top

4 楼liyangyao970(纳兰容若)回复于 2003-05-04 10:19:47 得分 0

学习~~~Top

5 楼budded(All By Myself)回复于 2003-05-04 10:56:21 得分 20

var  
      i,DType   :   integer;  
      Driver   :   String;  
  begin  
   
      for   i   :=   65   to   90   do  
      begin  
          Driver   :=   Char(I)   +   ':';  
          DType   :=   GetDriveType(PChar(Driver));  
          if   DType   =   Drive_CDRom  
          then   begin  
                        Combo.Items.Add('光驱       '   +   String(Driver));  
                    end;  
      end;Top

6 楼Venda(黄飞鸿)回复于 2003-05-04 11:12:27 得分 0

就采用上面的循环遍历法!Top

7 楼xly371(朋友)回复于 2003-05-04 11:49:52 得分 0

谢了,先试一下再给分Top

相关问题

  • 如何用vc实现:用程序对光驱加锁,输入密码后才能访问,(包括从地址栏进入),如何用VC实现
  • 如何在程序中打开和关闭光驱门?
  • 请问如何实现光驱打开后程序等待,光驱关闭后继续运行!?
  • 用程序控制光驱
  • 程序员如何才能拿高薪?
  • 如何才能强行中断程序?
  • 用C # 开发的WinForm程序中,如何得到系统的光驱盘符
  • 如何才能不让别的程序关闭我的程序?
  • 谁有dos下光驱驱动程序(杂牌IDE光驱)
  • 如何用程序禁止光驱控制面板上的弹出键弹出光盘?

关键词

  • hardware
  • scsi
  • devicemap
  • 光驱
  • drive
  • bus
  • dtype
  • showmessage
  • typ
  • getdrivetype

得分解答快速导航

  • 帖主:xly371
  • shuixin13
  • xiaozhanger
  • dawnming
  • budded

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo