![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2007
Сообщений: 13
|
У меня все получилось. Там все намного прощее:
Во Flash В Delphi Вот и все! Всем спасибо за советы. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
![]() Ладно, разобрались и славно. |
|
|||||
|
[+3 29.01.08]
Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
|
На форме имеется компонент ShockwaveFlash1:
[IMG]http://i040.***********/0802/f1/4e00ae53a282.gif[/IMG] Не получается сделать перемещение форму по экрану за оранжевую область в ShockwaveFlash1. Есть такой код: private procedure WMLButtonDown(var Msg: TMessage); message WM_LBUTTONDOWN; procedure TForm1.WMLButtonDown(var Msg: TMessage); begin Perform(WM_NCLBUTTONDOWN, HTCAPTION, Msg.LParam); end; В Гугле дырку проделал, ничё не нашёл, помогите please кто в курсе. |
|
|||||
|
[+3 29.01.08]
Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
|
Кто нибудь знает, на Delphi можно в компоненте ShockwaveFlash убрать вызов меню, которое выходит при нажатии правой кнопки, типа аналог getURL("FSCommand:showmenu", false) на флеш.
|
|
|||||
|
listener
|
на Delphi не программил, но идея, думаю, должна сработать.
нужно перехватывать события мыши в оболочке. либо хуком, либо оконную процедуру указанного компонента подменять на свою. или вставить компонент в специальный контейнер и ловить мышь в нем. или готовый ехе пощупать резхакером или чем-то подобным. и не забывайте про кнопку "Меню" на клаве, по ней тоже меню вываливается. как-то так. сам интересуюсь этим вопросом. отпишитесь, если не трудно по результатам. |
|
|||||
|
[+3 29.01.08]
Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
|
Вот перехват правой кнопки мыши, на форму кидаеш компонент ApplicationEvents, который на вкладе Additional:
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.
Видишь WM_RBUTTONDOWN, нужно типа такого же для этой кнопки. |
|
|||||
|
listener
|
LRESULT CALLBACK GetMsgProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam){
switch (nMsg)
{
case WM_KEYDOWN:
switch (wParam)
{
case 93:
// handler
return 1;
break;
}
....
VK_MENU = 93 вроде. Последний раз редактировалось alexcon314; 11.02.2008 в 17:39. |
|
|||||
|
[+3 29.01.08]
Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
|
Разобрался, internet+google forever.
Вообщем на форму кидаем компонент ApplicationEvents. И пишем такой код: 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;
|
|
|||||
|
[+3 29.01.08]
Регистрация: May 2004
Адрес: Казахстан
Сообщений: 33
|
в предыдущем примере кнопка меню в приложении вообще не будет работать, теперь только на нашей флешке:
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, WM_WINMENUKEY:
Begin
GetClassName(hwnd,TempClass,50);
if (StrPas(TempClass) = FlashPlayerClassName) then Handled:= True;
End;
end; //Case
End; //With
end;
|
|
|||||
|
listener
|
гуд. спасибо. не пересесть ли мне на дэлфи?
![]() а вы часом не знаете как упаковать флаш-компонент в екзе, чтоб стандалоне плеер получился, точнее прожектор? или в дэлфи это подразумевается само-собой? Последний раз редактировалось alexcon314; 12.02.2008 в 18:06. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|