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

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

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

更新:我找到了解决我想做的事情。答案如下。

有帮助吗?

解决方案

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

从IronPython动态编译C#

其他提示

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

import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value

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

如果你不喜欢这个答案,只需在你的问题中留言,我会删除这个答案,所以你的问题将保留在未答复的问题列表中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top