Форум: "Начинающим";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];
ВнизКак узнать о завершении работы Windows XP? Найти похожие ветки
← →
Aleks (2010-09-24 11:43) [0]Нужно при завершении работы Виндовс запомнить координаты окна программы,чтобы восстановить исходное положение окна при следующем запуске Виндовс. Как узнать о завершении работы Windows XP чтобы сохранить эти данные?
← →
Anatoly Podgoretsky © (2010-09-24 11:50) [1]> Aleks (24.09.2010 11:43:00) [0]
Интересная задача - сохранять только при закрытии Виндоус. WM_CLOSEQUERY
тогда
← →
Сергей М. © (2010-09-24 11:50) [2]У формы есть событие OnCloseQuery - его обработки достаточно для всех случаем, в т.ч. для случая закрытия формы при завершении windows-сессии
← →
Anatoly Podgoretsky © (2010-09-24 12:03) [3]> Сергей М. (24.09.2010 11:50:02) [2]
OnCloseQuery возникает и не в случае закрытия Виндоус.
← →
Сергей М. © (2010-09-24 12:08) [4]
> Anatoly Podgoretsky © (24.09.10 12:03) [3]
А какая нафих разница ?
Полагаю что восстанавливать позицию окна нужно таки и в случае ручного закрытия юзером приложения
← →
Aleks (2010-09-24 12:09) [5]OnCloseQuery нельзя использовать, так-как окно программы во время работы юзер может сам закрыть,а позже открыть при надобности из значка в трее. :(
← →
Сергей М. © (2010-09-24 12:13) [6]> юзер может сам закрыть,а позже открыть
И что ?
Разве юзеру не нужно чтобы и в этом случае форма восстановила свою предыдущую позицию ?
← →
Anatoly Podgoretsky © (2010-09-24 12:14) [7]> Сергей М. (24.09.2010 12:08:04) [4]
Я не знаю зачем, но автор хочет только в случае завершения работы Windows
XP.
← →
Aleks (2010-09-24 12:34) [8]>Anatoly Podgoretsky. Программа нужна для внесения заметок с постоянным отображением окна на раб.столе Виндовс(аналог заметок Виндовс 7). Окно заметок можно закрыть и открыть позже с помощью иконки в трее. Юзер может парковать окно в любое место раб.стола Виндовс и эти координаты нужно запоминать и восстанавливать при след.запуске Виндовс. Как сохранять придумал,а как отловить завершение работы не знаю :(
← →
Плохиш © (2010-09-24 12:37) [9]
> Aleks (24.09.10 12:34) [8]
В [2] сказали уже.
← →
sniknik © (2010-09-24 13:04) [10]> Юзер может парковать окно в любое место раб.стола Виндовс и эти координаты нужно запоминать
а почему запоминать нужно при завершении виндовс, а не в момент "после парковки"?
ну вот выключили комп по питанию, и ???
← →
Dimka Maslov © (2010-09-24 13:47) [11]На самом деле, если действовать с умом, можно при штатном завершении программы, свёрнутой в трей или развёрнутой во весь экран сохранить координаты и размеры главной формы. И делается это при помощи функции GetWindowPlacement в OnCloseQuery (сохранение) и задание соотв. свойств формы в OnCreate (восстановление)
← →
И. Павел © (2010-09-24 13:48) [12]> [0] Aleks (24.09.10 11:43)
Можно отлавливать сообщение WM_QUERYENDSESSION и в его обработчике делать нужные действия.
← →
Ega23 © (2010-09-24 15:06) [13]
> Можно отлавливать сообщение WM_QUERYENDSESSION и в его обработчике
> делать нужные действия.
Скорость и оперативность важна в совращении одноклассниц, а не в написании как можно скорее в "Начинающим".
WM_QUERYENDSESSION возникает не только в случае завершения работы Windows.
Даже не так, WM_QUERYENDSESSION возникает во вполне определённом случае.
← →
Aleks (2010-09-24 15:13) [14]добавил в прогу такую процедуру:
TForm1.WMCloseQuery;
begin
SaveState;//сохраняем координаты
Application.Terminate;//закрываю программу
end;
Теперь если закрыть окно заметок,то координаты сохраняются и прога закрывается полностью(а должна оставатся в трее). А если завершать работу Виндовс,координаты не сохраняются.В чем трабла не пойму :(
← →
Плохиш © (2010-09-24 15:17) [15]
> Aleks (24.09.10 15:13) [14]
>
>
> Application.Terminate;//закрываю программу
>
> Теперь если закрыть окно заметок,то координаты сохраняются
> и прога закрывается полностью(а должна оставатся в трее)
> В чем трабла не пойму
Мая рыдать дольго.....
← →
Ega23 © (2010-09-24 15:17) [16]
procedure TForm6.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
try
SaveSomething;
finally
CanClose := True;
end;
end;
← →
Leonid Troyanovsky © (2010-09-24 15:18) [17]
> Ega23 © (24.09.10 15:06) [13]
> Скорость и оперативность важна в совращении одноклассниц,
А то одноклассники опередят?
> а не в написании как можно скорее в "Начинающим".
Дык, вроде, не было спешки, ответ на [0].
> Даже не так, WM_QUERYENDSESSION возникает во вполне определённом
> случае.
Переобоснуй :)
--
Regards, LVT.
← →
Aleks (2010-09-24 15:22) [18]Погуглил,нашел такую статью:http://www.realcoding.net/article/view/217
Автор пишет должно работать
← →
И. Павел © (2010-09-24 15:25) [19]> [13] Ega23 © (24.09.10 15:06)
Ваш комментарий абсолютно бесполезен а еще глуповат (чась про "совращение").
Я просто предположил, что автору может потребоваться именно это сообщение. Дело в том, что раз есть окно со своими координатами, значит оно отображается на экране, а значит его может быть нужно закрывать при закрытии сессии. Во всяком случае, OnCloseQuery [16] вообще не имеет отношения к завершению работы Windows.
← →
Ega23 © (2010-09-24 15:31) [20]
> Переобоснуй :)
Выход пользователя из системы <> завершению работы системы, не?
← →
Ega23 © (2010-09-24 15:33) [21]
> Я просто предположил, что автору может потребоваться именно
> это сообщение.
Так возьми и уточни, что КОНКРЕТНО нужно автору. В 90% случаев начинающий "желает странного" и придумывает ректальные механизмы по воплощению оного в жизнь.
Так вот, прежде чем учить его этому странному, поинтересуйся, чего он вообще хочет.
← →
И. Павел © (2010-09-24 15:35) [22]> [21] Ega23 © (24.09.10 15:33)
Чего же вы сами не поинтересовались а порекомендовали OnCloseQuery в [16]? Или вас не касаются придуманные вами же правила?
← →
Ega23 © (2010-09-24 15:38) [23]
> а порекомендовали OnCloseQuery в [16]
Если ты внимательно посмотришь предысторию и подумаешь, то поймёшь почему.
← →
И. Павел © (2010-09-24 15:43) [24]> [23] Ega23 © (24.09.10 15:38)
Вам даже автор вопроса сказал, что ему это не подходит. Что если закрывает окно не система, то оно должно оставаться в трее. Зачем же флудить?
> [5] Aleks (24.09.10 12:09)
> OnCloseQuery нельзя использовать, так-как окно программы
> во время работы юзер может сам закрыть,а позже открыть при
> надобности из значка в трее. :(
> А если завершать работу Виндовс,координаты не
← →
Ega23 © (2010-09-24 15:46) [25]
> Вам даже автор вопроса сказал, что ему это не подходит
Да что ты говоришь!
← →
Германн © (2010-09-24 15:47) [26]
> И. Павел © (24.09.10 15:43) [24]
>
> > [23] Ega23 © (24.09.10 15:38)
>
> Вам даже автор вопроса сказал, что ему это не подходит.
> Что если закрывает окно не система, то оно должно оставаться
> в трее.
Ну и?
Мало ли что сказал автор. Плохиша вот рыдать заставил :)
← →
И. Павел © (2010-09-24 15:48) [27]> Да что ты говоришь!
Это не мои слова - я цитирую автора.
Вы же ко мне пристали - вот и я к вам пристал :) Все это забавно, но глупо - поэтому нужно знать меру. Автор, похоже, сам нашел статью (в которой WM_QUERYENDSESSION, кстати, используется), а вести с вами перепалку я не буду. Всего хорошего.
← →
Ega23 © (2010-09-24 15:58) [28]
> Вы же ко мне пристали - вот и я к вам пристал :)
Я тебя в очередной раз призываю думать, прежде чем кидаться отвечать в конфе "Начинающим".
Охота потренироваться - иди в WinAPI, в Сети, в Компоненты.
Твои советы в большинстве - вредные. Не надо их новичкам давать.
← →
Anatoly Podgoretsky © (2010-09-24 16:00) [29]
> Плохиш © (24.09.10 15:17) [15]
Не плачь родной, все переживем.
← →
sniknik © (2010-09-24 16:12) [30]> Это не мои слова - я цитирую автора.
процитируй лучше код, в котором он делает то что на словах получать не хочет...
> в которой WM_QUERYENDSESSION, кстати, используется
и который кстати не посылается если нажать кнопку на корпусе. но винда тем не менее завершается! (ну надо же :)
← →
Сергей М. © (2010-09-24 16:20) [31]
> Aleks (24.09.10 15:13) [14]
Нафих ты вообще полез в WinAPI-огород ?)
Не для новичков он..
Все что тебе нужно - сохранить позицию нужной формы в ее событии OnDestroy и восстановить в OnCreate)
← →
sniknik © (2010-09-24 16:36) [32]> сохранить позицию нужной формы в ее событии OnDestroy и восстановить в OnCreate)
я бы вообще делал сохранение в момент изменения координат(/паркинга как тут выразились). восстановление естественно в OnCreate, при существовании записанных.
← →
Сергей М. © (2010-09-24 16:53) [33]
> sniknik © (24.09.10 16:36) [32]
Ну это уж для особо изщренных)
Не думаю что фаза пропадает настолько часто, что юзер смертельно обидится, если разок-другой на сотни-тысячи сеансов работы с приложением пропадет позиция формы)
← →
sniknik © (2010-09-24 19:25) [34]да плевать на юзера... просто это надежнее, хоть и в одну тысячную, ресурсов не требует (не тысячу раз в секунду же сохранять), а "сложность" реализации такая же... т.е. просто так правильней. имхо.
← →
sniknik © (2010-09-24 19:26) [35]т.е. если нет разницы... зачем делать хуже?
← →
Dennis I. Komarov © (2010-09-27 11:58) [36]+1 к [10]
← →
Крокодил (2010-09-27 21:34) [37]В линуксах все гораздо проще - создать обработчик сигналов.
мимо крокодил
← →
Юрий Зотов © (2010-09-27 22:24) [38]
> Крокодил (27.09.10 21:34) [37]
А не пояснит ли уважаемый Крокодил пояснить, чем обработчик события (сообщения) отличается от обработчика сигналов и почему он сложнее?
← →
antonn © (2010-09-27 22:48) [39]как уже выше сказали - сохранять надо когда передвинули.
protected
procedure WMEXITSIZEMOVE(var Message: TMessage); message WM_EXITSIZEMOVE;
procedure TStickForm.WMEXITSIZEMOVE(var Message: TMessage);
begin
//только что закончили двигать форму
end;
← →
Ega23 © (2010-09-27 23:03) [40]
> В линуксах все гораздо проще - создать обработчик сигналов.
В линуксах всё гораздо сложнее - есть ущербный eMax и нет православного Delphi.
Что не удивительно: это же Линукс.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.004 c