全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1354
推到 Plurk!
推到 Facebook!

若有多台光碟機,要如何知道那一台剛放入影片(VCD or DVD)

尚未結案
morris_lee
一般會員


發表:2
回覆:3
積分:1
註冊:2005-01-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-07 11:52:59 IP:219.68.xxx.xxx 未訂閱
小弟已經從各位前輩的文章,學會自動偵測CD-ROM是否已放入光碟片的方法。 但是,可否進一步請教,是否有什麼方法可以自動偵測,是那一部光碟機被放入光碟片呢?
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-08 14:10:55 IP:60.248.xxx.xxx 未訂閱
參考這裡吧 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/detecting_media_insertion_or_removal.asp
morris_lee
一般會員


發表:2
回覆:3
積分:1
註冊:2005-01-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-08 17:35:06 IP:219.68.xxx.xxx 未訂閱
感謝您的指導。 可是,請問有沒有Delphi 的解說或範例呢?因為我對C 不熟! 發表人 - morris_lee 於 2005/03/08 17:38:26
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-09 12:42:33 IP:218.167.xxx.xxx 未訂閱
請參考 http://www.undu.com/Articles/980221b.htm "Notification of CD-ROM insertion and removal" (Delphi)    您可以下載作者已經製作好的元件和函式檔 http://www.undu.com/LIBS/cdevents.zip    使用方式 sample
unit main;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, CDEvents;    type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    procedure AfterArrival(Sender: TObject; Drive: Char);
    procedure AfterRemove(Sender: TObject; Drive: Char);        { Private declarations }
  public
    CDEvt:TCDEvents;
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.AfterArrival(Sender: TObject; Drive:Char);
begin
   Showmessage('Detect '   Drive   ': Disk arrival');
end;    procedure TForm1.AfterRemove(Sender: TObject; Drive:Char);
begin
   Showmessage('Detect '   Drive   ': Disk removed');
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
   CDEvt:=TCDEvents.Create(self);
   CDEvt.AfterArrival:=AfterArrival;
   CDEvt.AfterRemove:=AfterRemove;
end;    procedure TForm1.FormDestroy(Sender: TObject);
begin
   CDEvt.Free;
end;    end.
@瞭解越多.懂得越少@
linmon416
一般會員


發表:11
回覆:44
積分:11
註冊:2003-12-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-11 10:20:13 IP:211.75.xxx.xxx 未訂閱
你好: 試試下面的方法,這是取得所有CD-ROM的磁碟機代號和判斷有無光碟片的方法。
//uses Windows;
Function GetCDList : String;
Var   I: Integer;
 Drives: Integer;
    Tmp: String;
begin
    Drives := GetLogicalDrives;
    Result := '';
// units A=0 to el Z=25
    For I := 0 To 25 Do
        If (((1 Shl I) And Drives)<>0) Then
        Begin
            Tmp := Char(65 I) ':\';
            If (GetDriveType(PChar(Tmp))=DRIVE_CDROM) then
            begin
                if DiskSize(Ord(Char(65 I))-$40) <> -1 then
                    ShowMessage('Disk in drive ' Char(65 I) ': !');
                Result := Result Char(65 I);
            end;
       End;
End;    procedure TForm1.Button1Click(Sender: TObject);
begin
    GetCDList;
end;
希望以上的方法,對你有幫助。 發表人 - linmon416 於 2005/03/11 10:26:23 發表人 - linmon416 於 2005/03/11 11:29:31
morris_lee
一般會員


發表:2
回覆:3
積分:1
註冊:2005-01-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-15 11:32:29 IP:219.68.xxx.xxx 未訂閱
感謝各位大大的指導,我的問題已經解決了。 萬分感激 ^_^
系統時間:2024-05-02 14:51:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!