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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.01.2013, 15:44
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 1  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Question Выключение компьютера отменяется AIR-приложением

Товарищи, есть один момент, который не могу даже нагуглить, ибо не знаю куда копать или как правильно составить запрос.

В общем есть обычное приложения для Win и Macos на AIR. Оно умеет делать startAtLogin = true при включении системы, autoExit = false (просто сворачивается в трей по крестику), ну и пишет пару килобайт в файлы и sharedobject'ы. На этом "жесткое общение" с операционной системой у неё заканчивается. То есть ни в реестр, ни в системные файлы оно не лезет. Остальное - это общение с сервером через интернет URLRequest'ами. При запуске оно сворачивается в трей и висит себе там до лучших времен или пока её не закроешь.

Дык вот, при завершении работы Windows или MacOS - в винде выдаётся месседж о том, что "Остановите его принудительно, а то работу завершить не могу", а в MacOS - вот такая вот беда (см. скрин).

Что ОСи не нравится в софтине, и что может препятствовать автоостановке приложения?

АПД: другая похожая софтина с startAtLogin и autoExit такой проблемы не вызывает. Я уж не знаю на что грешить.
Изображения
 
__________________
Кодинг, багинг, алгоритминг. me @


Последний раз редактировалось DaFive; 09.01.2013 в 15:54.
Старый 09.01.2013, 20:22
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 2  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Событие NativeApplication.exiting как обрабатывается в одном и в другом приложении? Вам где-то NativeApplication.exit нужно вручную вызывать, чтобы приложение завершилось.

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
На сколько я помню, в Windows при попытке выключить/ребутить комп или просто завершить сеанс система шлет приложениям специальное сообщение WM_QUERYENDSESSION, на которое приложение должно ответить да/нет по ситуации: "нет" (false),если оно не хочет пока завершаться,например, надо там чего-то подчистить и т.п., ну, или "да"(true), если ему пофик. Потом система делает еще один, контрольный выстрел - WM_ENDSESSION, где, по-сути, и нужно окончательно капитулировать.
Когда приложение свернуто в трэй, т.е. активного окна нема, могут быть косяки с доставкой этих сообщений приложению. Это первое. Ну, а второе, как в рантайме айра его окна реагируют на эти мессаги и есть ли какой-нибудь способ это проконтролировать из кода флешки - покрыто мраком.

Старый 10.01.2013, 09:50
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 4  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Цитата:
Сообщение от alexcon314 Посмотреть сообщение
и есть ли какой-нибудь способ это проконтролировать из кода флешки - покрыто мраком.
Думаю любые события можно отловить с помощью нативного расширения.

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

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

Старый 10.01.2013, 10:26
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 6  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Вызвать флешовый метод из натива - можно сделать одной строкой. Ниже пример для iOS(думаю для винды будет что то похожее)
Код:
NSString *myStr = @"myParameter=myValue";
FREDispatchStatusEventAsync(context, (uint8_t*)"MY_EVENT_NAME", (uint8_t*)[myStr UTF8String]);
Во флеше слушаем событие:
Код AS3:
context.addEventListener(StatusEvent.STATUS, statusHandler);
....
private function statusHandler(event:StatusEvent):void
{
    trace(event.code) // output: MY_EVENT_NAME
    trace(event.level) // output: myParameter=myValue
}
__________________
FlashPress.ru | Blog

Старый 10.01.2013, 10:40
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 7  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Спасибо за ответы.

Цитата:
Сообщение от maxkar Посмотреть сообщение
Событие NativeApplication.exiting как обрабатывается в одном и в другом приложении? Вам где-то NativeApplication.exit нужно вручную вызывать, чтобы приложение завершилось.
Никак оно не обрабатывается. NativeApplication.exit я понимаю, что надо вызвать, чтобы оно завершилось. Только я не могу это отследить, ибо ОС сама его завершает, а не я, когда жму shut down в виндоусе или макоси.

maincode, а как вызвать флешовый метод из натива при завершении работы? Опять же писать что-то кастомное, которое будет срабатывать, когда я нативную функцию оси вызываю?
__________________
Кодинг, багинг, алгоритминг. me @

Старый 10.01.2013, 10:49
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 8  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
alexcon314 выше говорил что для корректного завершения программы нужно слушать события WM_QUERYENDSESSION и WM_ENDSESSION.

Для того что бы флешь мог услышать нативное событие: пишем нативный код для винды (C++ или C# не знаю как это там делается), в этом коде слушаем выше указанные нативные события. Как только нативное событие сработало - дергаем метод во флешке. Как дернуть флешовый метод из натива я писал выше.

http://anedevelop.blogspot.ru/ - здесь подробно расписано про нативные расширения для iOS, для человека разбирающегося в WinAPI думаю не сложно будет перенести на винду имеющиеся примеры.

Добавлено через 2 минуты
Если здесь есть программисты разбирающиеся в разработке для винды - я готов попробовать вместе написать нативное расширения для прослушивания этих событий. Интересная тема
__________________
FlashPress.ru | Blog

Старый 10.01.2013, 10:54
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 9  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Цитата:
Когда приложение свернуто в трэй, т.е. активного окна нема, могут быть косяки с доставкой этих сообщений приложению.
Вот что меня смущает. Есть ли смысл их вообще слушать, если они могут не дойти?

Ремарк: для MacOSx, не для iOS.

Добавлено через 5 минут
АПД: Забыл упомянуть. У меня отслеживается Event.CLOSING.
Каким образом можно завершить приложение - чкнуть в трее правой кнопкой мыши и в созданном мной меню выбрать "Завершить программу".

В обработчике Event.CLOSING у меня отслеживается:
1) Приложение не свернуто - evt.preventDefault(), сворачиваем;
2) Приложение свернуто в трей - nativeApplication.exit();

Но, повторюсь, при завершении работы в не зависимости от "свернутости" приложения - затык.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 10.01.2013, 11:01
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 10  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
хз, я предложил вариант как можно из флеша услышать событие которое передается приложению. А передаются они или нет и почему - не могу сказать, я не спец в этом деле.

Код который я писал выше - одинаково работает как для MacOS так и для iOS

Добавлено через 15 минут
DaFive: почитай http://help.adobe.com/ru_RU/as3/dev/...8666ade46-7cd3
может там найдешь ответ как корректно завершить приложение.
Если разберешься - поделись тестами
__________________
FlashPress.ru | Blog


Последний раз редактировалось maincode; 10.01.2013 в 11:17.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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