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

Вниз

Как узнать о завершении работы 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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.012 c
15-1288710488
bicharko
2010-11-02 18:08
2011.02.13
консультации Delphi(Math krl library, TThread)


2-1290582165
Yourlastmist
2010-11-24 10:02
2011.02.13
Экспорт книги Excel в BLOB поле БД и обратно


2-1290427938
12
2010-11-22 15:12
2011.02.13
Как узнать длину надписи на кнопки в пикселах?


11-1230244484
Лотос
2008-12-26 01:34
2011.02.13
Переименовать файл


15-1288350110
Очень злой
2010-10-29 15:01
2011.02.13
Установка программ через групповую политику active directory