Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];

Вниз

как отловить собщение завершения работы 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
1-10732
DVP1
2003-08-20 11:35
2003.09.04
Как проверить, нажата ли Enter в TStringGride в ячейке...


14-10902
race1
2003-08-17 15:41
2003.09.04
2 dates to 1


3-10652
User_OKA
2003-08-12 12:56
2003.09.04
Fib +


14-10956
VEG
2003-08-13 17:51
2003.09.04
Дообновлял свою BIOS...


3-10545
Kati
2003-08-12 10:13
2003.09.04
обновление SQL запроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский