'컴퓨터 프로그래밍 > eclipse & JAVA' 카테고리의 다른 글
jsmooth / JAVA 프로젝트를 .exe 실행파일로 만들기 (0) | 2010.08.24 |
---|---|
이클립스에서 자바 클래스 decompile 결과 보기 (0) | 2010.08.23 |
Java + MSSQL 프로그래밍 준비하기 (0) | 2009.09.07 |
jsmooth / JAVA 프로젝트를 .exe 실행파일로 만들기 (0) | 2010.08.24 |
---|---|
이클립스에서 자바 클래스 decompile 결과 보기 (0) | 2010.08.23 |
Java + MSSQL 프로그래밍 준비하기 (0) | 2009.09.07 |
jsmooth / JAVA 프로젝트를 .exe 실행파일로 만들기 (0) | 2010.08.24 |
---|---|
이클립스에서 자바 클래스 decompile 결과 보기 - 2 (0) | 2010.08.23 |
Java + MSSQL 프로그래밍 준비하기 (0) | 2009.09.07 |
[DB2] 여러행의 문자열을 합쳐서 가져오기 (aggregation) (0) | 2012.01.13 |
---|---|
C# 의 static constructor (정적 생성자?) (0) | 2010.04.12 |
[C#] byte[] 를 구조체로 바꾸기 (0) | 2009.12.28 |
C#나 다른 대부분 객체지향언어는 객체가 생성될 때 초기화나 다른 일들을 할 수 있게 생성자를 작성할 수 있게 해줍니다. 그래서 클래스를 쓰는 입장에서는 새 객체를 만들기만 해도 그 객체의 접근가능한 변수나 속성들이 유효한 값을 갖고 있다고 생각할 수 있습니다. 하지만 정적 변수나 속성의 경우 선언과 동시에 하는 초기화도 제한이 있고, 객체를 만들기 전에 접근할 수 있기 때문에 원하는 값으로 미리 초기화하는 방법이 필요합니다. 정적 함수로 초기화 함수를 작성하여 클래스 사용전에 호출하는 방법도 있지만, 그 함수 호출을 빼먹을 위험성도 있습니다. 그래서 이 때 필요한게 static constructor인데요.. 사실 이미 자바에도 있는 내용입니다.. 문법까지 같은지는 기억은 안나지만..
이 문법은
C# 컬렉션이나 배열의 랜덤 요소 고르기 (1) | 2010.06.06 |
---|---|
[C#] byte[] 를 구조체로 바꾸기 (0) | 2009.12.28 |
Media Player Plugin 제작하기 - 2 바로 제작 (0) | 2009.12.18 |
운영체제
osdev: http://wiki.osdev.org/Main_Page
ASP.NET + Silverlight + WCF (0) | 2009.12.21 |
---|---|
asp.net / wcf 사용시 .svc 의 처리기매핑이 제대로 안된경우 (0) | 2009.12.21 |
C# 의 static constructor (정적 생성자?) (0) | 2010.04.12 |
---|---|
Media Player Plugin 제작하기 - 2 바로 제작 (0) | 2009.12.18 |
Media Player Plugin 제작하기 - 1. 설치 (0) | 2009.12.17 |
C#, LINQ IQueryable.Where의 조건을 쉽게 만들기 (0) | 2010.01.01 |
---|---|
asp.net / wcf 사용시 .svc 의 처리기매핑이 제대로 안된경우 (0) | 2009.12.21 |
C#, LINQ IQueryable.Where의 조건을 쉽게 만들기 (0) | 2010.01.01 |
---|---|
ASP.NET + Silverlight + WCF (0) | 2009.12.21 |
중간 단계 따윈 없이 바로 제작 과정 들어갑니다..
일단 WMP 의 주요 인터페이스는 이렇습니다.
IWMPCore -> 미플 총괄
IWMPControls -> 재생/정지
IWMPPlaylist -> 재생목록
IWMPMedia -> 곡하나
그외에
IWMPPlaylistCollection, IWMPPlaylistArray등이 있는데 특히 이 두개는 이번 플러그인 제작에 쓰였습니다.
제작할 플러그인은 다음곡들을 예약하는 기능이고 이름은 BookMe로 정했습니다.
BookMe 재생목록 만들기&가져오는 함수
일단 플러그인 내에서 이 BookMe 목록은 중요한데요 이 목록을 가져오는 함수인데
m_spCore->get_playlistCollection(&spPlaylistCollection); // 전체 재생목록
spPlaylistCollection->getByName(L"BookMe", &spPlaylistArray); // 이름이 BookMe인것들
spPlaylistArray->get_count(&playlistCount); // 일치하는 재생목록 갯수
if (playlistCount > 0)
spPlaylistArray->item(0, &spPlaylist); // 처음 재생목록으로 선택
else
spPlaylistCollection->newPlaylist(L"BookMe", &spPlaylist); // 새로 만듦
이 코드로 미플 재생시 BookMe 재생목록이 바로바로 생기게 되죠..
사용자는 다음에 듣고 싶은곡을 이 재생목록에 추가할테고요...
이제 남은건 현재 재생곡이 끝났을 때, 이 목록에 남은 곡이 있다면 그 곡을 재생하고 BookMe목록에서 지우는겁니다..
플러그인 프로젝트 생성시에 event항목을 체크하면 IWMPEvents를 상속받게 되어서, WMP의 다양한 이벤트에 대해 처리할 수 가 있게 됩니다.. 그중에는 PlayStateChange 함수에서 wmppsPlaying, wmppsMediaEnded 로 재생시작/정지를 알 수 있죠.. wmppsMediaEnded 이벤트가 발생하면 BookMe목록에서 하나 가져와서 재생하면 되는거죠, 근데 중요한것은 IWMPCore나 IWMPControls의 노래변경기능은 현재 재생중인 목록에서 가져온 미디어 객체만 허용하기 때문에, BookMe에서 가져온 객체를 가지고, 현재 재생중인 목록의 미디어들과 비교하면서 파일이 같은 미디어를 찾아서 재생시켜줘야 된다는 것입니다..
또 하나 플러그인을 제작하면서 힘들었던건... wmppsMediaEnded 이벤트 발생시 곡을 멈추고 원하는 곡을 재생하면, wmp가 선택한 노래로 바로 바뀌어 버리는것이었습니다.. 그래서 결국 타이머를 이용한 시간차로 해결했죠.. 자세한건 소스를....
그리고 중요한건 윈도우7에선 관리자모드로 visual studio를 켜야, 컴파일후 플러그인 등록이 됩니다~ 안그럼 에러뜸
[C#] byte[] 를 구조체로 바꾸기 (0) | 2009.12.28 |
---|---|
Media Player Plugin 제작하기 - 1. 설치 (0) | 2009.12.17 |
C#, 윈도우 시스템 폴더 주소 가져오기 (1) | 2009.12.14 |