Форум: "Система";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизКто знает как закрыть все приложения Windows и вернуться к исходн Найти похожие ветки
← →
programmerts.narod.ru (2002-06-17 19:10) [0]Мне нужно закрыть приложения и вернуться к исходному состоянию Windows, для дальнейшей работы.
← →
Егоров Николай (2002-06-18 04:45) [1]Весьма Екстрэмальное закритие всяго:
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;
Закрывает все приложения которые видны на таскбаре, те которые в трее не закрываются, а так же скрытые процессы...
← →
serd_hhc (2002-06-18 09:16) [2]Перебираешь все окна. Закрываешь. Запускаешь "Explorer.exe" После лезешь в реестр, читаешь из ветви HKLM\Software\microsoft\Windows\CurrentVersion\Run\* и запускаешь. Вот и всё.
← →
programmerts (2002-06-20 18:12) [3]А как сделать так, чтобы моё приложение не закрывалось.
Ставлю в onclose
Action:=canone;
Не помогает.
Заранее спасибо.
← →
Song (2002-06-21 09:14) [4]...
(WindowHandle<>Application.Handle) and
(WindowHandle<>MainForm.Handle) ...
Я бы сделал через EnumWindows() чем перебирать окна вручную.
← →
pupil (2002-06-22 17:41) [5]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;
Этот код не работает на тексте выделенным жирным пишется ошибка!
← →
Diamond Cat (2002-06-23 01:09) [6]процедуру-то объявить надо, или соответственно передавать параметр HANDLE или хоть указатель на него, хотя нет проще всего видимо так WindowHandle := GetWindow(Form1.Handle, GW_HWNDFirst);
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c