Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2010, 11:51   #1
HotGod
 
Аватар для HotGod
 
Регистрация: 25.05.2010
Сообщений: 6
Сообщение события разворачивания и сворачивания окон

Господа, подскажите:
Необходимо перехватить событие разворачивания окна, причем не по факту разворачивания (я-развернулось), а именно перед самим раворачиванием (я ща развернусь).
delphi 7. компонент ApplicationEvents пробовал - он сообщает только по факту разворачивания окна
HotGod вне форума Ответить с цитированием
Старый 27.05.2010, 13:04   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

В DelphiWorld это очень хорошо описано.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 27.05.2010, 13:38   #3
HotGod
 
Аватар для HotGod
 
Регистрация: 25.05.2010
Сообщений: 6
По умолчанию

пример суперский, спасибо.
но не работает на разворачивание.
т.е. свернул окно - все гуд, событие перехватилось. кликаю на программку в панели задач - разворачивается без вопросов. как бы сейчас это событие поймать...

Всё, разобрался.
Кому интересно вот код, при разворачивании из панели задач *ПЕРЕД* отображением окна показывает сообщение, и лишь потом разворачивает окно:
Код:
type
  TMainForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Privte declarations }
    function AppHook(var msg: TMessage): boolean;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  Application.HookMainWindow(AppHook) ;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  Application.UnhookMainWindow(AppHook) ;
end;

function TMainForm.AppHook(var msg: TMessage): boolean;
begin
  result := false;
  if (msg.Msg = WM_SYSCOMMAND) and (msg.WParam = SC_RESTORE) then
   ShowMessage('Hello');
end;
end.

Последний раз редактировалось Stilet; 27.05.2010 в 15:01.
HotGod вне форума Ответить с цитированием
Старый 27.05.2010, 14:43   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Олололо
Поржал над хуком собсвенной формы) Ради инетерса проверил - не работает) Это ж делается черрез обычный message WM_SYSCOMMAND
Код:
type
TForm1 = class(TForm)
private
{ Privte declarations }
procedure Restore(var msg: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure Tform1.Restore(var msg: TWMSysCommand);
begin
  if msg.CmdType=SC_RESTORE then
  begin
    ShowMessage('asd');
  end;
  inherited;
end;
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
События yarilo JavaScript, Ajax 3 28.01.2010 23:18
Проверка окон HunterMan Win Api 1 25.06.2008 23:56
VB код сворачивания формы в трей, или просто свернуть sqvair Помощь студентам 4 04.01.2008 20:21
Открытие окон Pekc JavaScript, Ajax 3 25.11.2007 19:56
Сворачивание окон Legat Win Api 2 08.10.2007 16:36