![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отключить правую кнопку мыши в программе [D7, NT4, Win2k, WinXP]
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]>>>а теперь представь, что твоя программа завершилась аварийно и "забыла" включить правую кнопку...
Всеп конечно учитывается... и это тоже... уж поверьте... ПРО ТО ЗНАМО
Для достижения цели, этот допустимый косяк не такой уж весомый в вероятности сбоя программы... и аварийного ее выхода... тем более после перезагрзки систему все вернется "на круги своя"..
И очень вас прошу, Б-га ради, пожалуйста без дополнительных сентенций по темам Мироздания и опять же Бытия...
_____
Вопрос: Можно ли произвести Глобальный хук на правую кнопку мыши? Если - ДА, то какими известными вам, уважаемые профи, методами....???