在IronPython中编写一些测试脚本,我想验证是否显示了一个窗口。我有主应用程序进程的pid,并希望获得与pid相关的窗口标题列表。
我试图避免使用win32api调用,例如FindWindowEx,因为(据我所知)你无法直接从IronPython访问win32api。有没有办法使用内置的.net类来做到这一点?我遇到的大多数内容都建议使用win32api,如下所示。
.NET (C#): Getting child windows when you only have a process handle or PID?
更新:我找到了解决我想做的事情。答案如下。
答案 0 :(得分:2)
下面的文章展示了如何从IronPython间接访问win32api。它使用CSharpCodeProvider CompileAssemblyFromSource方法从提供的C#源代码字符串中编译内存中的程序集。然后IronPython可以导入程序集。
答案 1 :(得分:1)
从IronPython 2.6开始,支持ctypes模块。该模块提供C兼容的数据类型,并允许在DLL中调用函数。快速举例:
import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value
答案 2 :(得分:0)
这就像问你是否可以在不进水的情况下游泳。如果您需要来自Windows的信息,唯一的选择是使用win32api。有很多例子可以找到如何做到这一点。
如果你不喜欢这个答案,只需在你的问题中留言,我会删除这个答案,所以你的问题将保留在未答复的问题列表中。