python用ctypes操作剪切板遇到问题!!
答案:1 悬赏:30 手机版
解决时间 2021-01-30 18:41
- 提问者网友:记得曾经
- 2021-01-30 01:30
python代码如下:
import ctypes
def get():
'''从剪切板中获得字符串'''
h=ctypes.WinDLL('user32.dll')
h.OpenClipboard(0)
aa=h.GetClipboardData(13)
ss=ctypes.c_wchar_p(aa)
h.CloseClipboard()
return ss.value
def set(mystr):
'''把字符串放到剪切板中,成功返回1,失败返回0'''
u=ctypes.WinDLL('user32.dll')
k=ctypes.WinDLL('kernel32.dll')
s=mystr.encode('utf-16')
s=s[2:]+b'\0\0'
ss=ctypes.c_char_p(s)
u.OpenClipboard(0)
u.EmptyClipboard()
k.GlobalAlloc.argtypes=[ctypes.c_uint32,ctypes.c_uint32]
try:
cb=k.GlobalAlloc(0,len(s))
cb=ctypes.c_void_p(cb)
print(type(cb))
ctypes.memmove(cb,ss,len(s))
rr=u.SetClipboardData(13,cb) # 13->unicode
finally:
u.CloseClipboard()
if rr==0:
return 0
else:
return 1
#-----
set("abcdefg")
同样是这段代码,在python3.4.3(x64)下运行没问题,但是在3.5就出问题了!
提示如下:
Traceback (most recent call last):
File "", line 1, in
File "clip.py", line 25, in set
ctypes.memmove(cb,ss,len(s))
OSError: exception: access violation writing 0x000000004AAA1E40
请问这是为啥??
python3.5有更新这方面内容??
卧槽,百度把我的缩进吃掉了。大家凑合着看吧。。。
最佳答案
- 五星知识达人网友:毛毛
- 2021-01-30 02:20
这边执行没有问题,版本如下
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32代码如下
import ctypes
def get():
'''从剪切板中获得字符串'''
h=ctypes.WinDLL('user32.dll')
h.OpenClipboard(0)
aa=h.GetClipboardData(13)
ss=ctypes.c_wchar_p(aa)
h.CloseClipboard()
return ss.value
def set(mystr):
'''把字符串放到剪切板中,成功返回1,失败返回0'''
u=ctypes.WinDLL('user32.dll')
k=ctypes.WinDLL('kernel32.dll')
s=mystr.encode('utf-16')
s=s[2:]+b'\0\0'
ss=ctypes.c_char_p(s)
u.OpenClipboard(0)
u.EmptyClipboard()
k.GlobalAlloc.argtypes=[ctypes.c_uint32,ctypes.c_uint32]
try:
cb=k.GlobalAlloc(0,len(s))
cb=ctypes.c_void_p(cb)
print(type(cb))
ctypes.memmove(cb,ss,len(s))
rr=u.SetClipboardData(13,cb) # 13->unicode
finally:
u.CloseClipboard()
if rr==0:
return 0
else:
return 1
#-----
set("abcdefg")程序返回
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯