![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрет закрытия консольного окна [D6, 2000]
workbench © (2008-09-01 15:21:00)Здравствуйте. Да вот собственно и весь вопрос, как запретить закрытие консольного окна "щелчком" мыши на "крестике" (Ctrl + C нашёл как сделать, а с мышью нихт...)
workbench (2008-09-02 11:24:00) [1]Здорово))) всё именно так как хотелось, спасибо за помощь!
Юрий Зотов (2008-09-02 11:15:00) [2]> да, конечно есть.. :)
Конечно. У меня нет точки с запятой.
:o)
> Наверное, не совпала комбинация
В GetSystemMenu должно стоять False, проверь.
Vlad Oshin (2008-09-02 09:58:00) [3]
> Юрий Зотов © (02.09.08 09:50) [15]
да, конечно есть.. :)
я и enable, и delete, и еще чего-то и константы разные. Потом выяснилось, что окно не находилось :).
потом нашлось и по-новой начал, но уже злее был..
Наверное, не совпала комбинация DeleteMenu, SC_CLOSE, MF_BYCOMMAND
:)
Юрий Зотов (2008-09-02 09:50:00) [4]Влад, между нашими строчками различие есть. В нем все и дело.
Vlad Oshin (2008-09-02 09:05:00) [5]
> 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-01 23:38:00) [6]Короче:
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;
Юрий Зотов (2008-09-01 22:14:00) [7]> workbench (01.09.08 15:48) [2]
GetStdHandle дает хэндлы стандартных потоков ввода-вывода, а тут нужен хэндл ОКНА. FindWindow.
Вообще, окно консоли от других окон не отличается ничем. Такое же окно, только выполняется в нем неоконная программа, а окно отображает тот самый ввод-вывод.
Vlad Oshin (2008-09-01 17:17:00) [8]понял
А чья консоль то? своя/чужая?
clickmaker (2008-09-01 17:06:00) [9]> [9] Vlad Oshin © (01.09.08 17:04)
у cmd.exe нету, но у окна-то есть
Vlad Oshin (2008-09-01 17:04:00) [10]
> какой такой "функции окна"?
wndproc
Правильный$Вася (2008-09-01 16:52:00) [11]
> имхо, там нет функции окна
какой такой "функции окна"?
workbench (2008-09-01 16:31:00) [12]
> Vlad Oshin
хм... тогда не ясно в каком "контексте" обрабатываются сообщения, впрочем всё равно не ясны "принципы" управления конс-м окном, не SetWindowLong же тут исп-ть...
Vlad Oshin (2008-09-01 16:20:00) [13]
> в чём тогда отличие
имхо, там нет функции окна
clickmaker (2008-09-01 16:04:00) [14]в винде всё суть окна )
workbench (2008-09-01 15:51:00) [15]э-э-э... то есть с т. зрения Win консольное окошко - это такое окно с очередью как и остальные, а в чём тогда отличие?
clickmaker (2008-09-01 15:49:00) [16]> Хэндл, это, очевидно, через GetStdHandle?
FindWindow()
workbench (2008-09-01 15:48:00) [17]
> Юрий Зотов
Хэндл, это, очевидно, через GetStdHandle?
А вот как запретить непонятно?
Юрий Зотов (2008-09-01 15:31:00) [18]Можно попробовать так:
1. Получить хэндл консольного окна.
2. Запретить пункт его системного меню.