Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1161676591
port
2006-10-24 11:56
2006.11.12
Подскажите с запросом


1-1159564738
Piterim
2006-09-30 01:18
2006.11.12
Вызов Си-функции из dll


1-1159639343
Calibr
2006-09-30 22:02
2006.11.12
вопрос по Variant?


4-1151065281
Wolfheart
2006-06-23 16:21
2006.11.12
Изменение оконной функции Callback...


2-1161673983
pathfinder
2006-10-24 11:13
2006.11.12
Загрузка StringList из буфера..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский