📄 winamp2.h
字号:
#ifndef __WINAMP_H__
#define __WINAMP_H__
#include "stdafx.h"
class CWinamp
{
public:
CWinamp() { wndWinamp = NULL; wndPlaylist = NULL; wndEQ = NULL; };
~CWinamp() { wndWinamp = NULL; wndPlaylist = NULL; wndEQ = NULL; };
bool FindWinamp(LPCTSTR lpClassName = NULL)
{
CWinamp();
if(lpClassName == NULL)
wndWinamp = ::FindWindow("Winamp v1.x", NULL);
else
wndWinamp = ::FindWindow(lpClassName, NULL);
wndPlaylist = ::FindWindow("Winamp PE", NULL);
wndEQ = ::FindWindow("Winamp EQ", NULL);
return (wndWinamp != NULL);
}
const char* GetCurrentTitle()
{
static char szTitle[2048];
if(!FindWinamp())
{
strcpy(szTitle, "WINAMP NOT RUNNING!");
return szTitle;
}
GetWindowText(wndWinamp,szTitle,sizeof(szTitle));
if(!strncmp(szTitle, "Winamp ", 7))
return szTitle;
char *rem_position = strchr(szTitle, ' ') + 1;
char *reversed = strrev(rem_position);
char *rem_winamp = strchr(reversed, '-');
rem_winamp += 2;
char *title = strrev(rem_winamp);
strcpy(szTitle, title);
return szTitle;
}
void CloseWinampHandle() { wndWinamp = NULL; };
void CloseWinamp() { PostCommand(40001); };
void RestartWinamp() { SendUserMsg(0, 135); };
HWND GetWinampHandle() { return wndWinamp; };
void AddBookmark(const char* file) { SendUserMsg((WPARAM)file, 129); };
void AddCurTrackToBookmark() { PostCommand(40321); };
// self explaining :)
void Previous() { PostCommand(40044); };
void Next() { PostCommand(40048); };
void Play() { PostCommand(40045); };
void Pause() { PostCommand(40046); };
void Stop() { PostCommand(40047); };
void FadeoutAndStop() { PostCommand(40147); };
void StopAfterCurrentTrack() { PostCommand(40157); };
void Forward5Sec() { PostCommand(40148); };
void Rewind5Sec() { PostCommand(40144); };
void StartPlayback() { SendUserMsg(0,100); };
// Track functions
int TrackGetPositionMSec() { return SendUserMsg(0, 105); };
int TrackGetLengthSec() { return SendUserMsg(1, 105); };
int TrackGetSamplerRate() { return SendUserMsg(0, 126); };
int TrackGetBitrate() { return SendUserMsg(1, 126); };
int TrackGetChannels() { return SendUserMsg(2, 126); };
void TrackSeek(int msec) { SendUserMsg(msec, 106); };
// Playlist functions
int PlsCount() { return SendUserMsg(0, 124); };
int PlsPosition() { return SendUserMsg(0, 125) + 1; };
void PlayGotoEnd() { SendUserMsg(0,102); };
void PlsAddURL() { PostPlaylist(0x0000040f); };
void PlsAddDir() { PostPlaylist(0x0000040c); };
void PlsAddFile() { PostPlaylist(0x00000408); };
void PlsRemoveDeadFiles() { PostPlaylist(0x00009d1e); };
void PlsRemoveSelection() { PostPlaylist(0x0000040a); };
void PlsSelectionInverse() { PostPlaylist(0x00009ceb); };
void PlsSelectionNone() { PostPlaylist(0x00009d0f); };
void PlsSelectionAll() { PostPlaylist(0x00009d0d); };
void PlsEditEntry() { PostPlaylist(0x00009d3f); };
void PlsGenerateHTMLPlaylist() { PostPlaylist(0x00009d64); };
void PlsCrop() { PostPlaylist(0x0000040b); };
void PlsSortByTitle() { PostPlaylist(40209); };
void PlsSortByFilename() { PostPlaylist(40210); };
void PlsSortByFilepath() { PostPlaylist(40211); };
void PlsRandomize() { PostPlaylist(40212); };
void PlsReverse() { PostPlaylist(40212); };
void PlsClear() { PostPlaylist(40214); };
int PlsGetEntry() { return SendUserMsg(0, 120) +1 ; };
void PlsSetEntry(int track) { SendUserMsg(track - 1, 121); };
void PlsClearInternalList() { SendUserMsg(0, 101); };
// Open various dialogs
void OpenFileDlg() { PostCommand(40029); };
void OpenFileInfoBox() { PostCommand(40188); };
void OpenVisualizationPlugins() { PostCommand(40191); };
void OpenJumpToTimeDlg() { PostCommand(40193); };
void OpenJumpToFileDlg() { PostCommand(40194); };
void OpenSkinSelector() { PostCommand(40219); };
void OpenConfigureCurVisPlugin() { PostCommand(40221); };
void OpenEditBookmarks() { PostCommand(40320); };
// Toggle various options
void ToggleTimeDisplayElapsed() { PostCommand(40037); };
void ToggleTimeDisplayRemaining() { PostCommand(40038); };
void ToggleAboutBox() { PostCommand(40041); };
void ToggleTitleAutoscrolling() { PostCommand(40189); };
void ToggleAlwaysOnTop() { PostCommand(40019); };
void ToggleWindowshade() { PostCommand(40064); };
void TogglePlaylistWindowshade() { PostCommand(40266); };
void ToggleDoublesizeMode() { PostCommand(40165); };
void ToggleEqualizer() { PostCommand(40036); };
void TogglePlaylistEditor() { PostCommand(40040); };
void ToggleMainWindowVisible() { PostCommand(40258); };
void ToggleMinibrowser() { PostCommand(40298); };
void ToggleEasymove() { PostCommand(40186); };
void ToggleRepeat() { PostCommand(40022); };
void ToggleShuffle() { PostCommand(40023); };
// Raise, lower volume by 1 percent
void VolumeRaise() { PostCommand(40058); };
void VolumeLower() { PostCommand(40059); };
// 0-255 0=silent, 255=loud
int GetVolume() { return SendUserMsg(-666, 122); };
void SetVolume(int volume) { SendUserMsg(volume, 122); };
// Various functions
void ReloadCurrentSkin() { PostCommand(40291); };
void PlayAudioCD() { PostCommand(40323); };
void ExecuteCurrentVis() { PostCommand(40192); };
// doumented, but doesn't work for some reason
// void SetPanning(int panning) { SendUserMsg(panning, 123); };
bool IsPlaying() { return ( SendUserMsg(0, 104) == 1); };
bool IsPaused() { return ( SendUserMsg(0, 104) == 3); };
bool IsStopped() { return (!IsPlaying() && !IsPaused()); };
bool IsMainWindowVisible() { return (IsWindowVisible(wndWinamp) == 1); };
bool IsPlaylistWindowVisible() { return (IsWindowVisible(wndPlaylist) == 1); };
bool IsEqualizerWindowVisible() { return (IsWindowVisible(wndEQ) == 1); };
// Equalizer functions
// note: 0 = min, 63 = max
int EQGetPreampValaue() { return SendUserMsg(10, 127); };
bool EQIsEnabled() { return (SendUserMsg(11, 127) == 1); };
bool EQAuto() { return (SendUserMsg(12, 127) == 1); };
// EQ Presets Menu
void EQPresetsLoadPreset() { PostEQ(40172); };
void EQPresetsLoadAutoloadPreset() { PostEQ(40173); };
void EQPresetsLoadDefault() { PostEQ(40174); };
void EQPresetsLoadPresetFromEQF() { PostEQ(40253); };
void EQPresetsSavePreset() { PostEQ(40175); };
void EQPresetsSaveAutoloadPreset() { PostEQ(40176); };
void EQPresetsSaveDefault() { PostEQ(40177); };
void EQPresetsSavePresetToEQF() { PostEQ(40254); };
void EQPresetsDeletePreset() { PostEQ(40178); };
void EQPresetsDeleteAutoloadPreset() { PostEQ(40180); };
int EQGetData(int band) { if((band >= 0) && (band <10)) return SendUserMsg(band, 127); else return -1; };
void EQSetData(int band, int value)
{
if((band >= 0) && (band <10) && (value >= 0) && (value <64))
{
EQGetData(band);
SendUserMsg(value, 128);
}
}
private:
HWND wndWinamp;
HWND wndPlaylist;
HWND wndEQ;
bool Found() { return (wndWinamp != NULL); };
void SendCommand(int iCommand) { if(Found()) ::SendMessage(wndWinamp, WM_COMMAND, iCommand, 0); };
void PostCommand(int iCommand) { if(Found()) ::PostMessage(wndWinamp, WM_COMMAND, iCommand, 0); };
void SendPlaylist(int iCommand) { if(wndPlaylist != NULL) ::SendMessage(wndPlaylist, WM_COMMAND, iCommand, 0); };
void PostPlaylist(int iCommand) { if(wndPlaylist != NULL) ::PostMessage(wndPlaylist, WM_COMMAND, iCommand, 0); };
void PostEQ(int iCommand) { if(wndEQ != NULL) ::PostMessage(wndEQ, WM_COMMAND, iCommand, 0); };
LRESULT SendUserMsg(WPARAM data, LPARAM id)
{
if(wndWinamp != NULL)
return ::SendMessage(wndWinamp, WM_USER, data, id);
else
return -1;
};
};
#endif // __WINAMP_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -