问题标签 [pythoncom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5895 浏览

python-3.x - 带有 cx_freeze 和 pywin32 的 ImportError:模块“pythoncom”不在冻结的 sys.path 中

我正在尝试使用 cx_freeze 从 python3 脚本在 Windows 7 上创建一个 .exe。该脚本涉及使用 pywin32 来操作 Excel 文件。我可以从我的 setup.py 文件成功构建 .exe;但是,当我运行 .exe 时,会引发以下错误:

回溯(最近一次通话最后):

文件“C:\Python33\lib\site-packages\cx_Freeze\initscripts\Console3.py”,第 27 行,在 exec(code,m_ dict _)

<module> 中的文件“MyScript.py”,第 12 行

_find_and_load 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 1558 行

_find_and_load_unlocked 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 1505 行

_call_with_frames_removed 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 313 行

_find_and_load 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 1558 行

_find_and_load_unlocked 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 1525 行

文件“C:\Python33\lib\site-packages\win32com__init__.py”,第 6 行,在 <模块>

导入pythoncom

_find_and_load 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 1558 行

_find_and_load_unlocked 中的文件“C:\Python\64-bit\3.3\lib\importlib_bootstrap.py”,第 1525 行

文件“C:\Python33\lib\site-packages\pythoncom.py”,第 3 行,在
pywintypes._import_pywin32_system_module_("pythoncom", globals())

_import_pywin32_system_module_ 中的文件“C:\Python33\lib\site-packages\win32\lib\pywintypes.py”,第 61 行

raise ImportError("Module '%s' is not in freeze sys.path %s" % (modname, sys.path))

ImportError:模块“pythoncom”不在冻结的 sys.path 中

['C:\Python33\build\exe.win-amd64\3.3\MyScript.exe',

'C:\Python33\build\exe.win-amd64\3.3',

'C:\Python33\build\exe.win-amd64\3.3\MyScript.zip',

'C:\Python33\build\exe.win-amd64\3.3\library.zip']

这是我的 setup.py 文件当前的样子:

到目前为止,我已经尝试在包含和包列表中列出“pythoncom”和“win32com”。任何帮助是极大的赞赏!

0 投票
6 回答
68657 浏览

python - ImportError:没有名为 pywintypes 的模块

我正在使用 pyHook、pythoncom 和 Pywin32 模块用 Python 制作一个小型键盘记录器。这是我的代码:

当它运行时,它会返回以下错误消息:

如何修复此错误?

0 投票
0 回答
73 浏览

python - Python COM 服务器:访问单例

我需要通过 COM 访问来自不同 python 进程的单个对象的数据。

在 stackoverflow 上的一个类似问题中,建议让客户端创建多个 COM 对象,但让它们与单个对象实现进行通信......但我真的不知道该怎么做。

任何人都可以帮忙吗?

谢谢!马耳他

0 投票
1 回答
3832 浏览

python - 我想停止 pythoncom 工作

我正在通过 pyHook 编写有关键盘记录的代码。以下代码是示例:

我想稍后(例如五秒钟)停止 pythoncom 的 PumpMessages 方法。但我找不到任何答案。

我使用:Windows 7,Python2.7

感谢您的回答。

0 投票
1 回答
1407 浏览

python - pythoncom.Pumpmessages 在 python 中

我正在用python编写小键盘记录器。这是我的代码。

但为什么pythoncom.PumpMessages()不工作?有没有办法在线程中运行 pythoncom.PumpMessages 函数?

0 投票
1 回答
499 浏览

python - 实例化 VisualStudio.VCProjectEngine.10.0 及更高版本神秘地失败,8.0 没有

注意:问题最初是关于 Python 和win32com的,但事实证明问题存在于 COM 服务器中,而不是客户端。因此,问题和答案中的信息适用于所有可用作 COM 客户端的语言。

也许有人可以帮忙。我面临的是以下情况。我可以用我的代码实例化VisualStudio.VCProjectEngine.8.0就好了。相关代码:

...给出了这个错误:

如您所见,一个工作正常,另一个神秘地失败了。是什么赋予了?


这是makepy.py -i给出的:


注意:我刚刚注意到由匹配给出的 CLSIDmakepy.py -i匹配VisualStudio.VCProjectEngine.8.0,但不匹配VisualStudio.VCProjectEngine.10.0(注册表显示的位置{4547a58d-fc1c-4502-84fa-0163ee766635}):

注册表中 VisualStudio.VCProjectEngine.10.0 的 CLSID

但是,即使将元组调整为VisualStudio.VCProjectEngine.10.0to('{4547a58d-fc1c-4502-84fa-0163ee766635}', 0, 10, 0)也无济于事。


该错误似乎与 Visual Studio 2010 及更高版本有关。我还尝试使用 给定VisualStudio.VCProjectEngine.11.0VisualStudio.VCProjectEngine.12.0值作为 ProgID makepy.py -i,但错误相似:

0 投票
1 回答
295 浏览

python - python win32com,对象会自动重用吗?

python 代码遍历一个简单文档的段落(7 行“第 1 行”、“第 2 行”等)。我希望每个段落对象都是唯一的,但实际上我得到了重复,在这种情况下0x25173368。怎么了?这完全违背我的直觉。

编码:

输出:

0 投票
1 回答
1964 浏览

python - 使用 pythoncom 在 Python 进程之间编组 COM 对象

我希望有人可以帮助我能够从 Python 对 Excel 进行编组跨进程调用。

我有一个通过 Python 启动的 Excel 会话,我知道它会在需要从单独的 Python 进程访问时启动并运行。CoMarshalInterfaceInStream()使用 pythoncom 模块的编组和调用,我已经让所有工作都按预期工作CoGetInterfaceAndReleaseStream(),但我需要重复访问流(在我的情况下我只能设置一次),并CoGetInterfaceAndReleaseStream()允许对接口进行一次访问。

我相信我想实现的目标可以用 来完成CreateStreamOnHGlobal()CoMarshalInterface()CoUnmarshalInterface()我无法让它工作,几乎可以肯定是因为我没有传入正确的参数。

我没有详细描述我的主要场景,而是设置了一个简单的示例程序,如下所示 - 显然这发生在同一个过程中,但一次一步!以下代码段工作正常:

但是,当我尝试以下操作时:

调用时出现此错误(我想这与第三个参数有关)pythoncom.CoMarshalInterface()

有谁知道我怎样才能让这个简单的例子工作?

提前致谢

0 投票
0 回答
510 浏览

excel - 使用 Documents.Open 方法传入密码。这个对吗?

我在 .py 脚本中有以下代码行,并且正在访问受密码保护的文档。但是,当此脚本运行时,一旦 winword.exe 可见,Word 会再次向用户询问密码。这是正常行为吗?我很怀疑,因为它会询问我是否将密码包含在我的 .py 文件中。任何输入表示赞赏。以下是代码:

附带说明一下,目标是 .docx 只能通过此脚本(打开 Word)访问,不能通过其他任何方式访问。任何其他人为实现此目的而想到的任何替代方法也将受到赞赏。

0 投票
1 回答
5137 浏览

python - 如何在 Python 中正确加载 Windows COM DLL

我正在尝试在 Python 中加载 Windows COM DLL 以获取所有公开的接口。

使用依赖遍历器工具,我可以列出 dll 中的函数。我只看到 4 个功能:

  1. DLLCanUnloadNow
  2. DllGetClassObject
  3. DLL注册服务器
  4. DllUnregisterServer

如果我理解正确,我需要使用 DllGetClassObject() 获取类的对象,然后使用暴露的接口。

我正在使用 pythoncom 和 win32com.client 来提取对象(从另一个stackoverflow 帖子中获取配方)

cls_id从 Windows 注册表中获得了 PTSControl 工具。但这会引发 WindowsError。

任何想法我做错了什么?我无权访问该工具的源代码。

在 C++ 中,这是两步过程,但不知道如何在 Python 中完成:

  1. CoInitializeEx()
  2. 协同创建实例()

一般来说,在 python 中访问 Windows COM DLL 的最佳技术是什么?谢谢 !!