Как использовать win32api от IronPython - PullRequest
3 голосов
/ 24 сентября 2008

При написании некоторых тестовых сценариев на IronPython я хочу проверить, отображается окно или нет. У меня есть pid процесса основного приложения, и я хочу получить список заголовков окон, связанных с pid.

Я пытался избежать использования вызовов win32api, таких как FindWindowEx, поскольку (насколько мне известно) вы не можете получить доступ к win32api напрямую из IronPython. Есть ли способ сделать это с помощью встроенных классов .net? Большинство вещей, с которыми я сталкивался, рекомендует использовать win32api, например ниже.

.NET (C #): Получение дочерних окон, когда у вас есть только дескриптор процесса или PID?

ОБНОВЛЕНИЕ: я нашел обходной путь к тому, что я пытался сделать. Ответ ниже.

Ответы [ 3 ]

2 голосов
/ 20 октября 2008

В статье ниже показано, как получить прямой доступ к win32api из IronPython. Он использует метод CSharpCodeProvider CompileAssemblyFromSource для компиляции сборки в памяти из предоставленной строки исходного кода C #. Затем IronPython может импортировать сборку.

Динамическая компиляция C # из IronPython

1 голос
/ 07 августа 2012

Начиная с версии IronPython 2.6 поддерживается модуль ctypes . Этот модуль предоставляет C-совместимые типы данных и позволяет вызывать функции в DLL. Быстрый пример:

import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value
0 голосов
/ 24 сентября 2008

Это все равно что спросить, можно ли плавать, не заходя в воду. Если вам нужна информация из Windows, единственный вариант - использовать win32api. Есть много примеров того, как это сделать.

Если вам не нравится этот ответ, просто оставьте комментарий в своем вопросе, и я удалю этот ответ, чтобы ваш вопрос остался в списке оставшихся без ответа вопросов.

...