Существуют ли версии C # для распространенных объявлений DLLImport? - PullRequest
1 голос
/ 20 марта 2011

Существует множество Win32 API вызовов / библиотек, таких как kernel32 или shell32, которые могут быть полезны для вызова из C # . Распространенным методом их использования является поиск определения метода на веб-сайте pinvoke.net и использование определения dllimport оттуда.

Этот процесс требуется для каждого метода, который вы хотите использовать.

Имеются ли доступные сборки, содержащие общие / большинство [DllImport] ed функций API?

Я ищу что-то, что можно использовать непосредственно из C # (в качестве ссылки), поэтому мне не нужно собирать и комбинировать все виды операторов DLLImport (с риском ошибок).

Ответы [ 3 ]

2 голосов
/ 20 марта 2011

Это не так, вы просто предоставляете объявление [DllImport] в своем коде C #. Точно так же, как вы найдете их на pinvoke.net или в таком инструменте, как P / Invoke Interop Assistant. Чтобы узнать, как на самом деле использовать функцию API, необходимо изучить код C или C ++. И общее понимание того, как работает Windows API.

Лучшее место для начала - это оригинальная книга Петцольда "Программирование Windows". Вы можете найти примеры исходного кода на C / C ++ в документации Windows SDK и многих примерах, которые включены в полную версию SDK. И, конечно, в Интернете, просто ища имя функции. По иронии судьбы, число сэмплов, которые вы найдете в Интернете в эти дни и написанные на управляемом языке, начинает превосходить по численности сэмплы C / C ++. Остерегайтесь объявлений VB6 (ключевое слово Declare), также широко доступных, их типы несовместимы с .NET.

Такие сайты, как codeplex.com и codeproject.com, являются хорошим местом для поиска библиотек с упаковщиками управляемых классов вокруг вызовов нативного API. Обычно вы просто используете библиотеку.

И последнее, но не менее важное: stackoverflow.com - отличный ресурс;)

2 голосов
/ 20 марта 2011

Вы должны найти здесь, на pinvoke.net , что вы ищете.На самом деле в исходном коде C # нет ничего более «закулисного», чем простые простые предложения импорта DLL.

1 голос
/ 20 марта 2011

Насколько мне известно, не существует широко известного пакета кода, обертывающего Windows API для .NET;Я мог бы видеть, что это полезно в определенных обстоятельствах, однако, в большинстве случаев, если вам нужно использовать так много встроенного API Windows, тогда вам следует спросить себя, правильно ли вы используете .NET Framework и / или почемувообще использовать .NET?

Независимо от вышеприведенного мнения, вы можете найти довольно полный источник определений на http://pinvoke.net/.

...