鼠标右键单击光驱盘符,只有“弹出”菜单,怎么加入“关闭”菜单?

qqyong 2004-06-11 08:54:12
鼠标右键单击光驱盘符,只有“弹出”菜单,怎么加入“关闭”菜单。

这里涉及到光驱的打开、关闭、快捷菜单等内容。关键是怎么做到像Winrar一样可以加入到右键菜单中!!!
...全文
365 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣骑士 2004-06-15
  • 打赏
  • 举报
回复
该注册的话需要更改那些主键,谁说一下,谢谢
pigpag 2004-06-14
  • 打赏
  • 举报
回复
//晕,没看清楚,和最后一个本质是一样的,只是声明函数不一样。 :(


4242,所以说没有纰漏嘛~
qqyong 2004-06-14
  • 打赏
  • 举报
回复
我的问题关键不在这里呀,而是加入右键菜单
pigpag 2004-06-12
  • 打赏
  • 举报
回复
怎么都是针锋相对,一点纰漏都没有……
goodname008 2004-06-12
  • 打赏
  • 举报
回复
晕,没看清楚,和最后一个本质是一样的,只是声明函数不一样。 :(
goodname008 2004-06-12
  • 打赏
  • 举报
回复
确实经典!

我再补充个方法:

Option Explicit

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Private Enum CDROMSwitch
OpenCDROM
CloseCDROM
End Enum

Private Sub Command1_Click()
OpenCloseCDROM OpenCDROM
End Sub

Private Sub Command2_Click()
OpenCloseCDROM CloseCDROM
End Sub

' 打开/关闭CDROM
' Action 为打开/关闭CDROM的动作
Private Function OpenCloseCDROM(ByVal Action As CDROMSwitch) As Boolean
OpenCloseCDROM = mciSendString("set CDAudio door " & IIf(Action = OpenCDROM, "open", "closed"), "", 127, 0)
End Function

xrenwu 2004-06-11
  • 打赏
  • 举报
回复
牛啊,顶
yinweihong 2004-06-11
  • 打赏
  • 举报
回复
老大的总是经典的
呵呵
收藏~
lihonggen0 2004-06-11
  • 打赏
  • 举报
回复
修改注册表可以添加到右键菜单中
lihonggen0 2004-06-11
  • 打赏
  • 举报
回复
用API函数CDdoor 来控制光驱门的开和关


Option Explicit
'说明:CDdoor函数是安装WINDOWS时所自带的winmm.dll文件中包含的函数
Private Declare Function CDdoor Lib "winmm.dll" Alias "mciSendStringA" _
( _
ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long _
) As Long

'CDOpen用来标示光驱开与关的状态
Dim CDOpen As Boolean

Private Sub Command1_Click()
On Error Resume Next

'如果关闭则打开,并且按钮做相应变化
If CDOpen = False Then
Call CDdoor("set CDAudio door open", 0, 0, 0)
CDOpen = True
Command1.Caption = "点击关闭光驱"
Else
'否则关闭
Call CDdoor("set CDAudio door closed", 0, 0, 0)
CDOpen = False
Command1.Caption = "点击打开光驱"
End If
End Sub

Private Sub Form_Load()
CDOpen = False
Call CDdoor("set CDAudio door closed", 0, 0, 0)
End Sub

lihonggen0 2004-06-11
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Set wmp = CreateObject("WMPlayer.OCX.7")
Set cdrom = wmp.cdromCollection
If cdrom.Count >= 1 Then '(该句用来判断你的系统中装了多少个光驱)
For z = 0 To cdrom.Count - 1
cdrom.Item(z).Eject
Next
For z = 0 To cdrom.Count - 1
cdrom.Item(z).Eject
Next
End If
End Sub
lihonggen0 2004-06-11
  • 打赏
  • 举报
回复
不知为什么,在微软目前的操作系统中,光驱的命令菜单都是只有“弹出”命令,没有“关闭”命令。如果我们不想按光驱的按钮关闭弹出的托盘,就不得不依靠安装第三方软件来实现。其实,我们也可以用VBScript语句弥补这点不足。

关闭所有光驱

如果你的系统中安装了一个以上的光驱,那么打开记事本,输入以下代码:

Set wmp = CreateObject("WMPlayer.OCX.7")

Set cdrom = wmp.cdromCollection

If cdrom.Count >= 1 then '(该句用来判断你的系统中装了多少个光驱)

For z = 0 to cdrom.Count - 1

cdrom.Item(z).Eject

Next

For z = 0 to cdrom.Count - 1

cdrom.Item(z).Eject

Next

End If

注意将文件类型改为“所有文件”后,将文件保存为“乇账?vbe”,在桌面上为该文件建一个快捷方式,以后双击桌面上的快捷方式就可以关闭所有弹出的光驱。

关闭指定的光驱

以下语句可以让你关闭指定的光驱,例如要关闭第一个光驱,我们可以新建个一文本文件,输入以下代码:

Set wmp = CreateObject("WMPlayer.OCX.7")

Set cdrom = wmp.cdromCollection

cdrom.Item(0).Eject

同样将该文件保存为后缀为VBE的文件,命名为“close1.vbe”,以后双击该文件即可关闭你系统中的第一个光驱盘符。在以上语句里,item(0)中的“0”代表第一个光驱盘符,如果要关闭第二个光驱盘符,请将这里的“0”加1,依此类推,就可实现关闭指定的盘符了。

我们还可以将“关闭”添加到光驱的右键菜单中。方法是在注册表编辑器中依次展开[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell ]分支,然后在右侧窗口中新建 “CloseCDROM”分支,进入该分区后,在右侧窗口双击“默认”,将其默认值修改为“关闭所有”;再点击“编辑→新建→项”,将新键重命名为“command”,把“默认”值修改为“C:\WINDOWS\System32\WScript.exe C:\关闭所有.vbe”(这里要将C:\改为“关闭所有.vbe”文件在你系统中保存的路径)。

用同样的方法可以将关闭指定光驱的命令加入光驱的右键菜单中。修改完毕后,关闭注册表就可在右键菜单中找到“关闭所有”和关闭指定盘符的命令。
qqyong 2004-06-11
  • 打赏
  • 举报
回复
up

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧