Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   mdm.System.exec() и флеш-проектор-8 (http://www.flasher.ru/forum/showthread.php?t=113372)

chingachgoog 26.06.2008 15:48

mdm.System.exec() и флеш-проектор-8
 
Вложений: 1
Как известно 8-й ФП в составе проектора (exe) имел один неприятный глюк - если путь расположения этого exe имел в своем составе русские буквы - то невозможно было что-то подгрузить в такой проектор.
Также известен был и частичный путь решения проблемы - добавление вперед слеша в пути подгружаемого файла.
А теперь собственно проблема с цинком:
если цинк запускает такой внешний проектор через команду System.exec(), то флеш-проектор не подгружает в себя другие файлы! Т.е. надо убирать внутри добавленные слеши и переводить проектор под 9-й ФП (для решения проблемы с русскими путями)
add:
Не пойму я никак, что же такое цинк вытворяет с экзешником, что тот перестает запускаться (вернее подгружать в себя)? Ведь сам по себе экзешник работает. Может System.exec() как-то криво открывает проектор?
add2:
Нет, это просто издевательство (см. аттач). Делаем экзешник в 8-м флеш редакторе (чтобы был внедрен ФП8) из файла cover.fla и запускаем - все работает отлично! Но стоит тот же экзешник запустить из цинка mdm.System.exec("cover.exe") как все - не подгружает! ((((( Уж и mdm.System.execUnicode() на всякий случай пробывал.
Спасает одно: из цинка запустить запускашку этого 8-го проектора, пусть даже сделанную опять же в флешовом проекторе
Код:

fscommand("exec","cover.exe")
fscommand("quit")

И работает! Но это же курам на смех. Что же такое с цинком сотворить?
add3:
Пока методом цинка начала вырисовываться картина глюка.
Если подгружаемый файл из проектора (тот что в проекторе грузиться как "/мой_файл.swf") находиться в одной директории с цинк-экзешником - то все работает. Т.е. цинк каким-то образом забивает 8-й проектор флеша по параметру (this). Т.е. когда 8-й проектор флеша грузит что-то через "/", то он за корень принимает не себя, а цинк-экзешник (((

alexcon314 29.06.2008 00:21

Цитата:

Т.е. когда 8-й проектор флеша грузит что-то через "/", то он за корень принимает не себя, а цинк-экзешник
А что вы хотели? Прожектор наследует параметры родительского процесса, т.е. цинк-приложения, в т.ч. и рабочую папку. Так оно, вобщем-то, логичнее.

Напишите простенькую длл-обертку для API-функции CreateProcess. Это решит все проблемы.
...
Хм.
Код:

//cover.exe
this.loadMovie("./targ.swf",1);//targ.swf лежит в той же папке, что и прожектор. сам прожектор в корне C:\
//...
//run.exe(Zinc) лежит в любой папке
mdm.System.exec("c:\\cover.exe");

все работает

chingachgoog 29.06.2008 21:48

Цитата:

Сообщение от alexcon314 (Сообщение 748561)
А что вы хотели? Прожектор наследует параметры родительского процесса, т.е. цинк-приложения, в т.ч. и рабочую папку. Так оно, вобщем-то, логичнее.

Непонятно. Почему флеш-проектор-9 ведет себя абсолютно нормально? И лишь флеш-проектор-8 с путем со слешем так "наследует параметры родительского процесса". ??? (((

Цитата:

Сообщение от alexcon314 (Сообщение 748561)
Хм.
Код:

//cover.exe
this.loadMovie("./targ.swf",1);//targ.swf лежит в той же папке, что и прожектор. сам прожектор в корне C:\
//...
//run.exe(Zinc) лежит в любой папке
mdm.System.exec("c:\\cover.exe");

все работает

Ой, alexcon314, а это что такое, с точкой?
"./targ.swf"
Две точки знаю, а одна?

PS моя проблема в том, что есть куча старых программ с флеш-проектор-8 и со слешем и надо их запускать цинком. И даже с имеющимися исходниками переписать их под 9-ФП почти нереально (вернее долго)

alexcon314 29.06.2008 23:32

Цитата:

Сообщение от chingachgook
Непонятно. Почему флеш-проектор-9 ведет себя абсолютно нормально? И лишь флеш-проектор-8 с путем со слешем так "наследует параметры родительского процесса". ???

Вы это меня\ спрашиваете? Или просто риторика? :D При том, что восьмой и так бажит с путями да еще и в цинк его завернули? За девятку не скажу.
По моему посту разЪясняю - процесс-родитель отдает свое окружение детям по умолчанию. Что может быть логичнее? Вы знаете как работает mdm.System.exec()? Я только могу предполагать.
Вообще, примеры компилил под 8-ой .. и все работает.
В цинке, правда, девятка по дефолту эмбеддилась.
Цитата:

Сообщение от chingachgook
Ой, alexcon314, а это что такое, с точкой?
"./targ.swf"
Две точки знаю, а одна?

Не понял.
Цитата:

Сообщение от chingachgook
моя проблема в том, что есть куча старых программ с флеш-проектор-8 и со слешем и надо их запускать цинком. И даже с имеющимися исходниками переписать их под 9-ФП почти нереально (вернее долго)

В первом посте об этом ни слова. Пишите длл. Есть масса других возможностей реализовать свои задумки иначе.

chingachgoog 30.06.2008 09:04

Цитата:

Сообщение от alexcon314 (Сообщение 748749)
Вы это меня\ спрашиваете? Или просто риторика? :D

Наверное риторика :) Хотя я не понимаю, как действует mdm.System.exec() в этом случае.

Цитата:

Сообщение от alexcon314 (Сообщение 748749)
По моему посту разЪясняю - процесс-родитель отдает свое окружение детям по умолчанию. Что может быть логичнее?

Мне кажется, что существует какая-то переменная или флаг ВОВНЕ ФП. И 8-й ФП почему-то при активации не меняет ее.

Цитата:

Сообщение от alexcon314 (Сообщение 748749)
Не понял.

Мне вообще не понятна адресация со слешем впереди - что это значит?
Если две точки перед слешом - это понятно: "../" - указывает на родительскую папку, а одна точка, что такое: "./"?

Цитата:

Сообщение от alexcon314 (Сообщение 748749)
В первом посте об этом ни слова. Пишите длл. Есть масса других возможностей реализовать свои задумки иначе.

Хочется-то как всегда, как попроще, а цинк тут такую свинью подложил на ровном месте (((

alexcon314 30.06.2008 09:58

. (точка, заметьте - без слэша!) это указатель на текущую директорию. к нему дописывается дальнейший путь, само-собой через слэш. просто слэш без точки (двух точек) перед ним по идее должен показывать путь относительно текущей папки. но как это разруливается в программе - неизвестно. точки (. и ..) следует употреблять, где это возможно, не лишне.

Про "флаг" сказать ничего не могу. Возможно, что и так.

chingachgoog 11.07.2008 17:57

Вообщем написали dll с ShellExecuteA - все работает теперь...
Единственно, что по сетке не запускает, но это не критично.

PS
Заметил еще такую особенность (думал даже что дело в ней) цинка:
путь до себя цинк пишет обратными слешами \\\\\\
т.е. mdm.Application.path выдает путь с обратными слешами,
а вот в mdm.System.exec у меня путь был прописан с обычными слешами /////
(хотя обычный слеш легко меняется на два обратных)
но вроде дело не в этом.


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

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