Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

knowing if CD is inside the tray

Posted on 2002-03-05
15
Medium Priority
?
276 Views
Last Modified: 2012-05-04
How will i know if there is a CD inside the cdtray?
0
Comment
Question by:ryan_sabarre
  • 6
  • 2
  • 2
  • +5
15 Comments
 

Author Comment

by:ryan_sabarre
ID: 6843096
help me please
0
 

Author Comment

by:ryan_sabarre
ID: 6843197
points was already increased, anybody can help me please
0
 

Expert Comment

by:ePing
ID: 6843223
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure WMDEVICECHANGE(var msg: TMessage); message WM_DEVICECHANGE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMDEVICECHANGE(var msg:tmessage);
const
  DBT_DEVICEARRIVAL = $8000;
  DBT_DEVICEMOVECOMPLETE = $8004;
var
  TempStr: string;
begin
  inherited;
  case msg.WParam of
    DBT_DEVICEARRIVAL :tempstr:='Insert CD';
    DBT_DEVICEMOVECOMPLETE :tempstr:='Popup CD';
  end;
  ShowMessage(TempStr);
end;


ePing :o)

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:ryan_sabarre
ID: 6843256
sorry your source code does not do anything
it doest work

please stick to my question please
0
 

Author Comment

by:ryan_sabarre
ID: 6843261
there are 2 cd rom drives in my computer
drive f and drive G

so how can i identify both drive if there is a CD existing inside?
0
 

Accepted Solution

by:
d32coder earned 150 total points
ID: 6843297
A low tech solution.  
It will not work on blank or Audio CDs.

if DirectoryExists('F:\')
  then Showmessage('CD Found in Drive F.');

Don
0
 

Expert Comment

by:pin_plunder
ID: 6843356
 var
    DrivePath: array [0..3] of char = 'A:\';

  function IsDiskIn(drive: char): boolean;
  var
    d1, d2, d3, d4: longword;
  begin
    DrivePath[0] := drive;
    Result := GetDiskFreeSpace(DrivePath, d1, d2, d3, d4);
  end;

this may be another solution without getting those blue error messages.
0
 
LVL 35

Expert Comment

by:Slick812
ID: 6843547
var
FatType: array [0..MAX_PATH] of Char;
MaxLen1,fSysFlags: DWORD;
ErrorMode: Integer;
Drive: String;

begin
FatType[0] := #0;
Drive := 'F:\';
ErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
if not GetVolumeInformation(PChar(Drive), nil, 0,nil, MaxLen1, fSysFlags,FatType,DWORD(sizeof(FatType))) then
  begin
  ShowMessage('No CD in drive');
  end else
  ShowMessage('CD is in there');
SetErrorMode(ErrorMode);
end;

- - - - - - - - - - -  - - - - - -
GetVolumeInformation returns False if there is no volume to get info for
0
 

Author Comment

by:ryan_sabarre
ID: 6843616
hey "d32code" is your code safe?
i already try it with windows 2000 its ok
but in other Operating system i dont know
like WindowsXP/NT/Windows 98

anybody can say something with his code?
0
 

Expert Comment

by:pin_plunder
ID: 6846181
with d32code code you get a blue error screen when there's a blank or audio cd.
sorry d32code but let me say that's not too elegant.

paul.
0
 
LVL 9

Expert Comment

by:ginsonic
ID: 6846419
{ ... }
type
  TForm1 = class(TForm)
  private
    { private declarations }
    procedure WMDeviceChange(var Msg: TMessage); message WM_DeviceChange;
  public
    { public declarations }
  end;


procedure TForm1.WMDeviceChange(var Msg: TMessage);
const
  DBT_QUERYCHANGECONFIG = $0017;
  DBT_CONFIGCHANGED = $0018;
  DBT_CONFIGCHANGECANCELED = $0019;
  DBT_DEVICEARRIVAL = $8000;
  DBT_DEVICEQUERYREMOVE = $8001;
  DBT_DEVICEQUERYREMOVEFAILED = $8002;
  DBT_DEVICEREMOVEPENDING = $8003;
  DBT_DEVICEREMOVECOMPLETE = $8004;
  DBT_DEVICETYPESPECIFIC = $8005;
  DBT_USERDEFINED = $FFFF;
var
  tmpStr : String;
begin
  inherited
  case Msg.wParam of
    DBT_DEVICEARRIVAL:
      tmpStr := 'CD inserted in drive';
    DBT_DEVICEREMOVECOMPLETE:
      tmpSTr := 'CD removed from drive';
  end;
  ShowMessage(tmpStr);
end;
0
 
LVL 35

Expert Comment

by:Slick812
ID: 6851809
if you are still looking, here's a couple of web pages at Borland Community

Is disk in drive?
http://community.borland.com/article/0,1410,18004,00.html
(I still like the GetVolumeInformation way better, since it does all types of CD's)

Is CD a Audio CD?
http://community.borland.com/article/0,1410,17756,00.html
0
 
LVL 3

Expert Comment

by:lopem
ID: 6853725
listening...
0
 
LVL 3

Expert Comment

by:SteveWaite
ID: 6866371
have you tried:

Path := 'D:\'; // your cd etc.
if DirectoryExists(Path) then ..

You may need to repeat after a time because the cd may have just been inserted and Explorer hasn't picked it up yet.

Regards,
Steve
0
 

Author Comment

by:ryan_sabarre
ID: 6878815
Thank you for your idea
0

Featured Post

[Webinar] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
Is your OST file inaccessible, Need to transfer OST file from one computer to another? Want to convert OST file to PST? If the answer to any of the above question is yes, then look no further. With the help of Stellar OST to PST Converter, you can e…
Suggested Courses

572 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question