我想在我的窗口上列出我的输入设备(如麦克风等)。在
代码在这里:
from ctypes import *
import sys
#printf = libc.printf
winmm = windll.LoadLibrary("winmm.dll")
widn = winmm.waveInGetDevCapsA #wave in device num
widn.restype = c_uint
waveNum = winmm.waveInGetNumDevs
class LPWAVEINCAPS(Structure):
_fields_ = [
("wMid",c_ushort),
("wPid",c_ushort),
("vDriverVersion",c_uint),
("szPname",c_wchar_p),
("dwFormats",c_uint),
("wChannels",c_ushort),
("wReserved1",c_ushort),
]
widn.argtypes = [
c_uint,
POINTER(LPWAVEINCAPS),
c_uint
]
count_devs = waveNum()
print(count_devs)
structLP = LPWAVEINCAPS()
for i in range(count_devs):
str = widn(c_uint(i),byref(structLP),c_uint(sys.getsizeof(structLP)))
print(structLP.szPname)
输出是段错误,当我删除byref
时,它给了我None
作为输出。在
帮帮我谢谢你:)
我解决了这个问题:
问题是我的字符串指针,我在结构中使用了
s = create_string_buffer(b'\000' * 32)
,然后使用了("szPname", type(s))
相关问题 更多 >
编程相关推荐