Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

Начиная с IronPython 2.6 cтипы модуль поддерживается.Этот модуль предоставляет типы данных, совместимые с 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