#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. Удачного кодирования