Запрет на запуск второго экземпляра приложения 1
Код:
//заставляем окно приложения реагировать Конечно, сохранять хэндл необязательно в реестр, просто это в данной ситуации удобно. В случае нештатного завершения работы приложения эта схема не работает. ПОЭТОМУ ДРУГОЙ ПРИМЕР. Запрет на запуск второго экземпляра приложения 2 Код:
mdm.Application.doEvents(); FormTitle и ApplicationTitle можно указать статически в самом компиляторе. Но в этом случае к ним не получишь доступ так просто. И придется писать в условии сравнения титлов сам титл. Не поручусь, что это всегда работает, особенно когда титл русский или необычные символы там есть. Поэтому, лучше назначать их динамически в коде. |
Zinc: Access violation at ...
Ошибка при запуске приложения
Иногда при разработке приложения на Zinc возникает такая ситуация, что приложение при запуске выдает ошибку вида Код:
"Access violation at address 7C93426D in module 'ntdll.dll. Read of address 003a0043." Данная проблема может возникнуть при попытке переноса приложение на другой компьютер простым копированием исполняемого файла, а так же при запуске с CD. И даже при переносе исполняемого файла в другую папку на той же машине, что я наблюдал сам. На mdm-форуме эта прблема обсуждалась довольно долго. http://www.mdmforum.com/forum/index.php?showtopic=13421 Кратко изложу суть обсуждения. По непонятым причинам один и тот же .ехе файл нормально запускается на одной машине и отказывается стартовать на другой. Речь шла именно о запуске с CD. Эксперименты разработчиков показали, что возникновение ошибки происходит непредсказуемо. Например, производились проверки на разных OC (семейства Windows), на разных аппаратных конфигурациях. Никакой закономерности отследить не удалось и баг был помещен в WishList. Тем не менее, было найдено несколько приемов устранения этой специфической ошибки. 1. Запуск в режиме совместимости с Win98. 2. Внесение изменений в реестр, таких, что программа принудительно стартует в режиме совместимости с Win98. 3. Сокращение имени исполняемого файла до 3-х - 4-х символов (или даже до 1-ого). В моей практике эта неприятная ситуация возникала несколько раз. Всякий раз сокращение имени файла мне помогало. Видимо, о чем свидетельствуют и сведения из указаного топика на mdm-форуме, этот прием наиболее эффективен. В целом у участников обсуждения сложилось мнение, что проблема возникает из-за внутренних политик безопасности Windows XP. В чем конкретно состоит причина выяснить не удалось. Будем надеяться, что производители Zinc смогут разрешить этот вопрос. [добавлено] М-да... сокращение имени файла не панацея, как оказалось. После некоторого количества собственных экспериментов складывается такая картина. 1. "непредсказуемость" возникновения бага обусловлена на самом деле текущим сосотоянием профиля пользователя, который пытается приложение запустить. пересоздание профиля устраняет баг. где сидит затык в профиле до конца не выяснил, но установлено, что сидит он в той его части, которая хранится на компе, не выгружается на сервак (в случае использования сетвого входа). поэтому, на одних компах баг проявляется, на других может и не проявляться. даже если установить точную причину затыка, вряд ли это будет иметь практическое значение, т.к. править профиль перед запуском все равно никто не будет. 2. баг с "хорошей" вероятностью возникает, если в Zinc IDE вручную указывать заголовок формы и приложения (поля Form Caption и Application title). Application title скорее приводит к ошибке. при этом "плохо" себя ведут символы вроде точки, пробела, русских букв, но не всегда, почему - смотри п.1. если задавать эти параметры программно, оставляя соответствующие поля в IDE пустыми, даже с использованием этих символов, баг не возникает. 3. баг не проявляется независимо от других факторов, если запускать приложение в режиме совместимости с Win98, Win2000. это может оказаться полезным при создании собственного инсталлятора приложения (см. NSIS, Inno Setup из бесплатных). В алгоритме установки можно указать команду записи в реестр ХР соответствующего ключа типа Код:
ключ: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 4. судя по трэйсам, стоп с ошибкой происходит на стадии обращения к системной библиотеке ntdll.dll, которая подключается при запуске, как раз перед первой прорисовкой окна приложения. Официальное описание проблемы http://www.multidmedia.com/support/t...n=detail&id=19 |
Подгрузка внешних .swf
Можно ли использовать {mdm}Script во внешних .swf, подгружаемых в основное приложение?
Да, можно. mdm-классы инициализируются в основном приложении, точнее в мувике основного приложения при компиляции в цинке. К ним можно обращаться из подгружаемых мувиков точно так же как к обычным AS-классам. Пример. Код:
// основной клип main.swf, компилируемый в цинке Код:
// подгружаемый клип loaded.swf. это обычный .swf, скомпилированный Тем не менее, при использовании ActiveX, mdm.FileExplorer и т.п., окна этих элементов все равно будут привязываться к окну основного приложения. ... в загружемом клипе не будет выполняться mdm-скрипт, если он загружен c урл, начинающегося как "http://". т.е. такая схема сработает только при локалной загрузке. оно и хорошо. ... |
Универсальная схема цинк-приложения.
вырисовывается интересная схема построения цинк-приложения:
1. Основной swf, который ЕДИНОЖДЫ компилируется в цинк-IDE - это очень простой универсальный загрузчик, конфигурируемый файлом настроек (что и от куда грузить). 2. Весь основной код, включая mdm-скрипты, хранится во внешних swf-модулях, которые в свою очередь так же могут выступать в роли загрузчиков других модулей. 3. Все вышесказанное в полной мере относится к дочерним формам, которых по-сути нужна всего одна, даже если вам нужно их несколько разновидностей. просто в качестве основного swf для дочерней формы указывается все тот же простой загрузчик. (Конечно, если вы планируете ОДНОВРЕМЕННО показывать несколько дочерних форм, их количество придется увеличить) Одна тонкость. Чтобы дочерняя форма нормально инициализировалась при старте приложения и не мелькала при этом на экране - в IDE при компиляции задать ей отрицательную x- или y-координату и свойство visible=true. Дело в том, что обращаться к функциям дочерней формы из основной формы можно только после первого появления дочерней формы на экране. до этого момента ее "как бы" нет. При задании отрицательных координат при visible=true формально при старте форма будет "показана" (но не буквально), что и устраняет указанное препятствие. Далее, можно оперировать с ее координатами или с ее свойством visible из основной формы, показывая ее когда необходимо, предварительно подгрузив в нее нужный swf. 4. Приложение легко переносится, масштабируется, достраивается, дебажится. Схема опробована на верси цинка 2.5. Обсуждение можно посмотреть здесь. По поводу версии 3 тоже. http://www.flasher.ru/forum/showthread.php?t=111623 |
Zinc и flash cs3 с update 9.0.3 (AIR)
Настройка CS3 под работу с Zinc. Удачный опыт связки.
Для AS 3.0: http://flasher.ru/forum/showthread.php?t=113163 Файл mdm.swc, о котром идет речь поставляется с дистрибутивом Zinc и находится в папке (по умолчанию) "c:\Program Files\MDM\MDM Zinc 3.0\swc\cs3\" для версии 3.0 Настройка CS4 под работу с Zinc. Удачный опыт связки. http://www.flasher.ru/forum/showthread.php?t=121906 AS 2.0: Настройка CS3/4 на работу с Zinc 2.5.0.34. (Собственно, никакой настройки не требуется, главное, чтобы проект был AS 2.0 и версия плеера 8). |
Цитата:
|
Экспорт в Excel из .mdb базы
Основываясь на примере alexcon314 делал себе программу которая выгружает не из фоеша а из базы... Это полезно тем что мы можем не заморачиваясь с кодировкай Юникода выгружат в Excel русские слова... Код:
|
Часовой пояс GMT +4, время: 09:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.