// 플레이어 명령
//
// int Volume = SendMessage(hWnd, POT_COMMAND, POT_GET_VOLUME, 0);
// POT_GET_XXX only support SendMessage
//
// Send(Post)Message(hWnd, POT_COMMAND, POT_SET_VOLUME, Volume);
// POT_SET_XXX support SendMessage or PostMessage
#define POT_COMMAND WM_USER
#define POT_GET_VOLUME 0x5000 // 0 ~ 100
#define POT_SET_VOLUME 0x5001 // 0 ~ 100
#define POT_GET_TOTAL_TIME 0x5002 // ms unit
#define POT_GET_PROGRESS_TIME 0x5003 // ms unit
#define POT_GET_CURRENT_TIME 0x5004 // ms unit
#define POT_SET_CURRENT_TIME 0x5005 // ms unit
#define POT_GET_PLAY_STATUS 0x5006 // 0:Stopped, 1:Paused, 2:Running
#define POT_SET_PLAY_STATUS 0x5007 // 0:Toggle, 1:Paused, 2:Running
#define POT_SET_PLAY_ORDER 0x5008 // 0:Prev, 1:Next
#define POT_SET_PLAY_CLOSE 0x5009
// POT_VIRTUAL_KEY_XXX is available from version 2023-08-30
#define POT_VIRTUAL_KEY_SHIFT 0x0100
#define POT_VIRTUAL_KEY_CONTROL 0x0200
#define POT_VIRTUAL_KEY_ALT 0x0400
#define POT_VIRTUAL_KEY_EXT 0x0800
#define POT_SEND_VIRTUAL_KEY 0x5010 // Virtual Key(VK_UP, VK_DOWN....) | POT_VIRTUAL_KEY_XXXX
#define POT_GET_MUTE 0x5011 // 0: none, 1:mute
#define POT_SET_MUTE 0x5012 // 0: none, 1:mute
#define POT_GET_OSD 0x5013 // 0: none, 1:all, 2:simple
#define POT_SET_OSD 0x5014 // 0: none, 1:all, 2:simple
#define POT_GET_AVISYNTH_USE 0x6000
#define POT_SET_AVISYNTH_USE 0x6001 // 0: off, 1:on
#define POT_GET_VAPOURSYNTH_USE 0x6010
#define POT_SET_VAPOURSYNTH_USE 0x6011 // 0: off, 1:on
#define POT_GET_VIDEO_WIDTH 0x6030
#define POT_GET_VIDEO_HEIGHT 0x6031
#define POT_GET_VIDEO_FPS 0x6032 // scale by 1000
// String getting
// Send(Post)Message(hWnd, POT_COMMAND, POT_GET_XXXXX, (WPARAM)ReceiveHWND);
// then PotPlayer call SendMessage(ReceiveHWND, WM_COPY_DATA, string(utf8) data...
// COPYDATASTRUCT::dwData is POT_GET_XXXXX
#define POT_GET_AVISYNTH_SCRIPT 0x6002
#define POT_GET_VAPOURSYNTH_SCRIPT 0x6012
#define POT_GET_PLAYFILE_NAME 0x6020
// String setting... Using WM_COPYDATA
// COPYDATASTRUCT cds = { 0, };
// cds.dwData = POT_SET_xxxxxxxx;
// cds.cbData = urf8.GetLength();
// cds.lpData = (void *)(LPCSTR)urf8;
// SendMessage(hWnd, WM_COPYDATA, hwnd, (WPARAM)&cds);
#define POT_SET_AVISYNTH_SCRIPT 0x6003
#define POT_SET_VAPOURSYNTH_SCRIPT 0x6013
#define POT_SET_SHOW_MESSAGE 0x6040
첫댓글 감사합니다..^_^
윈앰프처럼 사용할 수 있어 넘 좋습니다.
사람이 앉으면 눕고 싶은 마음이라고 했듯이 욕심이 생기네요..
추가 하고 싶은 것은
1. 음악의 제목
2. 다음곡, 이전곡도 이왕이면 키값이 아니고 위의 것처럼 했으면 합니다.
이것 이외에는 특별한 것이 없습니다.
넘 감사합니다.^_^
1번의 경우는 SendMessage로 String을 얻기는 힘들거 같네요(물론 CopyData를 사용하며 되기는 합니다만~~)
따라서 GetWindowText등으로 제목을 얻은뒤에 적당히 파싱해서 사용하시기 바랍니다.
2번은 다음 버전에 추가 하도록 하겠습니다.
감사합니다.
ThWnd = FindWindow("PotPlayer", vbNullString) 로 다음팟을 찾았는데..
보내주신대로 하니 볼류 업다운은 잘됩니다.
그런데 파일 다음곡이 되지 않아 무엇이 잘못되었는지 확인하고 있습니다.
Public Const VK_NEXT = &H22 ' PgDn
Public Const WM_KEYDOWN As Long = &H100
Call SendMessage(ThWnd, WM_KEYDOWN, VK_NEXT, 0)
다음버전에서 추가해주신다니.. 기대하고 있겠습니다.
노래 제목은 윈앰프에서 아래와 같이 사용하고 있습니다.
Function GetWindowTitle(TheHWnd As Long) As String
Dim Title As String
If IsWindow(TheHWnd) Then
Title = Space$(GetWindowTextLength(TheHWnd) + 1)
Call GetWindowText(TheHWnd, Title, Len(Title))
Title = left$(Title, Len(Title) - 1)
End If
GetWindowTitle = Title
End Function
개발자님.. 위의 방식대로 대로 하니 안되는데.. 혹시나 해서 초코플레이어를 위의 방법대로 하니
가상키가 먹힘니다. 혹시 핸들을 잘못 지정했나요?
참고로 postmessange를 사용도 해보았습니다.
보니깐...
팟플이 포커스가 있을때만 키 입력이 동작 하도록 되어 있습니다.
먼가 이유가 있어서 그렇게 해 놓으듯 해서 동작을 바꾸기는 어려 울거 같구요~~
다음 버전에는 리모콘 SDK를 통해서 키를 전달 할 수 있게 하겠습니다~~
감사합니다. 잘 사용하겠습니다.
사용자의 의견을 너무 잘 반영해주시니..
어떤 분일까 궁금해지네요^_^
삭제된 댓글 입니다.
혹시 C++(MFC)에서도 사용이 가능한지요? 방금전에 테스트해본 결과
HWND를 정상적으로 획득해서 사용했음에도 메세지에대한 반응이 없습니다.
사용가능 여부 부탁드립니다~
좋은 플레이어를 개발해 주셔서 감사합니다. 항상 잘 사용하고 있습니다.
외부에서 플레이어를 원격으로 제어를 해보려고 하는데.
POT_GET_PLAYFILE_NAME 0x6020 가 핸들을 넣어도 메시지가 오지 않는것 같습니다 ㅠ.
그리고 PlayList에 있는 파일명을 호출하면 그 파일이 재생되는 메시지는 없을까요?
그리고 파일 재생 시작시 종료시 FadeIn FadeOut효과가 옵션으로 가능할까요?
C# .NET Framework4.7.2로 작업중입니다.
string getting부분과 string setting부분이 결과가 나오지 않습니다....
그리고 파일을 로드하였을때 받을수 있는 콜이나 영상의 경로를 직접 입력하여 영상을 시작할 수 있을까요? 영상 시작을 로드와 동시가 아닌 임의로 딜레이를 주고 싶어서 그렇습니다.
테스트해보아도 전혀 반응이 없는 분들은
WM_USER 대신 0x0400 를 넣어보세요. 사용하시는 언어나 스크립트에 따라 이 값이 준비 안되있을 수도 있겠네요.
오토핫키 사용자고, SendMessage 어디서 많이 본 명령어인데 될 것 같은데?, 해서
오늘 구글링 하고 연구좀 해보다가, 저 값을 넣으면 된다는 것을 알고 난 다음
실마리가 풀리기 시작했네요. 이제 이것들이 뭐고 어떻게 쓰는지 좀 알겠네요.
안녕하세요 오토핫키 사용자라고 하셔서 혹시나 해서 여쭤보는데요.
오토핫키에서 현재 재생 중인 플레이어의 현재 재생 시간을 가져오려면 어떻게 해야 하나요?
부디 가르침 부탁드립니다...
@사민주의 팟플레이어 SDK 를 AutoHotkey 에서 이용해 보기로, 실험 게시판 글로 따로 적어봤습니다.