![]() |
Альтернатива Add-Type
Доброго времени суток! Собственно интересует сабж. Можно как-то обойтись без этогодурацкого командлета, который к тому же для компиляции кода создаёт временный файл в папке temp? Есть ли более, скажем так, изящные способы вызова WinAPI?
|
|
Альтернативных способов более, чем достаточно. Начнем с того, что непосредственно Add-Type можно "перегрузить" с помощью прокси-функции, добавив в него поддержку, скажем, Python, который адепты "синего" не жалуют, а между тем с его помощью вызов апишных функций упрощается в разы. Можно посредством рефлексии задействовать сигнатуры апишных функций, определенных в сборках самого фреймворка.
Код:
$ptr = [Runtime.InteropServices.Marshal]::AllocHGlobal(48) Шагаем дальше. Рефлексия в купе с обобщенными делегатами так же позволяет вызывать апишные функции. Код:
$max, $min, $cur = [Byte[]]@(0, 0, 0, 0), [Byte[]]@(0, 0, 0, 0), [Byte[]]@(0, 0, 0, 0) В том же $psdll определен метод pin - эквивалент DllImport в C#. Код:
$psdll = New-PSDllObject Есть и другоие варианты, но перечислять их здесь все слишком утомительно. |
Цитата:
Цитата:
|
Объясняю. Все это писалось для себя, так как подавляющее большинство использует Add-Type, поэтому вряд ли здесь последует детальное описание. Ко всему прочему вопрос был о WinAPI, а не о сторонних расширениях ;)
|
Время: 05:58. |
Время: 05:58.
© OSzone.net 2001-