Salve amigos;
Alguém sabe como rodar VÃdeo (mpg, avi, etc) diretamente do sistema sem a utilização de programas externos ?
Valeu

Moderador: Moderadores
/*
**** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
**** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
*/
#include "hmedia.ch"
function TestMedia()
LOCAL ODLG
LOCAL O_AVI
LOCAL O_GIF,KEY, oWnd
PUBLIC cFile := "",mida_TMP:={},N_mero:=1
*****************************************
DEFINE DIALOG oDlg RESOURCE "TEST"
REDEFINE HMEDIA O_AVI ID 3 OF oDlg RESOURCE "TEST_1" MEDIA "AVI" ACTION MSGINFO("VIEW AVI FROM RES ") ;
ON RIGHT CLICK MSGINFO("RIGHT CLICK ON AVI ")
REDEFINE HMEDIA O_GIF ID 4 OF oDlg FILE "TEST.GIF" MEDIA "GIF" ACTION MSGINFO("VIEW GIF FROM FILE ");
ON RIGHT CLICK MSGINFO("RIGHT CLICK ON GIF ")
***************************************************
REDEFINE BUTTON ID 2 OF oDlg ACTION (oDlg:END())
****************
ACTIVATE DIALOG oDlg CENTERED ON INIT (O_AVI:STARTMDEIA(),O_GIF:STARTMDEIA())
O_AVI:end()
O_GIF:end()
*************
return
#include "FiveWin.ch"
#include "Constant.ch"
#include "Inkey.ch"
#define COLOR_WINDOWTEXT 8
#define COLOR_BTNFACE 15
#define MM_MCINOTIFY 953 // 0x3B9 /* MCI */
#define MM_MCISIGNAL 971 // 0x3CB
#define BUF_SIZE 200
// HMedia CLASS by hathal
//****************************************************************************//
CLASS HMedia FROM TControl
CLASSDATA nNumero INIT 0
CLASSDATA play INIT 1
DATA nX, nY, nOldX, nOldY
DATA HMedia, hPalette
DATA cMediaFile, cResName
DATA cType,cAlias
DATA cBuffer,extf
METHOD ReDefine( nId, cResName, cMediaFile , oWnd, bLClicked, bRClicked,;
oCursor, cMsg,;
bValid,action,extf ) CONSTRUCTOR
METHOD Initiate( hDlg ) INLINE Super:Initiate( hDlg )
METHOD HandleEvent( nMsg, nWParam, nLParam )
METHOD End()
METHOD xAlias()
METHOD ACTION(action)
METHOD STARTMDEIA()
ENDCLASS
//****************************************************************************//
METHOD ReDefine( nId, cResName, cMediaFile , oWnd, bLClicked, bRClicked,;
cMsg, bValid,action,extf ) CLASS HMedia
LOCAL FILE:="MPEGVideo!"
DEFAULT oWnd := GetWndDefault()
if cResName<>NIL
::cResName:=cResName
ELSE
::cResName:=NIL
// FILE =FILE+ALLTRIM(extf)
ENDIF
IF cMediaFile<>NIL
FILE=FILE+alltrim(cMediaFile)
ENDIF
**********************
::extf:=alltrim(extf)
::play:=1
::nId = nId
::nX = 0
::nY = 0
::nOldX = 0
::nOldY = 0
::lCaptured = .f.
::lDrag = .f.
::bLClicked = bLClicked
::bRClicked = bRClicked
::oWnd = oWnd
::bValid = bValid
::cMsg = cMsg
::Register( nOR( CS_VREDRAW, CS_HREDRAW ) )
if oWnd != nil
oWnd:DefControl( Self )
endif
::SetColor( GetSysColor( COLOR_WINDOWTEXT ), GetSysColor( COLOR_BTNFACE ) )
::cType:=FILE
::cAlias := ::xAlias()
::HMedia:=oWnd
::bLClicked :={|| ::ACTION(action) }
::bRClicked :={|| ::ACTION(bRClicked)}
// ::cMsg :={|| TONE(567,2),msginfo(cMsg)}
return Self
//****************************************************************************//
METHOD ACTION(action)
if Action != nil
Eval( Action, Self )
endif
return Self
*********************************************************
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS HMedia
*********************************************************
static nPosition := 0
DO CASE
CASE nMsg == WM_SIZE
::Refresh() ; return 0
CASE nMsg == WM_MOUSEMOVE .OR. nMsg == WM_LBUTTONUP .OR. nMsg == WM_RBUTTONUP
CursorHand(); return 0
CASE nMsg == WM_LBUTTONDOWN
CursorHand()
// Not return 0 Super:Evalua method bLclicked ;)
CASE nMsg == WM_RBUTTONDOWN
CursorHand()
// Not return 0
CASE nMsg == MM_MCINOTIFY // Control notify. realmente funciona ;)
if nWParam == MCI_NOTIFY_FAILURE
*? nWParam
endif
return 0
CASE nMsg == MM_MCISIGNAL // Control de Señal. No VIENE!!!!! ;(
*? nLParam
Eval( ::bSignal, nLParam )
return 0
ENDCASE
***********************************
Return Super:HandleEvent( nMsg, nWParam, nLParam )
**************
METHOD STARTMDEIA() CLASS HMedia
LOCAL IN_HND:=NIL
if ::cResName<>NIL
if ::extf="avi" .or. ::extf="AVI"
IN_HND:=InitAnimate(;
::hWnd;
,1,1,INT(::nWidth/1.003),INT(::nHeight/1.003) ,.T.,.T.,.T.)
openanimate ( IN_HND ,::cResName )
playanimate ( IN_HND )
else
// new command
endif
ELSE
mciSendStr("CLOSE VIDEO",,::oWnd:hWnd)
mciSendStr("OPEN "+::CTYPE+" ALIAS "+::cAlias+" PARENT "+Alltrim(str(::hWnd)),,::oWnd:hWnd)
MCISendStr("WINDOW "+::cAlias+" HANDLE "+Alltrim(str(::hWnd)),,"LOPEN Window")
mciSendStr("put "+::cAlias+" destination at 1 1 "+;
alltrim(str(INT(::nWidth/1.003) )) + " " +;
alltrim(str(INT(::nHeight/1.003) )))
*****************
mciSendStr("PLAY "+::cAlias+" FROM 0"+"PLAY From",,::oWnd:hWnd)
mciSendStr("PLAY "+::cAlias+" REPEAT",,"REPEAT" )
ENDIF
return Self
******************
********************************
METHOD END()
LOCAL FILE:=strtran(::CTYPE,"MPEGVideo!","")
MCISendStr("CLOSE "+::cAlias,, "END " )
IF AT(".TEMP",FILE)<>0
IF FILE(alltrim(FILE))=.T.
ERASE(alltrim(FILE))
ENDIF
ENDIF
return Self
***********************
METHOD xAlias() CLASS HMedia
Local xAlias := ::cType
::nNumero++
RETURN ( xAlias += StrZero(::nNumero,3 ) )
*************************************
//****************************************************************************//
*************************************
#pragma BEGINDUMP
#define _WIN32_IE 0x0500
#include <windows.h>
#include <mmsystem.h>
#include "hbapi.h"
#include <commctrl.h>
HB_FUNC ( INITANIMATE )
{
HWND hwnd;
int Style = WS_VISIBLE | WS_CHILD ; // | WS_BORDER;
if ( hb_parl (6) )
Style = Style | ACS_AUTOPLAY ;
if ( hb_parl (7) )
Style = Style | ACS_CENTER ;
if ( hb_parl (8) )
Style = Style | ACS_TRANSPARENT ;
hwnd=Animate_Create((HWND)hb_parnl(1),NULL,Style,GetModuleHandle(NULL));
// hwnd=Animate_Create(GetActiveWindow(),NULL,Style,GetModuleHandle(NULL));
if(hwnd == NULL)
{
MessageBox(0, "AnimateBox Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
return;
}
MoveWindow(hwnd,hb_parnl(2),hb_parnl(3),hb_parnl(4),hb_parnl(5),TRUE);
hb_retnl ((LONG)hwnd);
}
HB_FUNC ( OPENANIMATE )
{
Animate_Open((HWND) hb_parnl(1),hb_parc(2));
}
HB_FUNC ( PLAYANIMATE )
{
Animate_Play((HWND) hb_parnl(1),0,-1,1);
}
HB_FUNC ( SEEKANIMATE )
{
Animate_Seek((HWND) hb_parnl(1),hb_parni(2));
}
HB_FUNC ( STOPANIMATE )
{
Animate_Stop((HWND) hb_parnl(1));
}
HB_FUNC ( CLOSEANIMATE )
{
Animate_Close((HWND) hb_parnl(1));
}
HB_FUNC ( DESTROYANIMATE )
{
DestroyWindow((HWND) hb_parnl(1));
}
//*************************
#pragma ENDDUMP
test DIALOG 73, 10, 164, 145
STYLE DS_LOCALEDIT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
CAPTION "TEST RESOURE"
FONT 8, "MS Sans Serif"
{
CONTROL "", 3, "HMedia", 0 | WS_CHILD | WS_VISIBLE, 9, 31, 70, 73
CONTROL "", 4, "HMedia", 0 | WS_CHILD | WS_VISIBLE, 89, 30, 71, 75
CTEXT "PLAY GIF FROM FILE", -1, 96, 3, 58, 25
CTEXT "PLAY VIDEO [ AVI ] FROM RESOURE ON EXE", -1, 11, 3, 60, 25
PUSHBUTTON "EXIT", 2, 48, 120, 76, 21
}
TEST_1 AVI "clock.AVI"
Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes