问题标签 [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 投票
1 回答
676 浏览

python - 按类/接口名称实例化没有 ProgID 的 COM 对象

pywin32客户端 COM 的文档显示了这种实例化 COM 对象的基本方法:

我正在尝试使用PersistentZoneIdentifier类似于操作区域标识符以指定文件从何处下载的工作 - The Old New Thing - MSDN blogs。该类,如注册表HKEY_CLASSES_ROOT\CLSID\{0968e258-16c7-4dba-aa86-462dd61e31a3}所示,没有对应的ProgID.

我看到有一个底层pythoncom.CoCreateInstance函数接受一个CLSID实例化和一个IID显然从中查询的函数。

但这很不方便,因为我必须使用难以理解的 GUID 而不是人类可读的名称。


问题是:

  • /underlying WinAPI 中是否有一种pywin32按名称查找上述 GUID 的常用方法?(不建议手动搜索注册表)
  • 或者也许有其他方法可以用名称实例化该对象?

我尝试过但失败了:win32com.client.IDispatch(<class/interface name>)pythoncom.IID(<class/interface name>)。当然,还查看了 Net、MSDN 和 PyWin32 文档。

0 投票
1 回答
959 浏览

python - pythoncom.CoCreateInstance 无法创建 IZoneIdentifier;尽管在 MSDN 中有记录,但该接口也从注册表中丢失

我正在尝试实现操作区域标识符以指定文件的下载位置——旧的新事物——Python 中的 MSDN 博客。

CoCreateInstance

我收到一个错误:

(没有堆栈跟踪,因为这是一个扩展功能)

如果我用or替换IZoneIdentifierIID ,它可以工作,但是具有正确 IID 的 a 会失败并出现相同的错误。pythoncom.IID_IUnknownpythoncom.IID_IPersistFileQueryInterface

事实上,在 中HKCR\Interface,我什么都没有IZoneIdentifier看到,但确实看到了IPersistFile


disassembledurlmon.dll后,我看到它确实实现了接口,但没有在它的DllRegisterServer. 进一步搜索,我看到它IPersistFile正在被注册ole32.dll- 但不是IZoneIdentifier.

MSDN记录了这个接口从 IE6 开始可用。但它在 IE7 或 IE8 中都不存在。由于这是 XP(并且据称包含所有更新),因此我没有其他可尝试的方法。

同样,该接口存在于urlmon.hMSDN 文章中提到的文件中的 Windows SDK 7.0 中。

问题是:

  • 这个界面是否默默地放弃了,而没有 MSDN 反映这一点或其他什么?或者,这是一个已知问题吗?以后版本的 IE 可以用吗?
  • 哪些组件具有哪些功能ole32.dllurlmon.dll相关(因此我可以尝试(卸载)为它们安装更新)?
0 投票
0 回答
198 浏览

windows - cx_Freeze ImportError:没有名为“pythoncom”的模块

问题

尝试运行使用 cx_Freeze 构建的 .exe 时出现以下错误:

ImportError:没有名为“pythoncom”的模块

我该如何解决这个问题?

cx_Freeze:主脚本中的 Python 错误

附加信息

设置:

  • Windows 7 企业版 64 位
  • WinPython-64bit-3.5.2.3Qt5(Python 3.5.2 64 位)
  • cx_Freeze 5.0

设置.py:

GUI.py 中的导入*

*其中一部分

使用“pythoncom”或“pywin”构建输出行:

构建过程中的错误:

没有任何

我还尝试过什么?

  1. 构建没有'includes': ['pythoncom']. 结果是一样的。
  2. 'packages': ['pythoncom']. 结果是一样的。
  3. 'includes': ['pywin32']. 将ImportError: No module named 'pywin32'在构建期间获得。
  4. 'packages': ['pywin32']. 将ImportError: No module named 'pywin32'在构建期间获得。
0 投票
1 回答
1119 浏览

python - win32com.client.DispatchWithEvents 用于同一线程中的多个对象

我正在尝试使用以下代码同时在 2 个单独的收件箱中侦听 OnItemAdd 事件:

pythoncom.PumpMessages() 似乎不起作用。如果我重构代码只收听一个收件箱的项目,它确实有效。

关于如何解决这个问题的任何想法?

0 投票
0 回答
1708 浏览

python - pythoncom错误调用COM方法excel新表

我一直在研究一些 Python/Excel 应用程序,但是遇到了一个有趣的问题。我已将示例简化到产生错误的程度。

(警告 - 没有中断机制的无限循环)

运行时,它会打开 Excel,添加新工作簿,然后等待应用程序或工作簿对象上的事件。

如果我在 Excel 中执行任何可能的事件,则只有在将新工作表添加到工作簿时才会发生任何事情(因为事件类中没有定义处理程序)。立即产生以下错误:

我知道我可以在 pythoncom.PumpWaitingMessage() 周围放置 try/except 并且我知道这是 pythonic 方式:D 但是我仍然有兴趣知道是什么导致了这个错误......连续 4 次


编辑:尝试/除了泵周围不起作用以避免显示错误

0 投票
0 回答
298 浏览

python - 反复按下 alt+tab 时 Python 中的脚本崩溃(pyhook 和 pythoncom)

我正在 Windows 10 上的 Python 3.5.2 中制作一个脚本,该脚本捕获用户按下的键。代码运行良好,除非我按 alt+tab 切换窗口,有时会立即崩溃,有时会在我反复按下时崩溃。

接下来是最基本的代码:

有一个带有问题的视频

我不想在任何情况下停止脚本。我该如何解决?

谢谢。

0 投票
1 回答
713 浏览

python - 我可以使用 pyHook 读取 Unicode 值吗?

我创建了一个简单的键盘记录程序。在键盘上键入的所有内容都会发送到 log.txt 文件。问题是我的代码仅适用于 ASCII 代码。当我输入希腊字符时,它们被视为英文。

我希望我的代码:

  1. 也接受希腊字符或其他语言(通常是所有类型的字符)
  2. 记录诸如 Alt、Ctrl 等事件

到目前为止我的代码:

我的程序应该接受 Unicode 吗?

它怎么能这样做?

0 投票
0 回答
935 浏览

python - 在 OS X 上针对 Pywin32 的代码?

我正在编写一些旨在在 Windows 机器上运行的代码,我想利用 Windows 特定模块,例如 Pywin32 或 Pythoncom。但是,我目前使用 OS X 作为我的主要开发平台,并且不能仅仅 pip install 这些软件包,因为它们显然是要安装在 Windows 机器上的。有没有办法可以导入这些模块并对其进行编码(类似于我可以使用 ctypes 与 DLL 交互的方式)?

0 投票
1 回答
239 浏览

python - Pyhook 出于某种原因给了我奇怪的输出

所以我是 Pyhook 的新手,我想让自己成为一个用于教育目的的键盘记录器。但是,日志给了我奇怪的输入。它要么只是随机符号,总是大写,要么都是好的和正常的。

我正在使用 python 3.4,我在 Windows 上。

这是我的代码:

代码大部分来自互联网,但略有修改。

现在的问题是:如何确保它始终是正常输出?

让我知道是否有任何需要澄清的地方。

0 投票
1 回答
756 浏览

python - python COM服务器中的查询接口

我目前从 win32com 包开始。我有 XSL 文件,我在其中使用用 Python 编写的 COM 对象:

XSL 转换使用 MSXML2 XSL 处理器完成,python COM 对象使用addObject方法注入。GetTest方法的实现如下:

obj参数的类型为PyIDispatch。为了使用我的 IXMLDOMNode 节点接口,我必须以某种方式获取它,对吗?但是,未注释的方法失败了

并且评论的方法失败了

有人可以建议做错了什么吗?提前致谢。