C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[134] C++Builder에서 WindowsMediaPlayer 갖고 놀기
박영목 [gsbsoft] 12519 읽음    2007-07-02 19:48
모두들 안녕하세요...안녕하십니까?....  꾸벅.....

갑자기 WindowsMediaPlayer OCX를 사용하지 않을 수 없었다...  회장님의 방침으로..

TV, RADIO... 나오게 하라고 하신다....  그런데... Delphi는 uiMode 같은 속성창에

있다. 참 편하다... 그런데 나는 C++Builder로 해야한다. 약간 하다가 잘 못찾아..

소스도 몇줄 안되는데... 델파이로 할까라는?

유혹이 ㅋㅋㅋㅋ...  그래도 오늘도 디자인을 안넘겨 주길래 재미삼아 찾아 보았다.

그런데 놀랍게도...  이런 자료가 잘 없다.  구글군도 얼굴을 밝히더군....

그래서 열심히 찾아 꼬투리 물고 늘어졌다... 1개 하니... 답이 다 보이네...

ㅋㅋㅋ..    저는 COM을 잘 몰라... 베끼고... 그렇게 사용한다.

혹 이것 때문에 고민하시는 분 있으면 도움이 되기를 바랍니다....


아래는 혹 검색하시는 분이 있을까 싶어 키워드용으로 소스의 거의 전부를
아래에 붙혀 넣어 두었습니다.

혹 이상하게 저 처럼 잘 안되는 분들은 아래의 파일이 있는가를 확인하세요...
저는 WMPLib_TLB.cpp, WMPLib_TLB.h, WMPLib_TLB.obj 이게 없더군요... 어떻게 언제 날려버렸는지,...

여하튼 다른 PC에 WMPLib_TLB.cpp, WMPLib_TLB.h 이 있길래  복사해 두고...
WMPLib_TLB.cpp 이것을 project에 추가해서 컴파일... WMPLib_TLB.obj 생성..
이제 #pragma link "WMPLib_TLB" 요것이 먹히더군요...

---------------------------------------------------------------------
C:\Program Files\Borland\CBuilder6\Imports

WMPLib_OCX.cpp
WMPLib_OCX.dcr
WMPLib_OCX.h
WMPLib_TLB.cpp
WMPLib_TLB.h
WMPLib_TLB.obj
----------------------------------------------------------------------


void __fastcall TForm1::btnPlayClick(TObject *Sender)
{
  IUnknown* intf = WindowsMediaPlayer1->DefaultDispatch;


  IWMPCore3* core3 = NULL;
  intf->QueryInterface( IID_IWMPCore3, (void**)&core3 );

  core3->get_controls()->play();

  if(core3 != NULL)    core3->Release();          
}

void __fastcall TForm1::btnStopClick(TObject *Sender)
{
  IUnknown* intf = WindowsMediaPlayer1->DefaultDispatch;


  IWMPCore3* core3 = NULL;
  intf->QueryInterface(IID_IWMPCore3, (void**) &core3);

  core3->get_controls()->stop();

  if(core3 != NULL)    core3->Release();       
}

//볼륨도  IWMPSettings 이 영역에 있으니 찾아서 해 보세요...
void __fastcall TForm1::btnMuteClick(TObject *Sender)
{
  IUnknown* intf = WindowsMediaPlayer1->DefaultDispatch;


  IWMPSettings* core3 = NULL;
  intf->QueryInterface(IID_IWMPSettings, (void**) &core3);

  long l = core3->get_mute();             //get_mute();

  if( l==0 ) l = core3->set_mute( -1 );   //get_mute();  //  mute = false; //get_mute();  // set_mute( 0 );  // mute = 0;//  get_settings()->  get_controls()->stop();
  else l = core3->set_mute( 0 );

  if(core3 != NULL)    core3->Release();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnUIModeClick(TObject *Sender)
{
  IUnknown* intf = WindowsMediaPlayer1->DefaultDispatch;

  IWMPPlayer4* player4 = NULL;

  intf->QueryInterface(IID_IWMPPlayer4, (void**) &player4);

  BSTR bstr;
  bstr = player4->get_uiMode();

  char str[100];

  USES_CONVERSION;    //<--- ATL 함수를 사용하려면 앞에 이렇게 해주면 된다고 하나,,, 
                      //     물론 Head File도 추가하시고....
  strcpy( str, OLE2A(bstr) );

  if( strcmp( str, "full" )==0 ) player4->set_uiMode( L"none" );
  else player4->set_uiMode( L"full" );

  if(player4 != NULL) player4->Release();
}

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  IUnknown* intf = WindowsMediaPlayer1->DefaultDispatch;


  IWMPNetwork* core3 = NULL;
  intf->QueryInterface( IID_IWMPCore, (void**)&core3 );

  long d = 0;

  //d = core3->get_bufferingProgress();  이 값은 좀 모호함... 해보실분은 값을 보시고..

  if(core3 != NULL)    core3->Release();

  //Edit2->Text =   FloatToStr( d );
  edBuffering->Text =   WindowsMediaPlayer1->status;
}

                               부산에서 박영목 올렸습니다...

부산에 VC 2년 차정도 뽑았는데... 마음에 드는 분이 없어... C++Builder 2년차 뽑아 보려고 합니다...
나이는 32세 이하면 좋겠습니다. 아니어도 되지만 사장님이 33이라...

학력, 나이 제한 없음...  성품이 좋아야 합니다. 화합되지 못하는 성격은... 아무리 실력 좋아도 안됩니다.
이것은 회장님의 방침이라....      혹 관심 있으신 분 연락바랍니다...

                                 gsbsoft@naver.com,  011-9781-6751
강재호.만해 [greenuri]   2007-07-03 11:50 X
부산... 집근처네요...
^^
박영목 [gsbsoft]   2007-07-03 13:58 X
만해님도 부산입니까?  여기서 만해님 유명인사에 속한던데...  영광입니다 ^^
신원진.키란디아 [kyrandia]   2007-07-04 14:42 X
소장님 오랜만에 볼랜드포럼에서 뵙네요. ^^
잘지내시죠? 요즘은 어디 계시는지 궁금하네요.
대섭씨한테 다른데 취업하셨다는 얘기만 들었습니다.
전 그때 그만두고 서울에 취업해 있다가 올해 3월부터 다시 부산에서 회사 다니고 있습니다.
건강하시고 담에 기회되면 한번 뵈어요. ㅎㅎ
박영목 [gsbsoft]   2007-07-04 19:40 X
어... 허걱... 신팀장... 반갑네... 지금 부산에 있지... 일 열심히 하고... ㅋㅋㅋ
지금 시스템과 관계없는 웹쪽으로 하는 회산데... 약간의 응용프로그램 ffmpeg, uploader, player, activex... 빠른 시간에 만들어야 한다는 것... 내 성격상 또 완벽하도록 하기 위해 더 죽을 고생하고 있지... 그려 담에 차라도 한잔 하지... 지금 해운대쪽... 여기서 회사 이름은 밝히기가...  ...010-X34X-0XX6 이겠지...  그럼...

+ -

관련 글 리스트
134 C++Builder에서 WindowsMediaPlayer 갖고 놀기 박영목 12519 2007/07/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.