孤星119
发表于 2021-4-13 15:44:51
legs+ 发表于 2021-4-13 15:41
这段代码是什么意思
因为DLL的关系,无法使用using System.Media....或imports System......那样使用,必须用那段代码来“导入”(中文术语有限 :L)
legs+
发表于 2021-4-13 15:46:04
;P
simonzhd
发表于 2021-4-13 19:30:03
不错,就是应用场景不多了,因为很多电脑都不用光驱了;P
james007
发表于 2021-4-14 10:52:09
我有光驱
willsonlincake
发表于 2022-4-3 15:01:44
牛逼,还可以做个弹出U盘的DLL
willsonlincake
发表于 2022-5-1 18:38:50
感谢分享,后期可以开发一个类似Nero的光盘刻录软件.
不过我想挑战极限,看看Python是否也能开发光盘刻录软件.
老版本的Pygame也支持弹出光盘,现在取消了.
import pygame.cdrom as cdrom
cdrom.init()
cd = cdrom.CD(0) # 0 = first cdrom device
cd.init()
cd.eject()
cd.quit()
cdrom.quit()
Starrry
发表于 2022-5-1 18:43:35
willsonlincake 发表于 2022-4-3 15:01
牛逼,还可以做个弹出U盘的DLL
现在才看到这贴,那个DLL只是用Win32 API而已,根本没有涉及到底层和硬件I/O.....
Starrry
发表于 2022-5-1 18:45:44
DLL 源码如下:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
section '.data' readable executable
_cmd_opendb 'open cdaudio',0
_cmd_eject db 'set cdaudio door open',0
_cmd_playdb 'play cdaudio',0
_cmd_stopdb 'stop cdaudio',0
_cmd_close db 'close cdaudio',0
section '.code' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax, TRUE
ret
endp
proc Eject
invokemciSendString,_cmd_open,0,0,0
invokemciSendString,_cmd_eject,0,0,0
invokemciSendString,_cmd_close,0,0,0
ret
endp
proc Play
;invokemciSendString,_cmd_open,0,0,0
invokemciSendString,_cmd_play,0,0,0
ret
endp
proc Stop
invokemciSendString,_cmd_stop,0,0,0
;invokemciSendString,_cmd_close,0,0,0
ret
endp
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
winmm,'WINMM.DLL'
import kernel32,\
ExitProcess,'ExitProcess'
import user32,\
MessageBoxA,'MessageBoxA'
import winmm,\
mciSendString,'mciSendStringA'
section '.edata' export data readable
export 'CDTRAY.DLL',\
Eject, 'Eject',\
Play, 'Play',\
Stop, 'Stop'
section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if there are no fixups, generate dummy entry
end if
willsonlincake
发表于 2022-5-1 18:47:29
Starrry 发表于 2022-5-1 18:45
DLL 源码如下:
收藏了 正好用到
Starrry
发表于 2022-5-1 18:48:42
willsonlincake 发表于 2022-5-1 18:38
感谢分享,后期可以开发一个类似Nero的光盘刻录软件.
不过我想挑战极限,看看Python是否也能开发光盘刻录软件 ...
有前途!那个DLL源码内的mciSendString(WINMM.DLL) 和你的这个Pygame(虽然取消了)类似,其实都是应用层面的代码了,没有什么困难。