| Типы программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
Как принять сообщение WinRAR c StdErr Место на диске как способ защиты программы, и шифрование екзешника или упаковка. Получить активный HWND, Получить активный HWND наболевшая тема alt+tab Отклучить установленное модемное соединение, Отклучить установленное модемное соедине com1, Порт ком1 - освободить Сортировка списка окон., Немогу! Проконсультируйте..., запуск dll comport Как получить время uptime? обработка исключения в TDataSet Пара вопросов, Two questions Эмуляция кнопок на клаве WordWrap в TListBox, WordWrap в TListBox Работа с Clipboard, Присвоить строковой переменной... список пользователей..., под ХР и 9х часовой пояс... Нажатие Enter'а в другой проге, Имитация нажатия Поймать текст из TEdit, ...в другом приложении ScrollBy выходит за рамки Определение hInstance, у других приложений импорт Word-документа, открытие .doc файлов Как получить скорость текущего сет. подключ? EnumWindows ... какая-то странная ошибка, EnumWindows(@EnumWindowsWnd,0); Оптимизация манипуляций со строками Delphi и сотовая связь Как отловить все нажатия клавиш Проблема методов скрытия программы при минимизации, SW_HIDE и подобные методы Как сделать снимок экрана из сервиса. И снова о текстурировании, помогите разобраться... Как запустить программу невидимой Как определить момент обращения к COM порту, Как определить момент обращения к COM по Проверка существования строки в INI файле... Редактирование ресурсов, А именно, о функции UpdateResource... Процедура CreateFile? В чём дело? Можно ли скрестить Delphi и PowerPoint? Как ставить Zip Master?, для Delphi 7.0 Оболочка Shell-информация о дисках. helpfile (*.chm), помогите Подождать и закрыть Как Вы относитесь к курящим девушкам? Запуск из памяти Движение формы Можно ли графические файлы упаковывать с exe-шнико Правая кнопка мышки и Win98 Добавить пункт в контекстное меню Как распознать отправителя события "закрыть прилож, сист. Кнопка "закрыть" или пункт меню. Написание драйверов, нужна литературка Из консоли в Memo, вывод консоли Блокировка файла от удаления Как получить Id текущего пользователя?, WinXP, можно и для Win98 ShellExecutе Создание виртуального устройства как запретить проверку флоппи-дисковода?, запрет проверки дисковода Диалог выбора значка... Интернационализация приложения, как быть с китайским ? Как сделать свой архиватор, средствами Delphi 7 Процесс не убивается... Добавить пункт в контекстное меню Как запустить процесс с приоритетом Below Normal Автозагрузка в Безопасном режиме, В Б Р WinXP проги из Автозагр. не загр. замена иконки в трее Как получить слово под курсором мыши Перехват прерівания !, Диплом: Драйвер на Delphi Системное меню, запретить Создание в качестве отчета документа в MS Word, Delphi 5 hOOK, ЛОВУШКА НА МЫШЬ, МОЖНО ЛИ БЕЗ DLL? Удаление dll Определение и установка..., ...скорости CD-привода. |
Платные хостинги Раскрутка сайта Книги по программированию Как распознать отправителя события "закрыть прилож, сист. Кнопка "закрыть" или пункт меню.
- Сообщение о закрытии через системное меню приходит в Application а все остальные события приходят в главную форму приложения, соответственно тебе нужно лишь их распаралелить.Вот примерчик:Код unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private function ApplicationMessage(var Message: TMessage): Boolean; procedure WMClose(var Message: TMessage); message WM_CLOSE; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin Application.HookMainWindow(ApplicationMessage);end;function TForm1.ApplicationMessage(var Message: TMessage): Boolean;begin Result := False; if Message.Msg = WM_CLOSE then begin Result := MessageBox(Handle, 'Нажатие через системное меню. Закрывать?', 'Завершение работы приложения', MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) = ID_NO; end; inherited;end;procedure TForm1.WMClose(var Message: TMessage);begin if MessageBox(Handle, 'Нажатие через кнопку закрытия. Закрывать?', 'Завершение работы приложения', MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) = ID_YES then inherited;end;end.highlightSyntax('delphizZjY2N','delphi'); - Какие уж тут лыжи на асфальте?ApplicationMessage ты получишь только когда будешь закрывать целиком приложение.Краткий экскурс: то что ты видишь на экране - это главная форма приложения, но в действительности она не является главной, главнее ее является та форма (пардон - банальное окно) которая создается при инициализации приложения и которую использует TApplication. Именно она отображается в тулбаре внизу. Она не видна во время обычной работы, но именно там крутиться ЦВС. Щелкни внизу правой кнопкой на тулбаре (на "кнопке" своего приложения и закрой его)... - Ну чтож. раз гора не идет к магомеду, тогда магомед идет к другой горе ;)Вот такой код пойдет?Код unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private FMenuEnabled: Boolean; function ApplicationMessage(var Message: TMessage): Boolean; procedure WMClose(var Message: TMessage); message WM_CLOSE; procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND; procedure WMInitMenuPopup(var Message: TMessage); message WM_INITMENUPOPUP; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin Application.HookMainWindow(ApplicationMessage);end;function TForm1.ApplicationMessage(var Message: TMessage): Boolean;begin Result := False; if Message.Msg = WM_CLOSE then begin Result := MessageBox(Handle, 'Закрытие через системное меню. Закрывать?', 'Завершение работы приложения', MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) = ID_NO; end; inherited;end;procedure TForm1.WMClose(var Message: TMessage);begin if FMenuEnabled then begin if MessageBox(Handle, 'Завершение через меню. Закрывать?', 'Завершение работы приложения', MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) = ID_YES then inherited; end else if MessageBox(Handle, 'Завершение через кнопку закрытия. Закрывать?', 'Завершение работы приложения', MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) = ID_YES then inherited; FMenuEnabled := False;end;procedure TForm1.WMInitMenuPopup(var Message: TMessage);begin FMenuEnabled := GetSystemMenu(Handle, False) = Message.WParam; inherited;end;procedure TForm1.WMSysCommand(var Message: TMessage);begin case Message.WParam of SC_RESTORE, SC_MOVE, SC_SIZE, SC_MINIMIZE, SC_MAXIMIZE: FMenuEnabled := False; end; inherited;end;end.highlightSyntax('delphi0ZjZjN','delphi'); Это сообщение отредактировал Rouse_ - 25.4.2005, 13:04 - Код unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) procedure WndProc(var Message: TMessage); override; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WndProc(var Message: TMessage);var m:TKeyboardState;begin if Message.Msg=WM_Close then begin GetKeyboardState(m); if (m[18]and m[115])=$81 then ShowMessage('Пипец по ALT+F4'); end; inherited;end;procedure TForm1.FormCreate(Sender: TObject);var m:TKeyboardState;begin FillChar(m,SizeOf(m),#0); SetKeyboardState(m);end;end.highlightSyntax('delphiWRmOWU','delphi'); |