⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winamp2.h

📁 mp3文件操作
💻 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 + -