怎么知道光驱里放入光盘了?(100分)

  • 主题发起人 主题发起人 happy3001
  • 开始时间 开始时间
H

happy3001

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个程序,运行后,我想一旦有光盘放入光驱或是换了光盘,则主窗体标题
显示当前光盘的卷标。应该怎么做呢?
 
截获windows消息WM_DEVICECHANGE
 
function GetCDRomLabel(ADrive: string): string;
var
; VolumeName ; ;: array[0..255] of char;
; FileSystemType ; : array[0..255] of char;
; SerialNum ; ;: DWORD;
; MaxFilenameLength ; : DWORD;
; Flags ; ; : DWORD;
begin
; //Result := '驱动器中没有CDRom';
; if (GetVolumeInformation(PChar(ADrive),
; ; ; ; ; ; ; ; ; ; ; ; ; ;VolumeName,
; ; ; ; ; ; ; ; ; ; ; ; ; ;256,
; ; ; ; ; ; ; ; ; ; ; ; ; ;@SerialNum,
; ; ; ; ; ; ; ; ; ; ; ; ; ;MaxFilenameLength,
; ; ; ; ; ; ; ; ; ; ; ; ; ;Flags,
; ; ; ; ; ; ; ; ; ; ; ; ; ;FileSystemType,
; ; ; ; ; ; ; ; ; ; ; ; ; ;256)) then
; Result := VolumeName;
end;
 
private wmdevicechange(var msg:Tmessage);message wm_devicechange;

procedure tform1.wmdevicechange(var msg:tmessage);
const
; ;dbt_devicearrival=$8000;
; ;dbt_deviceremovecomplete=$8004;
var ;
; ; tempstr:string;
begin
; ;inherited;
; ;case msg.wparam of
; ;dbt_devicearrival: tempstr:='cd in'
; ;dbt_deviceremovecomplete: tempstr:='cd removed'
; ;end;
showmessage(tempstr);
end;
 
uses mmsystem,mplayer;
var mp:tmediaplayer;
; ;msp:tmci_info_parms;
; ;mediastring:array[0..255] of char;
; ;ret:longint;
begin
; mp:=tmediaplayer.create(nil);
; mp.visible:=false;
; mp.parent:=applicartion.mainform;
; mp.shareable:=true;
; mp.devicetype:=dtcdzudio;
; mp.filename:='d:';
; mp.open;
; application.processmessage;
; fillchar(mediastring,sizeof(mediastring),#0);
; fillchar(msp,sizeof(msp),#0);
; msp.lpstrreturn:=@mediastring;
; msp.dwretsize:=255;
;ret:=mcisendcommand(mp.deviceid,mci_info,mci_info_media_identity,longint(@msp);
;if ret<>0 then
; mcigeterrorstring(ret,@mediastring,sizeof(mediastring));
else
;showmessage(strpas(mediastring));
mp.close;
;application.processmessage;
mp.free;

end;
 
问Microsoft
 
谢谢各位了
 

Similar threads

回复
0
查看
866
不得闲
回复
0
查看
829
不得闲
回复
0
查看
1K
不得闲
D
回复
0
查看
841
DelphiTeacher的专栏
D
后退
顶部