Главная страница
    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.049 c
15-1219387737
uix
2008-08-22 10:48
2008.10.12
язык программирования


2-1220417936
TRSteep
2008-09-03 08:58
2008.10.12
Отправка почты


2-1220527371
fellow
2008-09-04 15:22
2008.10.12
форма не хочет Show поверх всех


3-1207807303
samalex
2008-04-10 10:01
2008.10.12
Как выделить целую и дробную части числа


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