Конференция "Основная" » Как отключить правую кнопку мыши в программе [D7, NT4, Win2k, WinXP]
 
  • OlegM (13.11.07 14:13) [0]
    Здрассте
    Дело в том что в проге использую флаш ролики, и вот когда на ролике тыкаеш правой кнопкой то вылазит флешевское меню, можно както на время работы программы вырубить правую кнопку, а по завершению включить ее ?
  • stanislav_ (13.11.07 14:18) [1]
    А в настройках самого объекта отабражающего флеш, нельзя?
  • OlegM (13.11.07 14:48) [2]

    > А в настройках самого объекта отабражающего флеш, нельзя?


    Нет там оно все равно показывает пункты меню настройки и о программе
  • KilkennyCat © (15.11.07 01:22) [3]
    Используется ActiveX Control?
  • humanoid (26.12.07 19:56) [4]
    А с помощю како-нибудь системной команды нельзя вырубить эту функцию , а потом при выходе сделать откат....

    Меня тоже этот вопрос волнует...
  • БарЛог © (26.12.07 20:55) [5]
    Имхо, надо не кнопку запрещать.
    Включаешь мышь для левшей, и левая кнопка становится правой, правая - левой :)
  • www (26.12.07 22:24) [6]

    > когда на ролике тыкаеш правой кнопкой то вылазит флешевское
    > меню

    и в чем проблема?
  • humanoid (26.12.07 23:57) [7]
    >>Включаешь мышь для левшей, и левая кнопка становится правой, правая - левой :)

    Этож не выход... сами же понимаете (без балды)... Функция левой кнопки должна быть сохранена...

    >> и в чем проблема?

    Да даже и не про флеш до кучи...

    ____

    Если позволите постараюсь сформулировать четкий вопрос:

    Существуют ли методы (включая системные команды Windows) отключать правую клавишу манипулятора (мышь, тач-пад, трек-бол и т.д.) во время исполнения вашего приложения, и в случае её завершения была бы придусмотрена процедура возврата установочной функции операционной системы (в данном случае XP / Vista)???
  • {RASkov} © (27.12.07 00:09) [8]
    > [7] humanoid   (26.12.07 23:57)
    > Существуют ли методы (включая системные команды Windows)
    > отключать правую клавишу манипулятора

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

    Или тебе только в своем приложении нужно "лишить мышь правого батона"? Хотя судя по

    > и в случае её завершения была бы придусмотрена процедура
    > возврата установочной функции операционной системы

    - врядли
    :)
  • Германн © (27.12.07 01:25) [9]

    > {RASkov} ©   (27.12.07 00:09) [8]


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

    Имхо, не сможет. Ведь если правая кнопка используется в программе, значит она в ней нужна. А если её использование в вышеуказанной программе кому-то мешает жить, значит одно из двух: либо программу надо сменить, либо всем известную прокладку. :)
  • humanoid (27.12.07 11:40) [10]
    >> Имхо, не сможет -
    откуда такя уверенность?

    OlegM - уже обосновал проблему... отчасти от себя могу добавить, что это это просьба клиента т..к. в контенкстном меню (по правой кнопке) существует on-line ссылка на корпорацию Adobe... во внедренном Flash ролике.

    ___

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

    ___

    По сути я задал вопрос конкретный (в надежде получить ответ "ДА" и каким образом это достигается).... а в итоге получаю не четкие рекомендации от знатоков, а филосовские рассуждения на тему БЫТИЯ...
  • Правильный_Вася (27.12.07 11:48) [11]
    нужно отключать не мышь, а реакцию на нее

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

    ты не в однозадачной ОС работаешь
  • clickmaker © (27.12.07 13:25) [12]

    > что это это просьба клиента т..к. в контенкстном меню (по
    > правой кнопке) существует on-line ссылка на корпорацию Adobe

    и что? Какая-то ненависть к Адобу?
  • Правильный_Вася (27.12.07 13:34) [13]

    > и что? Какая-то ненависть к Адобу?

    ну, клиентам может не нравиться
    было у нас в окошке About ссылка на наш сайт, так по директиве службы безопасности клиента пришлось убрать, бо не полагается простым юзерам ходить в инет, а там эксплорер вызывался автоматом и долго терзал юзера, после чего ругался на недоступность и т.п.
    короче, клиент всегда прав
  • clickmaker © (27.12.07 13:36) [14]

    > короче, клиент всегда прав

    "пешеход прав, пока жив" (с)
    :)
  • Apollon © (28.12.07 20:41) [15]
    а теперь представь, что твоя программа завершилась аварийно и "забыла" включить правую кнопку...
  • humanoid (28.12.07 22:42) [16]
    >>>а теперь представь, что твоя программа завершилась аварийно и "забыла" включить правую кнопку...

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

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

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

    Вопрос: Можно ли произвести Глобальный хук на правую кнопку мыши? Если - ДА, то какими известными вам, уважаемые профи, методами....???
  • humanoid (28.12.07 22:45) [17]
    Конечно, можно отшутиться типа: Метод один - долбани по ней молотком...
    ___

    Это будет видимо смешно...
  • Apollon © (29.12.07 13:22) [18]
    а зачем тебе глобальный хук? тут уже упоминалось про многозадачность системы и, по-моему, неправильно будет лишать юзера правой кнопки на время работы твоей программы...
  • humanoid (30.12.07 06:19) [19]

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


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

    Я не думаю, что на 10-15 минут уделенного времени (а может и вовсе "неуделенного") этому мануалу, у юзера где-то там поседеет из-за того , что на это время будет лишена возможность правого клика....
  • Ketmar_ (30.12.07 10:39) [20]
    мануал? с пакетом? обратиться в Adobe и купить custom-версию flash player, в которой что надо — оставлено, что не надо — вырезано.
  • humanoid (30.12.07 11:19) [21]

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


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

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

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

    _____

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

    _____

    С НОВЫМ ГОДОМ:)
  • Царев Евгений © (30.12.07 18:44) [22]
    Имхо ненадо так, но вот 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 (30.12.07 18:59) [23]
    @ Царев Евгений

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

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

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

    Гумир:)
  • TStas © (04.01.08 22:16) [24]
    А через перехват сообщений от мыши нельзя? И кнопку трогать не нало. Просто просматриваешь сообщение, через ApplicationEvent. Ну и несли там что-то не нравится Handled := True. Только не знаю, как это с флешроликом будет работать.
  • Царев Евгений © (05.01.08 09:53) [25]

    > 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 © (05.01.08 16:09) [26]
    >Царев Евгений Только я сам торможу не меньше Вашего: WM_RBUTTONDOWN. Я-то никак не мог вспомнить, ну вот как выловить, что правая :)
  • arreke (11.02.08 13:53) [27]
    не забывайти про кнопку меню не клаве, при её нажатии тоже меню выходит.
  • arreke © (11.02.08 14:00) [28]
    не забывайти про кнопку меню не клаве, при её нажатии тоже меню выходит.
  • Anatoly Podgoretsky © (11.02.08 14:09) [29]

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

    На такое зверство даже Микрософт не решилась.
  • Царев Евгений © (11.02.08 18:25) [30]

    > 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;

  • arreke © (12.02.08 01:32) [31]
    СПС, Евгений.
    Всё работает.
  • Германн © (12.02.08 01:53) [32]
    "Нетрадиционалы"  уже и сюда пролезли, блин. :)
  • Царев Евгений © (12.02.08 07:47) [33]

    > 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;


    так сделай.
  • arreke © (12.02.08 14:18) [34]
    СПС, и так тоже работает.

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

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

    Сюществует бесплатный аналог, или может руками можно написать, или легче всё же денежку заплатить и не заморачиваться ?
  • Царев Евгений © (12.02.08 17:11) [35]

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

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



    Ветка не по теме, открой свою, но я комментировать не буду по твоему вопросу, так как знаком с автором, и имею у себя эту библиотеку.
 
Конференция "Основная" » Как отключить правую кнопку мыши в программе [D7, NT4, Win2k, WinXP]
Есть новые Нет новых   [134482   +34][b:0][p:0.005]