5)程序自動執行無效的菜單鼠標事件
procedure TForm1.mNotautorunClick(Sender: TObject);
var
Reg: TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if (Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',False))=True then
begin
// 在注冊表中添加數值
Reg.DeleteValue('MyStartup');
end
else
MessageBox(Handle,'打開注冊表失敗。','錯誤',MB_OK+MB_ICONERROR);
finally
Reg.CloseKey;
Reg.Free;
end;
end;
6)打開光驅子菜單的事件過程
procedure TForm1.MenuOpenCdrom(Sender : TObject);
var i:integer;
begin
with Sender as TMenuItem do begin
if Menuindex = mOpenCDROM.Count-1 then //判斷鼠標是否點擊”所有光驅”子菜單項
begin
for i := 0 to Menuindex-1 do //打開所有光驅
begin
// Menuindex:=i;
Mycdrom :=pchar(mopenCdrom.Items[i].Caption);
OpenCdrom(Mycdrom);
end;
end else
begin
Mycdrom :=pchar(mopenCdrom.Items[Menuindex].Caption);
OpenCdrom(Mycdrom);
end;
end;
7)關閉光驅子菜單事件過程
procedure TForm1.MenuCloseCdrom(Sender : TObject);
var i:integer;
begin
with Sender as TMenuItem do begin
if Menuindex = mCloseCDROM.Count-1 then //判斷鼠標是否點擊”所有光驅”子菜單項
begin
for i := 0 to Menuindex-1 do // //關閉所有光驅
begin
Mycdrom :=pchar(mCloseCdrom.Items[i].Caption);
CloseCdrom(Mycdrom);
end;
end else
Mycdrom :=pchar(mCloseCdrom.Items[Menuindex].Caption);
CloseCdrom(Mycdrom);
end;
end;
8)關閉控制程序子菜單事件過程:
procedure TForm1.mCloseAppClick(Sender: TObject);
begin
Application.terminate; //程序終止
end;
通過上述的函數和過程實現了對光驅的控制,運行以下該程序,用鼠標右鍵點擊所見窗口,彈出圖2菜單效果,選擇所要控制開關的光驅盤號,顯然光驅盒開始聽任程序的擺布。該程序可以進一步改造後將其窗體隱去,放入狀態欄中,實現程序托盤功能等,由於限於篇幅,將此部分省去。
本程序Windows 2000操作系統+ Delphi 5.0 實現和調試通過。
圖2 最終彈出菜單的效果圖