• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема со сворачиванием в Tray

  • Автор темы misterio
  • Дата начала
M

misterio

Сообственно весь способ описан тут : или в базе данных.

Но у меня возникла проблема. Програма сама сворачиваеться в трэй, но разворачиваться не хочет никак.
Вот кусочек, который отвечает за разворот :

Код:
procedure TForm1.IconMouse(var Msg:TMessage);
Var p:tpoint;
begin
GetCursorPos(p); // Запоминаем координаты курсора мыши
Case Msg.LParam OF // Проверяем какая кнопка была нажата
WM_LBUTTONUP,WM_LBUTTONDBLCLK: {Действия, выполняемый по одинарному или двойному щелчку левой кнопки мыши на значке. В нашем случае это просто активация приложения} 
Begin 
Ic(2,Application.Icon); // Удаляем значок из трея
ShowWindow(Application.Handle,SW_SHOW); // Восстанавливаем кнопку программы
ShowWindow(Handle,SW_SHOW); // Восстанавливаем окно программы
End;
WM_RBUTTONUP: {Действия, выполняемый по одинарному щелчку правой кнопки мыши}
Begin
SetForegroundWindow(Handle); // Восстанавливаем программу в качестве переднего окна
PopupMenu1.Popup(p.X,p.Y); // Заставляем всплыть тот самый TPopUp о котором я говорил чуть раньше
PostMessage(Handle,WM_NULL,0,0);
end;
End;
end;

Сообственно не срабатывает вот это вообще :

Код:
WM_LBUTTONUP,WM_LBUTTONDBLCLK: {Действия, выполняемый по одинарному или двойному щелчку левой кнопки мыши на значке. В нашем случае это просто активация приложения} 
Begin 
Ic(2,Application.Icon); // Удаляем значок из трея
ShowWindow(Application.Handle,SW_SHOW); // Восстанавливаем кнопку программы
ShowWindow(Handle,SW_SHOW); // Восстанавливаем окно программы
End;

А если нажата вторая кнопка на мише, то срабатывает только PopupMenu1...

Код:
 PopupMenu1.Popup(p.X,p.Y);

Остальное все вроде игнорируеться. Компилировалось на GodeGear RAD Studio.
 
M

misterio


Нажимаю F7 и смотрим что делает программа. Это рядки просто пропускаються(такое впечатление), поскольку никаких действий нету! Ни на mouse1 ни на mouse2. А не срабатывает скорее всего потому что в Msg не передаеться парамерт....почему?


P.S. Не можете ничего подсказать - лучше не пишите!
 
M

misterio

"Бездоказательно, дорогой профессор, бездоказательно!" (с), просто так, по F7, вы туда не попадете .

Не вижу никаго резона разводить тут флуд и умничать. Я говорю о том, что почему-то не работает оработчики события на нажатия mouse1, mouse2. Не знаю что там с F7, но программа циклически скачет :

GetCursorPos(p);
Case Msg.LParam OF
...
End;

А внутрь не заходит...И проблема в этом. Прошу помочь, если кто-то что- знает по теме.... :(
 
E

etc

А внутрь не заходит...И проблема в этом.
Установите брэкпоинт на строке Ic(2,Application.Icon);. и/или логируйте все что туда приходит, т.е. скидывайте в файл все Msg.LParam и Msg.RParam, потом изучайте.
Но что то есть опасения, что вы чего-то не договариваете, т.к. код предтавленный по ссылке у меня работает, правда D7, но врядли это с этим связано.


Я говорю о том, что почему-то не работает оработчики события на нажатия mouse1, mouse2.
Что такое "mouse1, mouse2"?
 
M

misterio

Что такое "mouse1, mouse2"?

Ну нажатия на кнопки мыши!
Но что то есть опасения, что вы чего-то не договариваете, т.к. код предтавленный по ссылке у меня работает, правда D7, но врядли это с этим связано.

Да...какой мне резон что-то недоговарить, если не получаеться. Я ж просто взял и скопировал код на form, ничего своего еще не успел добавить. Ладно буду пробовать! :(


Добавлено через 10 мин.


Странно...все переделал с нуля - работает....оч. интересно!
 
E

etc

Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!