Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.
Что не удивительно: это же Линукс.


 
KSergey ©   (2010-09-28 11:10) [41]

> Ega23 ©   (24.09.10 15:38) [23]
> Если ты внимательно посмотришь предысторию и подумаешь, то поймёшь почему.

А я весь такой умный буду продолжать про одноклассниц совращение писать и умную рожу делать, когда тыкают в несуразности.
Молодец. Продолжай в том же духе.


 
KSergey ©   (2010-09-28 11:12) [42]

Что характерно - автор, как обычно, давно уже поклал на стандартный срач в ветке.


 
3nick   (2010-11-24 00:25) [43]

Удалено модератором


 
sniknik ©   (2010-11-24 00:49) [44]

> и че делать?
естественно ничего, т.к. для программы без окон "по определению", нечего запоминать... координат у "ничего" также "по определению" нет.



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.005 c
15-1288379376
TUser
2010-10-29 23:09
2011.02.13
Шестеренки


15-1288819798
Юрий
2010-11-04 00:29
2011.02.13
С днем рождения ! 4 ноября 2010 четверг


2-1290449177
mem
2010-11-22 21:06
2011.02.13
считать байты в структуру


2-1290533555
ZV
2010-11-23 20:32
2011.02.13
Сравнение времени функции TDateTime


15-1288906198
Юрий
2010-11-05 00:29
2011.02.13
С днем рождения ! 5 ноября 2010 пятница





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский