Конференция "Основная" » Как отключить правую кнопку мыши в программе [D7, NT4, Win2k, WinXP]
 
  • 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   +35][b:0][p:0.002]