|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
AIR приложение. Нужно сделать скриншот всего экрана.
Задача: снять скриншот со всего экрана в AIR приложении.
Одними средствами AIR не обойтись. Нужно использовать native extension. Пока нужно только для windows, в перспективе для linux и mac. Нашел два проекта: 1) https://github.com/pcichon/ScreenShooter На одной машине работает прекрасно. На другой жалуется что нет библиотеки сишной msvcr100.dll 2) Nitro Screen Cap Но сайт с лицензиями лежит. Саппорт не отвечает. Кто решал подобную задачу, поделитесь опытом.
__________________
Сам себе репортер |
|
|||||
listener
|
А чего решать, если работает?
Цитата:
PS. Вообще, можно избавиться от этой проблемы, переписав длл экстенжена на чистом WIN API, там всего-то одна функция, пример ее реализации без CLR можно опять же нагуглить за 5 минут. |
|
|||||
Спасибо за помощь!
Собственно вот код экстеншена Подскажите, какие методы заменить, чтобы было на чистом WIN API
__________________
Сам себе репортер |
|
|||||
listener
|
Надо преобразовать проект весь студийный, убрать поддержку CLR, включить линковку статическую с рантаймом, из кода выкинуть "управляемые" инструкции, заменить их на сишные аналоги. В основном в части преобразования полученного битмапа в массив байтов для возврата во флеш. Вот это точно надо заменить:
MemoryStream^ stream = gcnew MemoryStream(); Bitmap^ bitmap = Image::FromHbitmap((IntPtr)hbmScr); bitmap->Save(stream, ImageFormat::Png); array<Byte>^ raw = stream->ToArray(); uint8_t* output = new uint8_t[iXRes * iYRes * 4]; int outputSize = (int) stream->Length; Marshal::Copy(raw, 0, (IntPtr) output, outputSize); Если есть прогер сишник толковый под рукой - делов немного. Потом перекомпилить весь проект, получится длл экстенжена без CLR. Ее и пробовать юзать. И да, преобразование в ПНГ - это как бы опция, можно в jpeg, bmp отдать картинку. Для простоты кода преобразования форматов, в виндах пользуется gdiplus, это как бы еще одна зависимость, но насколько я знаю эта либа сидит во всех виндах по умолчанию, начиная с XP, или даже раньше, проблем быть не должно. Совсем попростому - опять же положить рантайм рядом с экстенженом и не париться. ПС. Немного смущает, что экстенжены для айра пишут в виндах на CLR, что-то совсем нативных примеров не встречал, странно как-то.. |
|
|||||
Попробовал положить длл рядом:
1) Взял свою длл из c:\Windows\System32\msvcr100.dll 2) Упаковал в инсталлятор Цитата:
В папке появилась нужная длл C:\Program Files\ScreenShooterTest\META-INF\AIR\extensions\com.genesi.desktop.ScreenShooter\META-INF\ANE\Windows-x86 4) При запуске точно так же ругается, что нет msvcr100.dll
__________________
Сам себе репортер |
|
|||||
Спасибо еще раз.
После добавления msvcr100.dll, программа потребовала еще msvcp100.dll. После этого запустилась. Запаковал длл-ки как дополнительные файлы в AIR инсталлятор.
__________________
Сам себе репортер |
|
|||||
Регистрация: Mar 2007
Сообщений: 39
|
Под 7 почему то падает все приложение. Может кто то пробовал под 7 и получилось. Поделитесь пожалуйста.
|
Часовой пояс GMT +4, время: 01:32. |
|
« Предыдущая тема | Следующая тема » |
|
|