|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2006
Сообщений: 92
|
Как отследить закрытие запущенной из под Zinc приложения программы?
Доброго вечера уважаемым гуру.
Подскажите пожалуйста такую вещь: Запускаю из под Zinc приложения стороннюю программу. Она делает некие действия, потом закрывается. После её закрытия, моё Zinc приложение, тоже должно что то сделать. Как отследить её закрытие? Есть mdm.Process.isOpen(id:Number):Void но не понимаю, где можно получить ID процесса нужной мнепрограммы? Он ведь при каждом запуске разный... Есть var windowList:Array = mdm.System.getWindowList(); // windowList[0][0] = Window title // windowList[0][1] = Window handle // windowList[0][2] = X position // windowList[0][3] = Y position // windowList[0][4] = Width // windowList[0][5] = Height Самое интересное, что ведь организовав циклическую проверку windowList, легко видеть что он в массиве есть, или что его нет, но как использовать это, никак не могу сообразить... А может я туплю? Или может есть какой то очень красивый способ отслеживания закрытия программы, но я не нашел его ни здесь на форуме, ни в хелпе? PS Zinc 2.5 ActionScript 2 |
|
|||||
listener
|
Цитата:
В хэлпе есть вот что: Цитата:
Разве что вот так попробовать. Получить пид процесса и по таймеру следить за ним. Обратите внимание, что для запуска проги нужно в этом случае юзать mdm.process.create(). А не mdm.System.exec(). Насколько я знаю, никаких других встроенных методов для работы с "чужими" окнами и процессами цинк не предоставляет. Если нужно что-то очень уж навороченное, пишите длл с требуемым функционалом. Последний раз редактировалось alexcon314; 08.01.2010 в 13:04. |
|
|||||
Регистрация: Mar 2006
Сообщений: 92
|
alexcon314
ОК! Спасибо! Что то я просмотрел это дело в хелпе, попробую. А я как раз и использую mdm.process.create(). Я надеялся что если написать что то типа var myProcessID:Number = mdm.Process.create("", 0, 0, 0, 0, "", applicationPath, appFolder, 2, 4); то myProcessID вернет таки ID процесса. Но он как и написано в хелпе, возвращает лишь true при успешном запуске, иначе false. НО! Вот эта конструкция почему то получает ID! var myProcessID:Number = mdm.Process.create("", 0, 0, 0, 0, "", applicationPath, appFolder, 2, 4); processIDs.push({label:myProcessID}); myList.dataProvider = new DataProvider(processIDs); Прикладываю fla. Это пример с ZINC-овского сайта. Возможно ли такое на AS2? PS Посмотрел сейчас хелп по 2.5 и по 3 но так и не увидел в разделе mdm.Process такой вещи как mdm.Process.lastId:Number Последний раз редактировалось gfdrf; 08.01.2010 в 17:11. |
|
|||||
listener
|
Мда..
За пример сказать ничего не могу, не охота ковыряться, да и вторая часть битая, не открывается. Первую посмотрел, да, но компилить не стал. То, что работает "var myProcessID:Number = mdm.Process.create(....", ну так может в третьей версии цинка так оно и есть, чем черт не шутит. Хотя, в хэлпе тройки про mdm.Process.create() написано все так же, как и в хэлпе 2.5. Возможно, просто троечный хэлп неправильный, вполне допускаю. Собственно, можете попробовать скомпилить пример АС2, но в третьем цинке и посмотреть, что возвращает mdm.Process.create(). Только какое это имеет для вас значение, если вы работаете на версии Zinc 2.5? Что до mdm.Process.lastId в хэлпе оно есть, и в 2.5, и в 3.0. Почему вы его не смогли найти, я не знаю, ищите лучше. Последний раз редактировалось alexcon314; 08.01.2010 в 16:18. |
|
|||||
Регистрация: Mar 2006
Сообщений: 92
|
Перезалил файлы, может кому сгодятся.
Но думаю всё нормально было. Это ж многотомный архив, и при распаковке хвостик fla из второго файла подхватывается автоматом. Там в примере был скомпиленный файл, но я его выкинул из за ограничений форума по месту. Поковыряюсь ещё, попробую всёж добится такого... |
|
|||||
listener
|
Цитата:
И главное, это никак не влияет на решение поставленной задачи. Какая разница, как вы получите пид, в конце-концов? Пид есть по-любому, что еще нужно? |
Часовой пояс GMT +4, время: 21:29. |
|
« Предыдущая тема | Следующая тема » |
|
|