Как использовать неуправляемую dll в .net project?

#c# #asp.net #unmanaged #dllimport

#c# #asp.net #неуправляемая #dllimport

Вопрос:

Я работаю над ASP.NET проект, который генерирует снимки экрана. Я хочу использовать gdi32.dll в моем проекте. Как я могу ее импортировать?

Комментарии:

1. Я знаю, что мой вопрос прозвучит странно, но вы упомянули, что ваш проект генерирует снимки экрана. Планируете ли вы использовать неуправляемую dll на стороне клиента или сервера?

2. Я пытаюсь сгенерировать ее на стороне сервера. Я борюсь с этим, поскольку не могу найти полное решение, которое привязывает полную / частичную страницу независимо от полос прокрутки, с элементами управления silverlight / flash и без случайных пустых изображений.

Ответ №1:

Вам нужно использовать P / Invoke.

Комментарии:

1. Кроме того, pinvoke. net является хорошим источником сигнатур методов.

2. @PVitt — Только если вы хотите вызвать библиотеку Window. Я бы сказал, что для автора есть гораздо более простой метод, помимо P / Invoke, конечно, зависит от того, что он делает скриншот, я полагаю.

3. @Ramhound — Я пробовал использовать webbrowser.drawtobitmap (), который не работает, когда на странице есть silverlight / flash и она часто генерирует пустые изображения. Вот почему я пытаюсь использовать GDI в поисках решения.

Ответ №2:

Вы могли бы использовать оболочку C / CLI, в зависимости от ваших требований. Это упрощает некоторые вещи.

Ответ №3:

Если dll является системной DLL, вы должны добавить программно следующим образом:

[DllImport("gdi32.dll", CharSet = CharSet.Ansi,
BestFitMapping = true, ThrowOnUnmappableChar = true)]

И убедитесь, что проект (платформа решения) настроен на 32 или x86, а не на какой-либо процессор. Вы можете найти больше об этом с помощью простого поиска в Google. Удачного кодирования