2008-09-24 83 views
3

在IronPython中編寫一些測試腳本,我想驗證一個窗口是否顯示。我有主應用程序的進程的PID,並希望獲得與PID相關的窗口標題列表。如何從IronPython使用win32api

我試圖避免使用win32api調用,如FindWindowEx,因爲(據我所知),你不能直接從IronPython訪問win32api。有沒有辦法做到這一點使用內置的.net類?我遇到的大部分內容都推薦使用win32api,比如下面的例子。

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

更新:我發現了一個變通什麼,我要怎樣做。下面回答。

回答

2

下面的文章顯示瞭如何從IronPython間接訪問win32api。它使用CSharpCodeProvider CompileAssemblyFromSource方法從提供的C#源代碼字符串中編譯內存中的程序集。 IronPython然後可以導入程序集。

Dynamically compiling C# from IronPython

0

這就像問你是否可以不去水裏游泳一樣。如果你需要Windows的信息,唯一的選擇是使用win32api。有很多例子可以找到如何做到這一點。

如果你不喜歡這個答案,只是留下你的問題的評論,我會刪除這個答案,所以你的問題將保留在未回答的問題列表。

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