鱼C论坛

 找回密码
 立即注册
查看: 2621|回复: 6

关于光驱的打开与关闭

[复制链接]
发表于 2014-7-29 10:31:57 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 青玄 于 2014-7-29 10:38 编辑
                                                                                                                .386
                                                                                                                .model flat,stdcall
                                                                                                                option casemap:none
include windows.inc
include winmm.inc
includelib winmm.lib;
include gdi32.inc
includelib gdi32.lib
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
include gdi32.inc
includelib gdi32.lib
include comctl32.inc
includelib comctl32.lib
DLG_MAIN equ   1000h
ICO_MAIN equ   2000h
   .data?
hInstance dd ?;定义模块句柄
dwReSize dd ?
hDevice   dd ?
hWinMain dd ?
                                                                                                        .const
musicName db "ring.wav",0
szDevice db " CDAUDIO",0;CDAUDIO
                                                                                                        .code
_procPlay proc
   local @stMCIOpen:MCI_OPEN_PARMS
   LOCAL   @stMCIPlay:MCI_PLAY_PARMS
   local  @stMCIClose:MCI_GENERIC_PARMS
   mov @stMCIOpen.lpstrDeviceType,offset szDevice
   mov @stMCIOpen.lpstrElementName,offset musicName  ;musicName应该就是音乐文件名吧。
   invoke mciSendCommand,NULL,MCI_OPEN,MCI_OPEN_TYPE,addr @stMCIOpen
   ;mciSendCommand发送消息给MCI设备
   mov eax,@stMCIOpen.wDeviceID
   mov hDevice,eax
    mov eax,hWinMain
   mov @stMCIPlay.dwCallback,eax
   invoke  mciSendCommand,MCI_ALL_DEVICE_ID,MCI_SET,MCI_SET_DOOR_OPEN,addr @stMCIOpen  ;打开光驱
   
    mov eax,hWinMain
   mov @stMCIClose.dwCallback,eax
   
   invoke mciSendCommand, addr hDevice, MCI_CLOSE,NULL, NULL                ;关闭光驱
   ret
_procPlay endp
start:
call _procPlay
invoke ExitProcess,NULL
end start
大神们! 这个程序执行后只能打开光驱,却不能关闭光驱啊! 但是我明明调用了关闭的函数啊! 这是怎么回事儿啊!还请大神指教指教!

最佳答案

查看完整内容

青玄兄,问题解决了研究了一晚上,我想 源码贴出来和大家一起分享吧,让大家一起运行试试 .386 .model flat,stdcall option casemap:none include windows.inc include winmm.inc includelib winmm.lib; include gdi32.inc includelib gdi32.lib include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib include gdi32.inc includelib gdi32.lib include comctl32.inc incl ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-29 10:31:58 | 显示全部楼层
青玄兄,问题解决了研究了一晚上,我想 源码贴出来和大家一起分享吧,让大家一起运行试试
.386
   .model flat,stdcall
   option casemap:none
include windows.inc
include winmm.inc
includelib winmm.lib;
include gdi32.inc
includelib gdi32.lib
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
include gdi32.inc
includelib gdi32.lib
include comctl32.inc
includelib comctl32.lib
DLG_MAIN equ   1000h
ICO_MAIN equ   2000h
   .data?
hInstance dd ?;定义模块句柄
dwReSize dd ?
hDevice   dd ?
hWinMain dd ?
DeviceIDC dd ?
   .const
szDevice db " CDAUDIO",0;CDAUDIO
   .code
_procPlay proc
   local @stMCIOpen:MCI_OPEN_PARMS
   LOCAL   @stMCIPlay:MCI_PLAY_PARMS
   invoke  RtlZeroMemory,addr @stMCIOpen,sizeof @stMCIOpen
   mov @stMCIOpen.lpstrDeviceType,offset szDevice
   invoke mciSendCommand,NULL,MCI_OPEN,MCI_OPEN_TYPE,addr @stMCIOpen
   ;mciSendCommand发送消息给MCI设备
  mov eax,@stMCIOpen.wDeviceID;;*******mov返回的设备名称
  push eax
  pop DeviceIDC;*****传给DeviceIDC
   invoke  mciSendCommand,MCI_ALL_DEVICE_ID,MCI_SET,MCI_SET_DOOR_OPEN,NULL
   call _CloseMP3
   ret
_procPlay endp
;************************************************* 关闭CD部分
_CloseMP3 proc _hwnd
local  @stMCIClose:MCI_GENERIC_PARMS
invoke RtlZeroMemory ,addr @stMCIClose,sizeof @stMCIClose
mov @stMCIClose.dwCallback,NULL
invoke mciSendCommand, DeviceIDC ,MCI_SET,MCI_SET_DOOR_CLOSED,0
invoke mciSendCommand,DeviceIDC ,MCI_CLOSE,MCI_WAIT,0
ret
_CloseMP3 endp
;*********************************
;***********主程序部分*********
start:
call _procPlay
invoke ExitProcess,NULL
end start

点评

恩恩! 好的!  详情 回复 发表于 2014-7-29 17:01
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-29 17:01:19 | 显示全部楼层
wiliam 发表于 2014-7-29 16:39
青玄兄,问题解决了研究了一晚上,我想 源码贴出来和大家一起分享吧,让大家一起运行试试
.386
   .model ...

恩恩! 好的!{:2_27:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-1 01:11:37 | 显示全部楼层
相当不错   厉害啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-3 09:56:24 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-4 02:32:28 | 显示全部楼层
看看 看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-4 11:13:19 | 显示全部楼层
楼主真牛逼:lol::lol::lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 12:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表