Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отключить правую кнопку мыши в программе [D7, NT4, Win2k, WinXP]


Страницы:   1 2

OlegM ©   (2007-11-13 14:13:00) 

Здрассте
Дело в том что в проге использую флаш ролики, и вот когда на ролике тыкаеш правой кнопкой то вылазит флешевское меню, можно както на время работы программы вырубить правую кнопку, а по завершению включить ее ?


Царев Евгений   (2008-02-12 17:11:00) [1]


> arreke ©   (12.02.08 14:18) [34]

> Слушай, Евгений, вопрос немного не по этой теме, глянь сюда
> - http://www.appcontrols.com/components.html



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


arreke   (2008-02-12 14:18:00) [2]

СПС, и так тоже работает.

Слушай, Евгений, вопрос немного не по этой теме,
глянь сюда - http://www.appcontrols.com/components.html

тут есть интересный компонет, который создаёт анимационный эффект открытия и закрытия формы, но он платный.

Сюществует бесплатный аналог, или может руками можно написать, или легче всё же денежку заплатить и не заморачиваться ?


Царев Евгений   (2008-02-12 07:47:00) [3]


> arreke ©   (12.02.08 01:32) [31]
> СПС, Евгений.Всё работает.


Не всё, клавиша меню в твоем приложении не работает :)

 Case message Of
  WM_RBUTTONDOWN, WM_WINMENUKEY:
  Begin
     GetClassName(hwnd,TempClass,50);
     if  (StrPas(TempClass) = FlashPlayerClassName) then Handled:= True;
   End;

так сделай.


Германн   (2008-02-12 01:53:00) [4]

"Нетрадиционалы"  уже и сюда пролезли, блин. :)


arreke   (2008-02-12 01:32:00) [5]

СПС, Евгений.
Всё работает.


Царев Евгений   (2008-02-11 18:25:00) [6]


> arreke ©   (11.02.08 14:00) [28]
не забывайти про кнопку меню не клаве, при её нажатии тоже меню выходит.


Больше как зверством точно это не назавешь :(


const
FlashPlayerClassName: String = 'MacromediaFlashPlayerActiveX';
WM_WINMENUKEY = $100;
implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
TempClass: array [0..49] of Char;
begin
With Msg Do Begin
 Case message Of
    WM_RBUTTONDOWN:
    Begin
      GetClassName(hwnd,TempClass,50);
      if  (StrPas(TempClass) = FlashPlayerClassName) then Handled:= True;
    End;  // WM_RBUTTONDOWN
   WM_WINMENUKEY: Handled:= True;
 End; // Case
End; //With

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ShockwaveFlash1.Movie:= WideString(IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + '01.swf');
end;


Anatoly Podgoretsky   (2008-02-11 14:09:00) [7]


> Существуют ли методы (включая системные команды Windows)
> отключать правую клавишу манипулятора (мышь, тач-пад, трек-
> бол и т.д.) во время исполнения вашего приложения,

На такое зверство даже Микрософт не решилась.


arreke   (2008-02-11 14:00:00) [8]

не забывайти про кнопку меню не клаве, при её нажатии тоже меню выходит.


arreke   (2008-02-11 13:53:00) [9]

не забывайти про кнопку меню не клаве, при её нажатии тоже меню выходит.


TStas   (2008-01-05 16:09:00) [10]

>Царев Евгений Только я сам торможу не меньше Вашего: WM_RBUTTONDOWN. Я-то никак не мог вспомнить, ну вот как выловить, что правая :)


Царев Евгений   (2008-01-05 09:53:00) [11]


> TStas ©   (04.01.08 22:16) [24]


Да работает. И того варварства что я написал ненадо было :)


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OleCtrls, ShockwaveFlashObjects_TLB, AppEvnts;

type
 TForm1 = class(TForm)
   ShockwaveFlash1: TShockwaveFlash;
   ApplicationEvents1: TApplicationEvents;
   procedure ApplicationEvents1Message(var Msg: tagMSG;
     var Handled: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
FlashPlayerClass: array[0..MAX_PATH-1] of Char;
begin
Case Msg.message OF
 WM_RBUTTONDOWN:
              begin
                GetClassName(Msg.hwnd,FlashPlayerClass,MAX_PATH);
                if  (FlashPlayerClass = 'MacromediaFlashPlayerActiveX') then
                Handled:= True;
              end;
end;
end;

end.


TStas   (2008-01-04 22:16:00) [12]

А через перехват сообщений от мыши нельзя? И кнопку трогать не нало. Просто просматриваешь сообщение, через ApplicationEvent. Ну и несли там что-то не нравится Handled := True. Только не знаю, как это с флешроликом будет работать.


humanoid   (2007-12-30 18:59:00) [13]

@ Царев Евгений

Спасибо... буду пробовать уже в Новом Году:)))
___

Всех кто принял участие в обсуждении данной темы... желаю... в Новом, Новых начинаний, озарений и гениальных работ! Благополоучия и Здоровья..

Мир вашему Дому!

Гумир:)


Царев Евгений   (2007-12-30 18:44:00) [14]

Имхо ненадо так, но вот D7 WinXP

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OleCtrls, ShockwaveFlashObjects_TLB{или как его назвали}, Menus;

type
TShockwaveFlash{или как его назвали} = class(ShockwaveFlashObjects_TLB.TShockwaveFlash)
private
procedure WMPopupMenu(var Message: TWMMouse); message WM_RBUTTONDOWN;
end;

type
 TForm1 = class(TForm)
   ShockwaveFlash1: TShockwaveFlash;
   PopupMenu1: TPopupMenu;
   mnuTest1: TMenuItem;
   procedure mnuTest1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TShockwaveFlash }

procedure TShockwaveFlash.WMPopupMenu(var Message: TWMMouse);
var
CurPos: TPoint;
begin
GetCursorPos(CurPos);
Form1.PopupMenu1.Popup(CurPos.X, CurPos.Y);
end;

procedure TForm1.mnuTest1Click(Sender: TObject);
begin
ShowMessage('Test');
end;

end.


С Новым Годом :-)


humanoid   (2007-12-30 11:19:00) [15]


> мануал? с пакетом? обратиться в Adobe и купить custom-версию
> flash player, в которой что надо — оставлено, что не надо
> — вырезано


SWF та что в проекте, питается от ActiveX (Flash.OCX) установленой в системе конечного пользователя... никакие дополнительные не подразумевают принудительную установку с нашего диска, а в случае отсутствия данного OCX? ему предлагается его скачать с офсайта ADOBE...

Вообщем это опять философия не в тему.... мне никто так и не ответил...

возможен ли или невозможен глобалный хук, на правую кнопку мыши, если да, то какими методами...

_____

ДА ИЛИ НЕТ - это более чем адвекватный и  вменямый ответ на поставленный вопрос, а не рассусоливание отвлеченных косвенных суждений.

_____

С НОВЫМ ГОДОМ:)


Ketmar_   (2007-12-30 10:39:00) [16]

мануал? с пакетом? обратиться в Adobe и купить custom-версию flash player, в которой что надо — оставлено, что не надо — вырезано.


humanoid   (2007-12-30 06:19:00) [17]


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


Это небольшой интерактивный мануал, представляющий и рассказывающий о другом приложениии, который поставляется вместе с основным программным пакетом...

Я не думаю, что на 10-15 минут уделенного времени (а может и вовсе "неуделенного") этому мануалу, у юзера где-то там поседеет из-за того , что на это время будет лишена возможность правого клика....


Apollon   (2007-12-29 13:22:00) [18]

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


humanoid   (2007-12-28 22:45:00) [19]

Конечно, можно отшутиться типа: Метод один - долбани по ней молотком...
___

Это будет видимо смешно...


humanoid   (2007-12-28 22:42:00) [20]

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

Всеп конечно учитывается... и это тоже... уж поверьте... ПРО ТО ЗНАМО

Для достижения цели, этот допустимый косяк не такой уж весомый в вероятности сбоя программы... и аварийного ее выхода... тем более после перезагрзки систему все вернется "на круги своя"..

И очень вас прошу, Б-га ради, пожалуйста без дополнительных сентенций по темам Мироздания и  опять же Бытия...
_____

Вопрос: Можно ли произвести Глобальный хук на правую кнопку мыши? Если - ДА, то какими известными вам, уважаемые профи, методами....???


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо