3

在 IronPython 中编写一些测试脚本,我想验证一个窗口是否显示。我有主应用程序进程的 pid,并且想要获取与 pid 相关的窗口标题列表。

我试图避免使用诸如 FindWindowEx 之类的 win32api 调用,因为(据我所知)您无法直接从 IronPython 访问 win32api。有没有办法使用内置的 .net 类来做到这一点?我遇到的大多数东西都建议使用 win32api,如下所示。

.NET (C#):只有进程句柄或 PID 时获取子窗口?

更新:我找到了解决我想做的事情的方法。下面回答。

4

3 回答 3

3

从 IronPython 2.6 开始,支持ctypes模块。该模块提供 C 兼容的数据类型,并允许调用 DLL 中的函数。快速示例:

import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value
于 2012-08-07T07:47:03.770 回答
2

下面的文章展示了如何从 IronPython 间接访问 win32api。它使用 CSharpCodeProvider CompileAssemblyFromSource 方法从提供的 C# 源代码字符串编译内存中的程序集。IronPython 然后可以导入程序集。

从 IronPython 动态编译 C#

于 2008-10-20T16:48:41.187 回答
0

这就像问你是否可以在不下水的情况下游泳。如果您需要来自 Windows 的信息,唯一的选择是使用 win32api。有很多关于如何做到这一点的例子。

如果您不喜欢这个答案,只需在您的问题中留下评论,我将删除此答案,因此您的问题将保留在未回答的问题列表中。

于 2008-09-24T19:28:30.557 回答