Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 21.08.2019, 22:13   #1
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,234
Сообщение Меню правой кнопки при нажатии пунктов меню

Пример того что нужно:
Нажать правой кнопкой на Панель задач - Панели - Создать панель управления.
Выбрать папку с ярлыками или другими файлами и папками. Появится выбранная папка на панели задач. Если нажать на него то выйдет список тог что есть в папке, в виде меню.
Кроме обычной реакции на нажатие левой кнопки мыши есть меню правой кнопки мыши. При нажатии на любой строке меню правой кнопкой основное меню панели задач не исчезает и появляется контекстное меню.
Как такое можно сделать у себя? Например такое меню для трея или в окно программы.
Alter вне форума Ответить с цитированием
Старый 25.08.2019, 01:46   #2
beegl
Программ Аналитик
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,417
По умолчанию

Hook-пример с Webbrowser1

Код:
var 
  HookID: THandle; 

function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall; 
var 
  szClassName: array[0..255] of Char; 
const 
  ie_name = 'Internet Explorer_Server'; 
begin 
  case nCode < 0 of 
    True: 
      Result := CallNextHookEx(HookID, nCode, wParam, lParam) 
      else 
        case wParam of 
          WM_RBUTTONDOWN, 
          WM_RBUTTONUP: 
            begin 
              GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName, SizeOf(szClassName)); 
              if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then 
                Result := HC_SKIP 
              else 
                Result := CallNextHookEx(HookID, nCode, wParam, lParam); 
            end 
            else 
              Result := CallNextHookEx(HookID, nCode, wParam, lParam); 
        end; 
  end; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId()); 
end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  if HookID <> 0 then 
    UnHookWindowsHookEx(HookID); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Webbrowser1.Navigate('http://www.google.com'); 
end;
beegl вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение пунктов меню Kef1r C# (си шарп) 0 07.03.2017 18:19
Как отобразить контекстное меню над контролом (как меню для кнопки Пуск в Винде)? fedorov2012 Общие вопросы Delphi 4 07.01.2013 13:31
Как(чем) удалить пункты из меню, которое появляется при нажатии правой кнопки мыши? TwiX Свободное общение 13 11.11.2009 13:53
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 00:57
delphi дейтсвия над label при нажатии правой кнопки xbIm Помощь студентам 4 15.02.2008 18:08


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840