|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Выключение компьютера отменяется AIR-приложением
Товарищи, есть один момент, который не могу даже нагуглить, ибо не знаю куда копать или как правильно составить запрос.
В общем есть обычное приложения для Win и Macos на AIR. Оно умеет делать startAtLogin = true при включении системы, autoExit = false (просто сворачивается в трей по крестику), ну и пишет пару килобайт в файлы и sharedobject'ы. На этом "жесткое общение" с операционной системой у неё заканчивается. То есть ни в реестр, ни в системные файлы оно не лезет. Остальное - это общение с сервером через интернет URLRequest'ами. При запуске оно сворачивается в трей и висит себе там до лучших времен или пока её не закроешь. Дык вот, при завершении работы Windows или MacOS - в винде выдаётся месседж о том, что "Остановите его принудительно, а то работу завершить не могу", а в MacOS - вот такая вот беда (см. скрин). Что ОСи не нравится в софтине, и что может препятствовать автоостановке приложения? АПД: другая похожая софтина с startAtLogin и autoExit такой проблемы не вызывает. Я уж не знаю на что грешить.
__________________
Кодинг, багинг, алгоритминг. me @ Последний раз редактировалось DaFive; 09.01.2013 в 15:54. |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Событие NativeApplication.exiting как обрабатывается в одном и в другом приложении? Вам где-то NativeApplication.exit нужно вручную вызывать, чтобы приложение завершилось.
|
|
|||||
listener
|
На сколько я помню, в Windows при попытке выключить/ребутить комп или просто завершить сеанс система шлет приложениям специальное сообщение WM_QUERYENDSESSION, на которое приложение должно ответить да/нет по ситуации: "нет" (false),если оно не хочет пока завершаться,например, надо там чего-то подчистить и т.п., ну, или "да"(true), если ему пофик. Потом система делает еще один, контрольный выстрел - WM_ENDSESSION, где, по-сути, и нужно окончательно капитулировать.
Когда приложение свернуто в трэй, т.е. активного окна нема, могут быть косяки с доставкой этих сообщений приложению. Это первое. Ну, а второе, как в рантайме айра его окна реагируют на эти мессаги и есть ли какой-нибудь способ это проконтролировать из кода флешки - покрыто мраком. |
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Думаю любые события можно отловить с помощью нативного расширения.
|
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Вызвать флешовый метод из натива - можно сделать одной строкой. Ниже пример для iOS(думаю для винды будет что то похожее)
NSString *myStr = @"myParameter=myValue"; FREDispatchStatusEventAsync(context, (uint8_t*)"MY_EVENT_NAME", (uint8_t*)[myStr UTF8String]);
__________________
FlashPress.ru | Blog |
|
|||||
Спасибо за ответы.
Цитата:
maincode, а как вызвать флешовый метод из натива при завершении работы? Опять же писать что-то кастомное, которое будет срабатывать, когда я нативную функцию оси вызываю?
__________________
Кодинг, багинг, алгоритминг. me @ |
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
alexcon314 выше говорил что для корректного завершения программы нужно слушать события WM_QUERYENDSESSION и WM_ENDSESSION.
Для того что бы флешь мог услышать нативное событие: пишем нативный код для винды (C++ или C# не знаю как это там делается), в этом коде слушаем выше указанные нативные события. Как только нативное событие сработало - дергаем метод во флешке. Как дернуть флешовый метод из натива я писал выше. http://anedevelop.blogspot.ru/ - здесь подробно расписано про нативные расширения для iOS, для человека разбирающегося в WinAPI думаю не сложно будет перенести на винду имеющиеся примеры. Добавлено через 2 минуты Если здесь есть программисты разбирающиеся в разработке для винды - я готов попробовать вместе написать нативное расширения для прослушивания этих событий. Интересная тема
__________________
FlashPress.ru | Blog |
|
|||||
Цитата:
Ремарк: для MacOSx, не для iOS. Добавлено через 5 минут АПД: Забыл упомянуть. У меня отслеживается Event.CLOSING. Каким образом можно завершить приложение - чкнуть в трее правой кнопкой мыши и в созданном мной меню выбрать "Завершить программу". В обработчике Event.CLOSING у меня отслеживается: 1) Приложение не свернуто - evt.preventDefault(), сворачиваем; 2) Приложение свернуто в трей - nativeApplication.exit(); Но, повторюсь, при завершении работы в не зависимости от "свернутости" приложения - затык.
__________________
Кодинг, багинг, алгоритминг. me @ |
|
|||||
Регистрация: 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, время: 00:07. |
|
« Предыдущая тема | Следующая тема » |
|
|