![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кто знает как закрыть все приложения 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;
Закрывает все приложения которые видны на таскбаре, те которые в трее не закрываются, а так же скрытые процессы...