Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как отловить завершение работы Windows XP


Автор: myxa_0 18.11.2008, 10:04
Собственно вопрос:
Как отловить завершение работы Windows XP из приложения, которое не имеет окна.

Автор: dvamaster 20.11.2008, 07:33
есть в Windows XP окно специальное message-only

Цитата

Message-Only Windows
A message-only window enables you to send and receive messages. It is not visible, has no z-order, cannot be enumerated, and does not receive broadcast messages. The window simply dispatches messages.

To create a message-only window, specify the HWND_MESSAGE constant or a handle to an existing message-only window in the hWndParent parameter of the CreateWindowEx function. You can also change an existing window to a message-only window by specifying HWND_MESSAGE in the hWndNewParent parameter of the SetParent function.


то есть при создании окна параметру hWndParent присваиваешь константу HWND_MESSAGE

Код

hWndParent := HWND_MESSAGE;


Это окно не имеет визуального представления (соотвественно и оперативки жрет меньше), оно только принимает сообщения.

Автор: RinOSpro 1.12.2008, 11:49
dvamaster примерчик бы...

Код


program Project1;

uses Windows;

begin
   // Как использовать то что ты сказал?
end.




Автор: Snowy 2.12.2008, 12:02
Создать окно и ловить.

Автор: RinOSpro 5.12.2008, 10:16
Цитата(Snowy @  2.12.2008,  12:02 Найти цитируемый пост)
Создать окно и ловить.


Ну это и ежу понятно... но вот название темы то Как отловить завершение работы Windows XP, из приложения, которое не имеет окна

Автор: Dobermann 5.12.2008, 10:23
А по заголовку окна разве нельзя???

Автор: THandle 5.12.2008, 10:43
RinOSpro, посмотри вот эту тему: http://forum.sources.ru/index.php?showtopic=256626

Автор: CodeMonkey 5.12.2008, 10:55
Цитата(RinOSpro @  5.12.2008,  10:16 Найти цитируемый пост)
Ну это и ежу понятно... но вот название темы то Как отловить завершение работы Windows XP, из приложения, которое не имеет окна

- Как увидеть впереди препятствие, если глаза закрыты?
Открыть глаза и посмотреть.
- Ну это и ежу понятно... но вот название темы то Как увидеть впереди препятствие, если глаза закрыты.

Ясна аналогия?

P.S. А THandle предлагает нам мутировать в летучую мышь с ориентацией по ультразвуку. Тоже вариант, но если мы хотим человеком остаться, то...  лучше бы всё же открыть глаза и не придумывать проблем, которых реально нет.

Автор: ~FoX~ 30.12.2008, 10:32
Да не путайте вы человека....

Цитата

To create a message-only window, specify the HWND_MESSAGE constant or a handle to an existing message-only window in the hWndParent parameter of the CreateWindowEx function. You can also change an existing window to a message-only window by specifying HWND_MESSAGE in the hWndNewParent parameter of the SetParent function.


Код

var
  h: THandle;
begin
  h := CreateWindowEx(0, Pchar('Class_Name'), PChar('Window_Name'), 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0, 0);
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)