Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.12.2012, 00:48
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 1  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
По умолчанию AIR приложение. Нужно сделать скриншот всего экрана.

Задача: снять скриншот со всего экрана в AIR приложении.
Одними средствами AIR не обойтись. Нужно использовать native extension.
Пока нужно только для windows, в перспективе для linux и mac.

Нашел два проекта:
1) https://github.com/pcichon/ScreenShooter
На одной машине работает прекрасно. На другой жалуется что нет библиотеки сишной msvcr100.dll
2) Nitro Screen Cap Но сайт с лицензиями лежит. Саппорт не отвечает.

Кто решал подобную задачу, поделитесь опытом.

Старый 03.12.2012, 09:11
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
А чего решать, если работает?
Цитата:
На другой жалуется что нет библиотеки сишной msvcr100.dll
Положите msvcr100.dll рядом с dll экстенжена. Это студийный рантайм, к сожалению в проекте CLR нельзя его слинковать статически, потому приходится таскать с собой. Этот рантайм можно поставить отдельно, так многие проги делают. Погугли vcredist*, vc redistributable package. Ну или вынуть из этого пакажа рантайм и положить рядом, как я сказал.
PS. Вообще, можно избавиться от этой проблемы, переписав длл экстенжена на чистом WIN API, там всего-то одна функция, пример ее реализации без CLR можно опять же нагуглить за 5 минут.

Старый 03.12.2012, 11:39
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 3  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Спасибо за помощь!
Собственно вот код экстеншена
Подскажите, какие методы заменить, чтобы было на чистом WIN API

Старый 03.12.2012, 13:04
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Надо преобразовать проект весь студийный, убрать поддержку CLR, включить линковку статическую с рантаймом, из кода выкинуть "управляемые" инструкции, заменить их на сишные аналоги. В основном в части преобразования полученного битмапа в массив байтов для возврата во флеш. Вот это точно надо заменить:
Код AS3:
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);
Плюсом будет независимость от .NET Framework.
Если есть прогер сишник толковый под рукой - делов немного. Потом перекомпилить весь проект, получится длл экстенжена без CLR. Ее и пробовать юзать.
И да, преобразование в ПНГ - это как бы опция, можно в jpeg, bmp отдать картинку. Для простоты кода преобразования форматов, в виндах пользуется gdiplus, это как бы еще одна зависимость, но насколько я знаю эта либа сидит во всех виндах по умолчанию, начиная с XP, или даже раньше, проблем быть не должно.
Совсем попростому - опять же положить рантайм рядом с экстенженом и не париться.
ПС. Немного смущает, что экстенжены для айра пишут в виндах на CLR, что-то совсем нативных примеров не встречал, странно как-то..

Старый 03.12.2012, 13:32
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 5  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Попробовал положить длл рядом:
1) Взял свою длл из c:\Windows\System32\msvcr100.dll
2) Упаковал в инсталлятор
Цитата:
"d:\flex_sdk_4.6\bin\adt.bat" -package -storetype pkcs12 -keystore test.p12 -storepass test -target ane ScreenShooter.ane extension.xml -swc ScreenShooter.swc -platform Windows-x86 library.swf ScreenShooter.dll msvcr100.dll
3) Удалил старую версию скриншотера. Установил новую.
В папке появилась нужная длл
C:\Program Files\ScreenShooterTest\META-INF\AIR\extensions\com.genesi.desktop.ScreenShooter\META-INF\ANE\Windows-x86
4) При запуске точно так же ругается, что нет msvcr100.dll

Старый 03.12.2012, 13:49
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 6  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
эмм.. неточно выразился. попробуй положить msvcr100.dll в рабочую папку приложения, т.е. откуда запуск происходит. не надо ее паковать вместе с экстенженом.

Старый 03.12.2012, 14:23
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 7  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Спасибо еще раз.
После добавления msvcr100.dll, программа потребовала еще msvcp100.dll.
После этого запустилась.
Запаковал длл-ки как дополнительные файлы в AIR инсталлятор.

Старый 25.01.2013, 00:02
viclight вне форума Посмотреть профиль Отправить личное сообщение для viclight Найти все сообщения от viclight
  № 8  
Ответить с цитированием
viclight

Регистрация: Mar 2007
Сообщений: 39
Под 7 почему то падает все приложение. Может кто то пробовал под 7 и получилось. Поделитесь пожалуйста.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:38.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.