Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Сообщение, посылаемое при закрытии приложения   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.043 c
15-1161420926
jolik
2006-10-21 12:55
2006.11.12
StarTeam 2005 Rel.2 клиент с руткитом...


15-1161705433
vidiv
2006-10-24 19:57
2006.11.12
Помогите найти документ.


2-1162189286
vitv
2006-10-30 09:21
2006.11.12
DBGrid-в несколько строк.


8-1144249486
ronyn
2006-04-05 19:04
2006.11.12
DS Pack мануал


2-1162024745
Ivolg
2006-10-28 12:39
2006.11.12
Замена букв