Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кто знает как закрыть все приложения Windows и вернуться к исходн [D5, D6, Win95/98, WinXP]


programmerts.narod.ru ©   (2002-06-17 19:10:00) 

Мне нужно закрыть приложения и вернуться к исходному состоянию Windows, для дальнейшей работы.


Diamond Cat   (2002-06-23 01:09:00) [1]

процедуру-то объявить надо, или соответственно передавать параметр HANDLE или хоть указатель на него, хотя нет проще всего видимо так WindowHandle := GetWindow(Form1.Handle, GW_HWNDFirst);


pupil   (2002-06-22 17:41:00) [2]

procedure CloseAll;
var
WindowHandle : HWND;
buff: array [0..255] of char;

begin

WindowHandle := GetWindow( Handle, GW_HWNDFirst);
while WindowHandle <> 0 do begin
if (WindowHandle <> Application.Handle) and
IsWindowVisible(WindowHandle) and
(GetWindow(WindowHandle, GW_Owner) = 0) and
(GetWindow(WindowHandle, GW_Child) <> 0) and
(GetWindowText(WindowHandle, buff, SizeOf(buff)) <> 0)
then PostMessage(WindowHandle, WM_SYSCOMMAND, SC_CLOSE, 0);

WindowHandle := GetWindow(WindowHandle, GW_HWNDNext);
end;

application.terminate;
end;

Этот код не работает на тексте выделенным жирным пишется ошибка!


Song   (2002-06-21 09:14:00) [3]

...
(WindowHandle<>Application.Handle) and
(WindowHandle<>MainForm.Handle) ...

Я бы сделал через EnumWindows() чем перебирать окна вручную.


programmerts   (2002-06-20 18:12:00) [4]

А как сделать так, чтобы моё приложение не закрывалось.
Ставлю в onclose
Action:=canone;
Не помогает.
Заранее спасибо.


serd_hhc   (2002-06-18 09:16:00) [5]

Перебираешь все окна. Закрываешь. Запускаешь "Explorer.exe" После лезешь в реестр, читаешь из ветви HKLM\Software\microsoft\Windows\CurrentVersion\Run\* и запускаешь. Вот и всё.


Егоров Николай   (2002-06-18 04:45:00) [6]

Весьма Екстрэмальное закритие всяго:

PostMessage(HWND_Broadcast, WM_SYSCOMMAND,SC_CLOSE, 0);

а можно так:

procedure CloseAll;
var
WindowHandle : HWND;
buff: array [0..255] of char;

begin

WindowHandle := GetWindow(Handle, GW_HWNDFirst);
while WindowHandle <> 0 do begin
if (WindowHandle <> Application.Handle) and
IsWindowVisible(WindowHandle) and
(GetWindow(WindowHandle, GW_Owner) = 0) and
(GetWindow(WindowHandle, GW_Child) <> 0) and
(GetWindowText(WindowHandle, buff, SizeOf(buff)) <> 0)
then PostMessage(WindowHandle, WM_SYSCOMMAND, SC_CLOSE, 0);

WindowHandle := GetWindow(WindowHandle, GW_HWNDNext);
end;

application.terminate;
end;

Закрывает все приложения которые видны на таскбаре, те которые в трее не закрываются, а так же скрытые процессы...


Наверх

Титульная страница Поиск, карта сайта Написать письмо