如何使用IronPython中的win32api

时间:2008-09-24 15:34:50

标签: c# winapi ironpython

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

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

.NET (C#): Getting child windows when you only have a process handle or PID?

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

3 个答案:

答案 0 :(得分:2)

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

Dynamically compiling C# from 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。有很多例子可以找到如何做到这一点。

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