Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизСообщение, посылаемое при закрытии приложения Найти похожие ветки
← →
Pavel__ (2006-10-26 16:04) [0]Здравствуйте. Есть всем известный файл-менеджер Total Commander. В него встроена функция работы с ftp. Ситуация: поправили файл на сервере с помощью стандартного Блокнота, вызванного из контекстного меню TC. Блокнот закрыли, TC спрашивает — закачать ли измененный файл на ftp. Вопрос, каким образом TC отслеживает закрытие внешней программы? Выполняя ее через CreateProcess? Или отлавливая какое-либо сообщение, посылаемое при завершении самим приложением? Задача: эмулировать ситуацию закрытия, чтобы на нее отреагировал TC, но само приложение не закрывалось. Мое приложение — подобие mdi, при закрытии любого child-окна необходима подобная реакция.
С уважением.
P.S: Как всегда, извиняюсь за сумбурное выражение мыслей.
← →
Ketmar © (2006-10-26 16:07) [1]экий бред, однако... а может, описать-таки не кусок своего неверного решения задачи, а всю её? с начала и без "измышлизмов"?
зыж у TC есть такая штука: plugins. с их помощью TC можно очень многому научить.
← →
Джо © (2006-10-26 16:09) [2]> Вопрос, каким образом TC отслеживает закрытие внешней программы?
WaitForSingleObject, например.
← →
Джо © (2006-10-26 16:10) [3]> Мое приложение — подобие mdi, при закрытии любого child-
> окна необходима подобная реакция.
Ну, просто посылай главному окну заранее условленное сообщение. Или даже проще — назначь обработчик на OnClose.
← →
Pavel__ (2006-10-26 16:12) [4]Она, вообщем-то, описана. TC — просто как пример. И плагины TC — совсем не к месту. Что именно не понятно?
← →
Pavel__ (2006-10-26 16:15) [5]
> Ну, просто посылай главному окну заранее условленное сообщение.
> Или даже проще — назначь обработчик на OnClose.
Вот именно с этим заранее условленным не очень понятно. WM_CLOSE?
Если не затруднит, разъясните немного подробнее?
← →
Ketmar © (2006-10-26 16:18) [6]>[4] Pavel__ 26-Oct-2006, 16:12
>Она, вообщем-то, описана. TC — просто как пример. И
>плагины TC — совсем не к месту. Что именно не понятно?
теперь -- вообще ничего. цитрую кое-кого: "Задача: эмулировать ситуацию закрытия, чтобы на нее отреагировал TC".
а теперь оказывается, что TC вовсе и не при чём... через пару десятков постов (как всегда) выяснится, что и винды не при чём, ага?
← →
Elen © (2006-10-26 16:25) [7]
> Pavel__
Ты хочеш отслеживать закрыти другой проги?
← →
Pavel__ (2006-10-26 16:25) [8]
> а теперь оказывается, что TC вовсе и не при чём
Отнюдь. TC подразумевался как наиболее распространенный пример отслеживания, что, впрочем, не делает его единственным (с подобной функциональностью). Отсюда слово «пример». Но мы отошли от темы.
← →
Ketmar © (2006-10-26 16:27) [9]>[8] Pavel__ 26-Oct-2006, 16:25
>Но мы отошли от темы.
её и не было, как оказалось. попробуй переформулировать свой вопрос так, чтобы ещё кто-то кроме тебя его понял, а? иначе мы вряд ли сможем чем-то помочь.
← →
Anatoly Podgoretsky © (2006-10-26 16:28) [10]С этим вопросом к автору, только он знает ответ
← →
Джо © (2006-10-26 16:41) [11]> Мое приложение — подобие mdi, при закрытии любого child-
> окна необходима подобная реакция.
MDIChileForm.OnClose := MainMDIForm.OnChildClose.
← →
Pavel__ (2006-10-26 16:42) [12]Я снабжу его иллюстрациями, с вашего позволения :)
1. Файл на ftp
http://xs.to/xs.php?h=xs308&d=06434&f=1.PNG
2. Используем ф-цию правки
http://xs.to/xs.php?h=xs308&d=06434&f=2.PNG
3. Процесс правки и использования ф-ции Сохранить в Блокноте
http://xs.to/xs.php?h=xs308&d=06434&f=3.PNG
4. Реакция TC на закрытие Блокнота
http://xs.to/xs.php?h=xs308&d=06434&f=4.PNG
Размер всех иллюстраций — 23 КБ
Теперь, представьте MDI-блокнот. Много документов. styles.css — один из них. Его открыли таким же образом, с ftp, отредактировали, сохранили. Так вот: нужно сделать так, чтобы TC отреагировал на закрытие child окна в условном MDI-блокноте таким же образом, каким реагирует на закрытие обычного Блокнота.
← →
Anatoly Podgoretsky © (2006-10-26 16:51) [13]А сначала вопрос был про приложение, а теперь возникли подчиненые окна.
← →
Pavel__ (2006-10-26 16:54) [14]
> А сначала вопрос был про приложение, а теперь возникли подчиненые
> окна.
[0]
> Мое приложение — подобие mdi, при закрытии любого child-
> окна необходима подобная реакция.
← →
Германн © (2006-10-26 16:56) [15]Тем более, что имхо ТС отслеживает в подобных случаях не столько "закрытие программы", сколько "изменение файла".
← →
Anatoly Podgoretsky © (2006-10-26 16:57) [16]Я цитатами тоже умею пользоваться
> Сообщение, посылаемое при закрытии приложения
← →
Pavel__ (2006-10-26 16:57) [17]
> Тем более, что имхо ТС отслеживает в подобных случаях не
> столько "закрытие программы", сколько "изменение файла".
>
Это уже следующее действие.
← →
Click (2006-10-26 17:02) [18]Pavel__
просто поражаюсь нежеланию твоих собеседников помочь тебе... !!!
имхо с первого поста твои желания ясны... еще где то постов 10 можеш подождать ответа, а потом, будь уверен, тебя пошлют гуглить... :)
← →
Pavel__ (2006-10-26 17:09) [19]
> Джо © (26.10.06 16:41) [11]
> > Мое приложение — подобие mdi, при закрытии любого child-
> > окна необходима подобная реакция.MDIChileForm.OnClose
> := MainMDIForm.OnChildClose.
Как это поможет? По-идее, это всего лишь назначение события на закрытие child-формы.
← →
Elen © (2006-10-26 17:14) [20]
> Pavel__
Мне кажется ТС так реагирует только потому что из него как раз открыли на редактирование. Может командер принимает какие-нибудь сообщения wm_user, чем и можно воспользоваться?... Поинтересуйся у гугля...
← →
Pavel__ (2006-10-26 17:18) [21]
> Мне кажется ТС так реагирует только потому что из него как
> раз открыли на редактирование.
Именно поэтому возникла мысль, что при запуске используется CreateProcess с ожиданием завершения приложения.
> Может командер принимает какие-нибудь сообщения wm_user,
> чем и можно воспользоваться?
И об этом я тоже уже писал. Возможно, но не знаю какие. Поиск ничего не дал, к сожалению.
← →
Elen © (2006-10-26 17:21) [22]
> Pavel__
Пошли ему ctrl+R через sendmessage ;)
← →
Gero © (2006-10-26 17:34) [23]Есть подозрение, что TC использует [2]. Со всеми вытекающими.
← →
Ketmar © (2006-10-26 18:25) [24]>[12] Pavel__ 26-Oct-2006, 16:42
о. опять TC вернулся. а как же [4] и "TC -- просто как пример"? я тебе ясно сказал: нужна "странная" функциональность в TC -- пиши plugin. или перестань метаться между "TC -- просто себе так, на глаза попался" и "как же в TC", и опиши задачу по-русски. связно. нормально. пока я понял только одно: автор сам не знает, чего хочет. но хочет этого очень сильно.
ты и софт пишешь так же, как мысли свои излагаешь? бедные юзеры...
>[18] Click 26-Oct-2006, 17:02
"ура! друг спас друга!" (ц) вот и пообщайтесь, раз вам всё ясно.
зыж обычно тем, кто "не в теме", почему-то всегда всё ясно сразу. вот только сказать ничего по делу они не могут. потому им и "ясно", что не представляют, с какой стороны к ответу подходить.
← →
Vendict © (2006-10-26 18:28) [25]Германн © (26.10.06 16:56) [15]
Тем более, что имхо ТС отслеживает в подобных случаях не столько "закрытие программы", сколько "изменение файла".
проведём опыт. откроем файл с ftp многооконным блокнотом. Notepad++ например или любой аналогичный. после изменения файла, сохранения и закрытия окна файла(не НЕ закрывая блокнот). ничего не происходит. после же закрытия блокнота TC задаёт вопрос, закачивать ли файл. Он конечно проверяет дату/размер файла, но уже после закрытия блокнота. т.е. подозрение [23] подтверждается.
← →
Ketmar © (2006-10-26 18:43) [26]>[25] Vendict(c) 26-Oct-2006, 18:28
>подозрение [23] подтверждается.
что логично. мало ли, сколько раз юзер файл сохранит. что, каждый раз перезаливать? %-)
← →
Pavel__ (2006-10-26 19:03) [27]
> пока я понял только одно: автор сам не знает, чего хочет.
> но хочет этого очень сильно.
Автор уже получил ответ в виде
> Gero © (26.10.06 17:34) [23]
и его подтверждение ниже, за что благодарен всем отвечавшим.
Но перечитать Vendict [25] тов. Ketmar я все-таки посоветовал бы. Возможно, там более ясно изложено. И вопрос состоял именно в том, как заставить TC реагировать на закрытие «окна файла», а не на закрытие программы целиком.
Ума не приложу, как еще объяснить.
← →
Ketmar © (2006-10-26 19:09) [28]>[27] Pavel__ 26-Oct-2006, 19:03
>вопрос состоял именно в том, как заставить TC реагировать
>на закрытие «окна файла», а не на закрытие программы
>целиком.
тогда зачем были рассуждения "TC -- это просто пример"? автор, у вас с логикой всё нормально? [1] перечитать не хотите? в районе "зыж"?
← →
Pavel__ (2006-10-26 19:23) [29]
> тогда зачем были рассуждения "TC -- это просто пример"?
Затем, что нужно универсальное решение.
> автор, у вас с логикой всё нормально?
Абсолютно.
> перечитать не хотите? в районе "зыж"?
Перечитал. Все так же не понятно, какое отношение имеют плагины TC к ключевым словам «универсальность», «delphi», «моя программа».
← →
Ketmar © (2006-10-26 19:26) [30]обалдеть. теперь появилось слово "универсальность". ветка читается, как детектив. правда, как хреновый детектив.
таки я тебе отвечу: универсального решения нет. удовлетворён?
← →
Pavel__ (2006-10-26 19:40) [31]Я, вроде, не заслужил такого к себе обращения, разве что считать поводом не соответствующее содержимому название темы.
> таки я тебе отвечу: универсального решения нет. удовлетворён?
Да.
Всем спасибо.
← →
Ketmar © (2006-10-26 19:46) [32]>[31] Pavel__ 26-Oct-2006, 19:40
>Я, вроде, не заслужил такого к себе обращения
хочешь, извинюсь? хотя сути моих претензий это не уменьшит. ты криво задачу поставил, за что и был отпинан. %-)
>не соответствующее содержимому название темы.
это не так страшно. %-)
>Да.
хорошо. дополню: в принципе, решить задачу можно. но: надо или полностью перепроектировать твою программу и очень чётко описать условия, или подстраиваться под конкретный софт.
← →
Anatoly Podgoretsky © (2006-10-26 20:50) [33]
> Все так же не понятно, какое отношение имеют плагины TC
> к ключевым словам «универсальность», «delphi», «моя программа».
>
Скажу прямо - никакого.
← →
Джо © (2006-10-26 20:51) [34]Под схему TC подстроиться, можно, к примеру, так.
В качестве редактора TC подсовывать программу-заглушку, которая, получив управление, запускает твой блокнот, передавая ей информацию о себе и путь к файлу. Твой редактор, в нужном тебе случае (например, при закрытии MDIChild-окна), убивает заглушку. TC доволен :)
Такая вот простецкая схема.
← →
Ketmar © (2006-10-26 21:22) [35]>[34] Джо(c) 26-Oct-2006, 20:51
>Такая вот простецкая схема.
я о ней подумал сразу. почему на сказал? потому что хотел добиться от автора нормально сформулированого вопроса. %-)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.045 c