Solved

knowing if CD is inside the tray

Posted on 2002-03-05
15
257 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
 

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 50 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
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 33

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 33

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

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
JSON on ISAPI REST Server using Delphi 2 206
IExtractImage Delphi 14 162
Thread safe  opinion 7 111
Reconfigure Delphi Install? 2 35
A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

707 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now