AI软件下载
有趣网站推荐及实用软件下载

pywin32 pywintypes.com_error: (-2147417842, '应用程序调用一个已为另一线程整理的接口。

今天在使用pywin32库操作word文档的时候,每当向word文档输入内容就会报错,部分错误信息如下:

Exception ignored from cffi callback .callback_ptr at 0x0000018937783760>:
Traceback (most recent call last):
File “D:\python\NovaVoiceTyper\myenv\lib\site-packages\sounddevice.py”, line 857, in callback_ptr
return _wrap_callback(callback, data, frames, time, status)
File “D:\python\NovaVoiceTyper\myenv\lib\site-packages\sounddevice.py”, line 2735, in _wrap_callback
File “>”, line 2, in TypeText
pywintypes.com_error: (-2147417842, ‘应用程序调用一个已为另一线程整理的接口。’, None, None)

提示信息说接口被占用,大体意思就是你应用启用了多线程,最开始的那个线程创建了word应用,后面新启动的线程还是调用原来创建的那个word应用,所以会被占用,解决方法就是每次在启动新的线程的时候都创建一次word应用

如我原来代码:

word = win32com.client.Dispatch("Word.Application")
word.Visible = True  # 使Word可见

# 打开已有的文档
doc = word.Documents.Open(output_file)    
selection = word.Selection    

def callback(indata, frames, time, status):
    ......
    selection.TypeText(res) 

正确方法应该是把创建word的过程放进callback里,代码应该如下:

......
def callback(indata, frames, time, status):
    ......
    word = win32com.client.Dispatch("Word.Application")
    word.Visible = True  # 使Word可见

    # 打开已有的文档
    doc = word.Documents.Open(output_file)    
    selection = word.Selection  
    selection.TypeText(res) 

这样的话再重新运行应用,就不会报接口被占用的错误了。

电脑不给力运行不了?试试高配云电脑>>
如需1对1人工答疑支持
爱发电:点击前往
赞(0) 打赏
软件无法使用?点击查看常见问题说明>>

最新发布

ToDesk、青椒云、顺网云、海马云电脑使用体验分享-诺瓦小站

ToDesk、青椒云、顺网云、海马云电脑使用体验分享

最近调试了一些大的AI应用,我那渣渣电脑带不动,又不适合买新电脑,所以网上找了一些高端显卡云电脑作为替代,最近用了几家,如:ToDesk云电脑、青椒云电脑、顺网云电脑、海马云电脑,各有优劣吧,这里总结分享一下使用体验。 云电脑对比分析 海马...

觉得文章对你有帮助就打赏一下作者

非常感谢你的打赏,我将有更多的动力继续提供优质内容,让我们一起创建更加美好的世界!

支付宝扫一扫

微信扫一扫