windnd.hook_dropfiles中的create_buffer值太小无法拖放长文件名

今天在使用我之前的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)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值