今天在使用我之前的Python识别拖放的PDF文件再转成文本文件-CSDN博客发现,文件藏在路径太深入的地方,不能打开,因为拖放文件只能读取260个字节的文件名(b’路径),再查看windnd.hook_dropfiles函数,发现里面有个create_buffer(260),把它改成460,问题解决,搞不懂为什么要设置260。
def py_drop_func(hwnd,msg,wp,lp):
global files
if msg == WM_DROPFILES:
count = func_DragQueryFile(argtype(wp),-1,None,None)
szFile = create_buffer(460) #原来为260
files = []
for i in range(count):
func_DragQueryFile(argtype(wp),i,szFile,ctypes.sizeof(szFile))
dropname = szFile.value
files.append(dropname)
func(files)
ctypes.windll.shell32.DragFinish(argtype(wp))
return ctypes.windll.user32.CallWindowProcW(*map(argtype,(globals()[old],hwnd,msg,wp,lp)))