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

Вниз

Запрет закрытия консольного окна   Найти похожие ветки 

 
workbench   (2008-09-01 15:21) [0]

Здравствуйте. Да вот собственно и весь вопрос, как запретить закрытие консольного окна "щелчком" мыши на "крестике" (Ctrl + C нашёл как сделать, а с мышью нихт...)


 
Юрий Зотов ©   (2008-09-01 15:31) [1]

Можно попробовать так:
1. Получить хэндл консольного окна.
2. Запретить пункт его системного меню.


 
workbench   (2008-09-01 15:48) [2]


> Юрий Зотов


Хэндл, это, очевидно, через GetStdHandle?
А вот как запретить непонятно?


 
clickmaker ©   (2008-09-01 15:49) [3]

> Хэндл, это, очевидно, через GetStdHandle?

FindWindow()


 
workbench   (2008-09-01 15:51) [4]

э-э-э... то есть с т. зрения Win консольное окошко - это такое окно с очередью как и остальные, а в чём тогда отличие?


 
clickmaker ©   (2008-09-01 16:04) [5]

в винде всё суть окна )


 
Vlad Oshin ©   (2008-09-01 16:20) [6]


>  в чём тогда отличие

имхо, там нет функции окна


 
workbench   (2008-09-01 16:31) [7]


> Vlad Oshin


хм... тогда не ясно в каком "контексте" обрабатываются сообщения, впрочем всё равно не ясны "принципы" управления конс-м окном, не SetWindowLong же тут исп-ть...


 
Правильный$Вася   (2008-09-01 16:52) [8]


> имхо, там нет функции окна

какой такой "функции окна"?


 
Vlad Oshin ©   (2008-09-01 17:04) [9]


> какой такой "функции окна"?

wndproc


 
clickmaker ©   (2008-09-01 17:06) [10]

> [9] Vlad Oshin ©   (01.09.08 17:04)

у cmd.exe нету, но у окна-то есть


 
Vlad Oshin ©   (2008-09-01 17:17) [11]

понял

А чья консоль то? своя/чужая?


 
Юрий Зотов ©   (2008-09-01 22:14) [12]

> workbench   (01.09.08 15:48) [2]

GetStdHandle дает хэндлы стандартных потоков ввода-вывода, а тут нужен хэндл ОКНА. FindWindow.

Вообще, окно консоли от других окон не отличается ничем. Такое же окно, только выполняется в нем неоконная программа, а окно отображает тот самый ввод-вывод.


 
Юрий Зотов ©   (2008-09-01 23:38) [13]

Короче:

procedure TForm1.Button1Click(Sender: TObject);
var
 Wnd: HWND;
 Menu: HMENU;
begin
 Wnd := FindWindow("ConsoleWindowClass", "Командная строка");
 Menu := GetSystemMenu(Wnd, False);
 DeleteMenu(Menu, SC_CLOSE, MF_BYCOMMAND)
end;


 
Vlad Oshin ©   (2008-09-02 09:05) [14]


> procedure TForm1.Button1Click(Sender: TObject);
> var
>  Wnd: HWND;
>  Menu: HMENU;
> begin
>  Wnd := FindWindow("ConsoleWindowClass", "Командная строка");
>
>  Menu := GetSystemMenu(Wnd, False);
>  DeleteMenu(Menu, SC_CLOSE, MF_BYCOMMAND)
> end;

странно.. вчера писал тоже самое
только получил
...
DeleteMenu(Menu, SC_CLOSE, MF_BYCOMMAND);
ShowMessage(SysErrorMessage(GetLastError));
-- Операция запрещена
Может вчера был понедельник, а по понедельникам нельзя? :)


 
Юрий Зотов ©   (2008-09-02 09:50) [15]

Влад, между нашими строчками различие есть. В нем все и дело.


 
Vlad Oshin ©   (2008-09-02 09:58) [16]


> Юрий Зотов ©   (02.09.08 09:50) [15]

да, конечно есть.. :)
я и enable, и delete, и еще чего-то и константы разные. Потом выяснилось, что окно не находилось :).
потом нашлось и по-новой начал, но уже злее был..
Наверное, не совпала комбинация DeleteMenu, SC_CLOSE, MF_BYCOMMAND
:)


 
Юрий Зотов ©   (2008-09-02 11:15) [17]

> да, конечно есть.. :)
Конечно. У меня нет точки с запятой.
:o)

> Наверное, не совпала комбинация
В GetSystemMenu должно стоять False, проверь.


 
workbench   (2008-09-02 11:24) [18]

Здорово))) всё именно так как хотелось, спасибо за помощь!



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

Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.05 c
3-1201092353
Rusl92
2008-01-23 15:45
2008.10.12
Картинки в БД


15-1219600740
{RASkov}
2008-08-24 21:59
2008.10.12
Есть ли шанс?


1-1198176914
Dronishe
2007-12-20 21:55
2008.10.12
Анимация формы окна


6-1194345147
SpellCaster
2007-11-06 13:32
2008.10.12
Время ожидания коннекта сокетом при недоступной сети


15-1219135239
Petr V. Abramov
2008-08-19 12:40
2008.10.12
Крупный съезд ученых-нанотехнологов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский