孤星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(虽然取消了)类似,其实都是应用层面的代码了,没有什么困难。
页: 1 [2] 3
查看完整版本: 自制弹出光驱托盘的DLL