Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

как отловить собщение завершения работы windows?   Найти похожие ветки 

 
_mandrake_   (2003-06-19 15:45) [0]

Есть консольная програма которая висит в памяти и закрывает окно если оно содержит запрещенный заголовок (например - "Косынка"). Как ее закрыть по окончанию сеанса windows, а то форточки виснут.


 
DVM ©   (2003-06-19 15:49) [1]

Консольным приложениям сообщения не посылаются. Сообщения посылаются окнам.


 
_mandrake_   (2003-06-19 15:59) [2]

Очень рад.
Как лечить то?


 
DVM ©   (2003-06-19 16:02) [3]

Я встречал как сделать, сам не помню. В сборнике "Советы от Валентина Озерова" есть ответ на Ваш вопрос.


 
MacroDenS ©   (2003-06-19 16:08) [4]

попробуй так:

var
h:HWND;
begin
h:=FindWindow(nil, "Косынка");
SendMessage(h, wm_close,0,0);
end;


 
_mandrake_   (2003-06-19 16:14) [5]

Извините если не ясно выразился но косынку програма закрывает. Проблема в том как закрыть мою програму (которая закрывает косынку ;-) если пользователь решил закрыть windows?


 
MacroDenS ©   (2003-06-19 16:26) [6]

Я так понял, ты написал прогу, которая косит касынку и все что пожелаешь, но ввиду того, что любопытный юзверь может нажать CTRL+ALT+DEL и в списке запущенных программ найти и обезвредить твой хуч, ты поставил ему обработку OnClose-> Action:=caNone;
и сообветственно при стандартной выгрузке винды, она не может закрыть твой хуч и висит. Так?
Тады, тебе просто нужно найти здесь на сайте одну темку про CTRL+ALT+DEL, в которой расписывается как убирать свою прогу из списка. Если время есть, то завтра могу скинуть (седня уже времени нет в своих архивах копаться).
Но есть один маленький трабл, в 95/98 все будет ОК, но в 2000 и выше твою прогу по процессам можно выцепить и закрыть....


 
jel ©   (2003-06-19 17:08) [7]

Сдается мне что без окна, пусть даже невидимого удачи в этом деле не видать. Или оформи свою закрывашку в виде сервиса.


 
jel ©   (2003-06-19 17:15) [8]

И в догонку - если нужно разрешить рапуск только определенных программ - то Windows это умеет и ничего придумывать не надо.
Подробности например тут - http://www.coast.ru/utils/faq/winnt/746.html


 
_mandrake_   (2003-06-19 17:53) [9]

to MacrodenS : почти так но окон у меня нету (по ctrl-alt-del и так не видно) вот вся прога -
program comctl32;
uses
SysUtils,
Windows, Messages;
var Form1: TForm;
function SomeFunc(Handle: HWND; Info: Pointer): BOOL; stdcall;
var
Text: array [0..256] of Char;
begin
GetWindowText(handle, text, 200);
if (Text <> "") then
begin
if Pos("Косынка",StrPas(Text)) > 0 then
SendMessage(handle,WM_Close,0,0);
end;
Result:= True;
end;

begin
While true do
begin
sleep (10000);
EnumWindows(@somefunc,0);
( или любой другой, разрешенный к запуску)
to MacrodenS : почти так но окон у меня нету (по ctrl-alt-del и так не видно) вот вся прога -
program comctl32;
uses
SysUtils,
Windows, Messages;
var Form1: TForm;
function SomeFunc(Handle: HWND; Info: Pointer): BOOL; stdcall;
var
Text: array [0..256] of Char;
begin
GetWindowText(handle, text, 200);
if (Text <> "") then
begin
if Pos("Косынка",StrPas(Text)) > 0 then
SendMessage(handle,WM_Close,0,0);
end;
Result:= True;
end;

begin
While true do
begin
sleep (10000);
EnumWindows(@somefunc,0);
end;
end.


to jel : "Следует учитывать, что ничто не мешает пользователям переименовать любой *.exe файл в winword.exe (или любой другой, разрешенный к запуску) и обойти это ограничение."
а юзверя у меня злосные...



 
VMcL ©   (2003-06-19 19:04) [10]

>_mandrake_ (19.06.03 17:53)

Перепиши цикл While так, чтобы он обрабатывал сообщения (для ознакомления посмотри TApplication.ProcessMessages+ProcessMessage) и лови сообщение о завершении работы ВыньДы.



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

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
3-10617
Alexy
2003-08-13 12:09
2003.09.04
Пропадают записи в таблицах


3-10642
Lamer_of_Delphi
2003-08-12 12:06
2003.09.04
Поиск!!!


1-10684
Прохожий
2003-08-20 12:30
2003.09.04
Закрытие формы


1-10698
Oxy
2003-08-20 11:33
2003.09.04
Как конвертировать дату?


6-10850
панИкёр
2003-06-30 07:37
2003.09.04
как сделать на компьютере фтп сервер?