Committing NowPlaying plugin. Because it requires VS2010 Pro to compile, it is not built by default.

This commit is contained in:
Birunthan Mohanathas
2011-05-21 18:17:37 +00:00
parent e13f3a3c2c
commit 6cd327e86c
205 changed files with 63050 additions and 4 deletions

View File

@ -0,0 +1,726 @@
// Translated by Vitaliy Diatlov
// AIMP2: SDK (02.07.2009), v2.60
#ifndef AIMP2_SDK_H
#define AIMP2_SDK_H
#include <windows.h>
#include <unknwn.h>
const char AIMP2_RemoteClass[] = "AIMP2_RemoteInfo";
const int AIMP2_RemoteFileSize = 2048;
const int WM_AIMP_COMMAND = WM_USER + 0x75; // WParam = One of Command, LPARAM - Parameter
const int WM_AIMP_STATUS_GET = 1;
const int WM_AIMP_STATUS_SET = 2;//HiWord of LParam - Command, LoWord of LParam - Parameter
const int WM_AIMP_CALLFUNC = 3;// LPARAM - Func ID (see below Func ID for Addons)
const int WM_AIMP_GET_VERSION = 4;
const int WM_AIMP_STATUS_CHANGE = 5;
const int WM_LANG = WM_USER + 101;
// CallBack types
const int AIMP_STATUS_CHANGE = 1;
const int AIMP_PLAY_FILE = 2;
const int AIMP_INFO_UPDATE = 5; // Update Info for current track
const int AIMP_PLAYER_STATE = 11; // Play/Pause/Stop
const int AIMP_EFFECT_CHANGED = 12; // Balance, Speed, Tempo, Pitch, Flanger and etc.
const int AIMP_EQ_CHANGED = 13; // Sliders changed
const int AIMP_TRACK_POS_CHANGED = 14;
// AIMP_Status_Set / AIMP_Status_Get
const int AIMP_STS_VOLUME = 1;
const int AIMP_STS_BALANCE = 2;
const int AIMP_STS_SPEED = 3;
const int AIMP_STS_Player = 4;
const int AIMP_STS_MUTE = 5;
const int AIMP_STS_REVERB = 6;
const int AIMP_STS_ECHO = 7;
const int AIMP_STS_CHORUS = 8;
const int AIMP_STS_Flanger = 9;
const int AIMP_STS_EQ_STS = 10;
const int AIMP_STS_EQ_SLDR01 = 11;
const int AIMP_STS_EQ_SLDR02 = 12;
const int AIMP_STS_EQ_SLDR03 = 13;
const int AIMP_STS_EQ_SLDR04 = 14;
const int AIMP_STS_EQ_SLDR05 = 15;
const int AIMP_STS_EQ_SLDR06 = 16;
const int AIMP_STS_EQ_SLDR07 = 17;
const int AIMP_STS_EQ_SLDR08 = 18;
const int AIMP_STS_EQ_SLDR09 = 19;
const int AIMP_STS_EQ_SLDR10 = 20;
const int AIMP_STS_EQ_SLDR11 = 21;
const int AIMP_STS_EQ_SLDR12 = 22;
const int AIMP_STS_EQ_SLDR13 = 23;
const int AIMP_STS_EQ_SLDR14 = 24;
const int AIMP_STS_EQ_SLDR15 = 25;
const int AIMP_STS_EQ_SLDR16 = 26;
const int AIMP_STS_EQ_SLDR17 = 27;
const int AIMP_STS_EQ_SLDR18 = 28;
const int AIMP_STS_REPEAT = 29;
const int AIMP_STS_ON_STOP = 30;
const int AIMP_STS_POS = 31;
const int AIMP_STS_LENGTH = 32;
const int AIMP_STS_REPEATPLS = 33;
const int AIMP_STS_REP_PLS_1 = 34;
const int AIMP_STS_KBPS = 35;
const int AIMP_STS_KHZ = 36;
const int AIMP_STS_MODE = 37;
const int AIMP_STS_RADIO = 38;
const int AIMP_STS_STREAM_TYPE = 39; // Music / CDA / Radio
const int AIMP_STS_TIMER = 40; // Reverse / Normal
const int AIMP_STS_SHUFFLE = 41;
const int AIMP_STS_MAIN_HWND = 42;
const int AIMP_STS_TC_HWND = 43;
const int AIMP_STS_APP_HWND = 44;
const int AIMP_STS_PL_HWND = 45;
const int AIMP_STS_EQ_HWND = 46;
const int AIMP_STS_TRAY = 47;
// Support Exts Flags
const int AIMP_PLS_EXTS = 1;
const int AIMP_AUDIO_EXTS = 2;
// Menu IDs
const int AIMP_MAIN_MENU_OPN = 0;
const int AIMP_MAIN_MENU_UTILS = 1;
const int AIMP_MAIN_MENU_FNC = 2;
const int AIMP_MAIN_MENU_CFG = 3;
const int AIMP_UTILS_MENU = 4;
const int AIMP_PLS_MENU_ADD = 5;
const int AIMP_PLS_MENU_JUMP = 6;
const int AIMP_PLS_MENU_FNC = 7;
const int AIMP_PLS_MENU_SEND = 8;
const int AIMP_PLS_MENU_DEL = 9;
const int AIMP_ADD_MENU = 10;
const int AIMP_DEL_MENU = 11;
const int AIMP_FND_MENU = 12;
const int AIMP_SRT_MENU = 13;
const int AIMP_MSC_MENU = 14;
const int AIMP_PLS_MENU = 15;
const int AIMP_TRAY_UTILS = 16;
const int AIMP_TRAY = 17;
const int AIMP_EQ_LIB = 18;
// use AIMP_UTILS_MENU overthis:
// + AIMP_MAIN_MENU_UTILS = 1;
// + AIMP_TRAY_UTILS = 16;
// AIMP_CallFunction
const int AIMP_OPEN_FILES = 0;
const int AIMP_OPEN_DIR = 1;
const int AIMP_ABOUT = 2;
const int AIMP_SLEEP_TIMER = 3;
const int AIMP_UTILS_AC = 4;
const int AIMP_UTILS_SR = 5;
const int AIMP_UTILS_TE = 6;
const int AIMP_UTILS_CDB = 7;
const int AIMP_OPTIONS = 8;
const int AIMP_PLUGINS = 9;
const int AIMP_QUIT = 10;
const int AIMP_NEXT_VIS = 11;
const int AIMP_PREV_VIS = 12;
const int AIMP_EQ_ANALOG = 13;
const int AIMP_TO_TRAY = 14;
const int AIMP_PLAY = 15;
const int AIMP_PAUSE = 16;
const int AIMP_STOP = 17;
const int AIMP_NEXT = 18;
const int AIMP_PREV = 19;
const int AIMP_ADD_FILES = 20;
const int AIMP_ADD_DIR = 21;
const int AIMP_ADD_PLS = 22;
const int AIMP_ADD_URL = 23;
const int AIMP_DEL_FILES = 24;
const int AIMP_DEL_BAD = 25;
const int AIMP_DEL_FROMHDD = 26;
const int AIMP_DEL_OFF = 27;
const int AIMP_DEL_OFF_HDD = 28;
const int AIMP_RESCAN_PLS = 29;
const int AIMP_SHOW_CURFILE = 30;
const int AIMP_SORT_INVERT = 31;
const int AIMP_SORT_RANDOM = 32;
const int AIMP_SORT_TITLE = 33;
const int AIMP_SORT_ARTIST = 34;
const int AIMP_SORT_FOLDER = 35;
const int AIMP_SORT_LENGTH = 36;
const int AIMP_SORT_RATING = 37;
const int AIMP_SEARCH = 38;
const int AIMP_OPEN_PLS = 39;
const int AIMP_SAVE_PLS = 40;
const int AIMP_PLAY_LAST = 41;
const int AIMP_OFF_SELECTED = 42;
const int AIMP_ON_SELECTED = 43;
const int AIMP_ADD2BOOKMARK = 44;
const int AIMP_EDITBOOKMARK = 45;
// For AIMP_GetPath
const int AIMP_CFG_DATA = 0;
const int AIMP_CFG_PLS = 1;
const int AIMP_CFG_LNG = 2;
const int AIMP_CFG_SKINS = 3;
const int AIMP_CFG_PLUGINS = 4;
const int AIMP_CFG_ICONS = 5;
const int AIMP_CFG_ML = 6;
// For AIMP_QueryObject
const int IAIMP2PlayerID = 0x0001;
const int IAIMP2PlaylistManagerID = 0x0003;
const int IAIMP2ExtendedID = 0x0004;
const int IAIMP2CoverArtManagerID = 0x0005;
const int IAIMP2PlaylistManager2ID = 0x0006;
const int IAIMPConfigFileID = 0x0010;
const int IAIMPLanguageFileID = 0x0011;
// For AIMP_ObjectClass
const int AIMP_EXT_LC_MESSAGE = 100;
const int AIMP_EXT_ML_MESSAGE = 101;
// Option Frame Position Flags
const int AIMP_FRAME_POS_PLAY = 1;
const int AIMP_FRAME_POS_PLAYLIST = 2;
const int AIMP_FRAME_POS_PLAYER = 3;
const int AIMP_FRAME_POS_TEMPLATE = 4;
const int AIMP_FRAME_POS_SYSTEM = 5;
const int AIMP_FRAME_POS_SKINS = 6;
const int AIMP_FRAME_POS_LANGS = 7;
// AIMP_PLS_SORT_TYPE_XXX
const int AIMP_PLS_SORT_TYPE_TITLE = 1;
const int AIMP_PLS_SORT_TYPE_FILENAME = 2;
const int AIMP_PLS_SORT_TYPE_DURATION = 3;
const int AIMP_PLS_SORT_TYPE_ARTIST = 4;
const int AIMP_PLS_SORT_TYPE_INVERSE = 5;
const int AIMP_PLS_SORT_TYPE_RANDOMIZE = 6;
#pragma pack(push, 1)
struct AIMP2FileInfo
{
DWORD cbSizeOf;
//
BOOL nActive;
DWORD nBitRate;
DWORD nChannels;
DWORD nDuration;
INT64 nFileSize;
DWORD nRating;
DWORD nSampleRate;
DWORD nTrackID;
//
DWORD nAlbumLen;
DWORD nArtistLen;
DWORD nDateLen;
DWORD nFileNameLen;
DWORD nGenreLen;
DWORD nTitleLen;
//
PWCHAR sAlbum;
PWCHAR sArtist;
PWCHAR sDate;
PWCHAR sFileName;
PWCHAR sGenre;
PWCHAR sTitle;
};
#pragma pack(pop)
typedef boolean (WINAPI *AIMPPlaylistDeleteProc)(AIMP2FileInfo AFileInfo, DWORD AUserData);
typedef int (WINAPI *AIMPPlaylistSortProc)(AIMP2FileInfo AFileInfo1, AIMP2FileInfo AFileInfo2, DWORD AUserData);
typedef void (WINAPI *AIMPMenuProc)(DWORD User, void *Handle);
typedef void (WINAPI *AIMPStatusChange)(DWORD User, DWORD CallBackType);
typedef void (WINAPI *CallBackFunc)(DWORD User, DWORD dwCBType);
#pragma pack(push, 1)
struct PLSInfo
{
PCHAR PLSName;
DWORD FileCount;
DWORD PLSDuration;
INT64 PLSSize;
int PlaylistID;
};
#pragma pack(pop)
#pragma pack(push, 1)
struct AIMPMenuInfo
{
boolean Checkbox;
boolean RadioItem;
boolean Checked;
boolean Enabled;
int ProcPtr; // TAIMPMenuProc;
HBITMAP Bitmap; // 0 - no bmp
PWCHAR Caption;
DWORD User;
};
#pragma pack(pop)
class IPLSStrings
: public IUnknown
{
public:
virtual boolean WINAPI AddFile(
PWCHAR FileName,
AIMP2FileInfo *FileInfo
);
virtual boolean WINAPI DelFile(
int ID
);
virtual PWCHAR WINAPI GetFileName(
int ID
);
virtual boolean WINAPI GetFileInfo(
int ID,
AIMP2FileInfo *FileInfo
);
virtual DWORD WINAPI GetFileObj(
int ID
);
virtual int WINAPI GetCount();
};
class IAIMP2Controller
:public IUnknown
{
public:
virtual boolean WINAPI IsUnicodeVersion();
virtual boolean WINAPI AIMP_CallBack_Set(
DWORD dwCBType,
CallBackFunc CallBackFuncPtr,
DWORD User
);
virtual boolean WINAPI AIMP_CallBack_Remove(
DWORD dwCBType,
int ProcPtr
);
// Status
virtual DWORD WINAPI AIMP_Status_Get(
DWORD StatusType
);
virtual boolean WINAPI AIMP_Status_Set(
DWORD StatusType,
DWORD Value
);
// Playlist
virtual boolean WINAPI AIMP_PLS_Clear(
int ID
);
virtual boolean WINAPI AIMP_PLS_Delete(
int ID
);
virtual boolean WINAPI AIMP_PLS_New(
PWCHAR Name
);
virtual boolean WINAPI AIMP_PLS_Info(
int Index,
PLSInfo *info
);
virtual short WINAPI AIMP_PLS_Count();
virtual boolean WINAPI AIMP_PLS_GetFiles(
int ID,
IPLSStrings **Strings
);
virtual boolean WINAPI AIMP_PLS_GetSelFiles(
int ID,
IPLSStrings **Strings
);
virtual boolean WINAPI AIMP_PLS_AddFiles(
int ID,
IPLSStrings *Strings
);
virtual boolean WINAPI AIMP_PLS_SetPLS(
int ID
);
// System
virtual boolean WINAPI AIMP_NewStrings(
IPLSStrings **Strings
);
virtual boolean WINAPI AIMP_GetCurrentTrack(
AIMP2FileInfo *AInfo
);
virtual boolean WINAPI AIMP_QueryInfo(
PWCHAR Filename,
AIMP2FileInfo *AInfo
);
virtual DWORD WINAPI AIMP_GetSystemVersion();
virtual boolean WINAPI AIMP_CallFunction(
DWORD FuncID
);
virtual int WINAPI AIMP_GetLanguage(
PWCHAR Str,
int ACount
);
virtual int WINAPI AIMP_GetCfgPath(
PWCHAR Str,
int ACount
);
virtual int WINAPI AIMP_GetSupportExts(
DWORD Flags,
PWCHAR Str,
int BufSize
);
// Menu
virtual DWORD WINAPI AIMP_GetSupportExts(
DWORD Parent,
AIMPMenuInfo *MenuInfo
);
virtual DWORD WINAPI AIMP_Menu_Create(
DWORD MenuID,
AIMPMenuInfo *MenuInfo
);
virtual boolean WINAPI AIMP_Menu_Update(
int Handle,
AIMPMenuInfo *MenuInfo
);
virtual boolean WINAPI AIMP_Menu_Remove(
int Handle
);
// extention
virtual boolean WINAPI AIMP_QueryObject(
DWORD ObjectID,
void *Obj
);
};
class IAIMPAddonHeader
:public IUnknown
{
public:
virtual BOOL WINAPI GetHasSettingsDialog() = 0;
virtual PWCHAR WINAPI GetPluginAuthor() = 0;
virtual PWCHAR WINAPI GetPluginName() = 0;
virtual void WINAPI Finalize() = 0;
virtual void WINAPI Initialize(IAIMP2Controller *AController) = 0;
virtual void WINAPI ShowSettingsDialog(HWND AParentWindow) = 0;
};
typedef IAIMPAddonHeader *(WINAPI *AddonProc)();
typedef BOOL (WINAPI *AIMPAddonHeaderProc)(IAIMPAddonHeader *AHeader);
// Export function name: AIMP_QueryAddonEx
//==============================================================================
// Old Style Addon struct - don't use for new plugins
//==============================================================================
typedef PCHAR (WINAPI *GetPlgNameFunc)();
typedef PCHAR (WINAPI *GetAutorFunc)();
typedef void (WINAPI *InitFunc)(IAIMP2Controller *AIMP);
typedef void (WINAPI *ConfigFunc)(DWORD Handle, DWORD Win);
typedef void (WINAPI *FreeFunc)();
#pragma pack(push, 1)
struct AIMPAddonHeader
{
DWORD version;
DWORD DllInstance;
GetPlgNameFunc PlgNameFuncPtr;
GetAutorFunc AutorFuncPtr;
InitFunc InitFuncPtr;
ConfigFunc ConfigFuncPtr;
FreeFunc FreeFuncPtr;
};
#pragma pack(pop)
//==============================================================================
class IAIMP2OptionFrame
:public IUnknown
{
public:
virtual HWND WINAPI FrameCreate(
HWND AParent
);
virtual void *WINAPI FrameData(
); // reserved
virtual int WINAPI FrameFlags(
); // See FramePositionFlags
virtual PWCHAR WINAPI FrameName(
);
virtual HWND WINAPI FrameFree(
HWND AWindow
);
virtual void WINAPI FrameLoadConfigNotify(
);
virtual void WINAPI FrameSaveConfigNotify(
);
};
class IAIMP2Player
: public IUnknown
{
public:
virtual int WINAPI Version();
virtual boolean WINAPI PlayTrack(
int ID,
int ATrackIndex
);
virtual void WINAPI PlayOrResume();
virtual void WINAPI Pause();
virtual void WINAPI Stop();
virtual void WINAPI NextTrack();
virtual void WINAPI PrevTrack();
};
class IAIMP2PlaylistManager
: public IUnknown
{
public:
virtual int WINAPI AIMP_PLS_CreateFromFile(
PWCHAR AFile,
boolean AActivate,
boolean AStartPlay
);
virtual int WINAPI AIMP_PLS_ID_ActiveGet();
virtual boolean WINAPI AIMP_PLS_ID_ActiveSet(
int ID
);
virtual int WINAPI AIMP_PLS_ID_PlayingGet();
virtual int WINAPI AIMP_PLS_ID_PlayingGetTrackIndex(
int ID
);
virtual int WINAPI AIMP_PLS_NewEx(
PWCHAR AName,
boolean AActivate
);
virtual boolean WINAPI AIMP_PLS_PlayFile(
PWCHAR AFileName,
boolean AFailIfNotExists
);
// Playlist Processing
virtual boolean WINAPI AIMP_PLS_DeleteByFilter(
int ID,
DWORD AFilterProc,
DWORD AUserData
);
virtual boolean WINAPI AIMP_PLS_SortByFilter(
int ID,
DWORD AFilterProc,
DWORD AUserData
);
// Entries
virtual boolean WINAPI AIMP_PLS_Entry_Delete(
int ID,
int AEntryIndex
);
virtual boolean WINAPI AIMP_PLS_Entry_DeleteAll(
int ID
);
virtual boolean WINAPI AIMP_PLS_Entry_FileNameGet(
int ID,
int AEntryIndex,
PWCHAR PBuf,
DWORD ABufLen
);
virtual boolean WINAPI AIMP_PLS_Entry_FileNameSet(
int ID,
int AEntryIndex,
PWCHAR PBuf
);
virtual int WINAPI AIMP_PLS_Entry_FocusedGet(
int ID
);
virtual boolean WINAPI AIMP_PLS_Entry_FocusedSet(
int ID,
int AEntryIndex
);
virtual boolean WINAPI AIMP_PLS_Entry_InfoGet(
int ID,
int AEntryIndex,
AIMP2FileInfo *PFileInfo
);
virtual boolean WINAPI AIMP_PLS_Entry_InfoSet(
int ID,
int AEntryIndex,
AIMP2FileInfo *PFileInfo
);
virtual boolean WINAPI AIMP_PLS_Entry_PlayingSwitchGet(
int ID,
int AEntryIndex
);
virtual boolean WINAPI AIMP_PLS_Entry_PlayingSwitchSet(
int ID,
int AEntryIndex,
boolean ASwitch
);
virtual boolean WINAPI AIMP_PLS_Entry_ReloadInfo(
int ID,
int AEntryIndex
);
// Load/Save Playlists
virtual boolean WINAPI AIMP_PM_DestroyStream(
DWORD AHandle
);
virtual DWORD WINAPI AIMP_PM_ReadItem(
DWORD AHandle,
AIMP2FileInfo *PItem
);
virtual DWORD WINAPI AIMP_PM_ReadStream(
PWCHAR AFileName,
int *Count
);
virtual DWORD WINAPI AIMP_PM_SaveStream(
PWCHAR AFileName
);
virtual DWORD WINAPI AIMP_PM_WriteItem(
DWORD AHandle,
AIMP2FileInfo *PItem
);
// added in 2.50 B295
virtual boolean WINAPI AIMP_PLS_ID_PlayingSetTrackIndex(
int ID,
int AEntryIndex
);
};
class IAIMP2PlaylistManager2
: public IAIMP2PlaylistManager
{
public:
// Count of loaded playlists
virtual unsigned short WINAPI AIMP_PLS_Count();
// Return = -1 - ID is not valid, otherthis - count of files in playlist
virtual int WINAPI AIMP_PLS_GetFilesCount(int ID);
virtual HRESULT WINAPI AIMP_PLS_GetInfo(int ID, INT64 *ADuration, INT64 *ASize);
virtual HRESULT WINAPI AIMP_PLS_GetName(int ID, PWCHAR ABuffer, int ABufferSizeInChars);
// Custom Sorting, see AIMP_PLS_SORT_TYPE_XXX
virtual HRESULT WINAPI AIMP_PLS_Sort(int ID, int ASortType);
virtual HRESULT WINAPI AIMP_PLS_SortByTemplate(int ID, PWCHAR ABuffer, int ABufferSizeInChars);
// if Index = -1 returned ID of current playlist.
virtual HRESULT WINAPI AIMP_PLS_ID_By_Index(int Index, int *ID);
// Get Formated title for Entry
virtual HRESULT WINAPI AIMP_PLS_Entry_GetTitle(int ID, int AEntryIndex,
PWCHAR ABuffer, int ABufferSizeInChars);
// Set Entry to playback queue
virtual HRESULT WINAPI AIMP_PLS_Entry_QueueRemove(int ID, int AEntryIndex);
virtual HRESULT WINAPI AIMP_PLS_Entry_QueueSet(int ID, int AEntryIndex, BOOL AInsertAtQueueBegining);
// Moving Entry
virtual HRESULT WINAPI AIMP_PLS_Entry_SetPosition(int ID, int AEntryIndex, int ANewEntryIndex);
};
// See IAIMP2ExtendedID
class IAIMP2Extended
:public IUnknown
{
public:
virtual int WINAPI AIMP_GetPath(
int ID,
PWCHAR buffer,
int bufSize
);
virtual boolean WINAPI AIMP_ObjectClass(
int ID,
void *AData,
boolean ARegister
);
// User Option Dialogs
virtual DWORD WINAPI AIMP_Options_FrameAdd(
IAIMP2OptionFrame *AFrame
);
virtual DWORD WINAPI AIMP_Options_FrameRemove(
IAIMP2OptionFrame *AFrame
);
virtual DWORD WINAPI AIMP_Options_ModifiedChanged(
IAIMP2OptionFrame *AFrame
);
};
class IAIMP2CoverArtManager
:public IUnknown
{
public:
// Return picture will be proportional stretched to ADisplaySize value
virtual HBITMAP WINAPI GetCoverArtForFile(PWCHAR AFile, const SIZE *ADisplaySize);
// Draw CoverArt of playing file, Return - cover art drawing successfuly
// CoverArt will be proportional stretched to R value
virtual HRESULT WINAPI CurrentCoverArtDraw(HDC DC, const RECT *R);
// Return <> S_OK, CoverArt is empty or file are not playing
virtual HRESULT WINAPI CurrentCoverArtGetSize(SIZE *ASize);
// W, H - destination display sizes, function will correct sizes for proportional drawing
// Return <> S_OK, CoverArt is empty or file are not playing
virtual HRESULT WINAPI CurrentCoverArtCorrectSizes(int *W, int *H);
};
// See IAIMPLanguageFileID
class IAIMPLanguageFile
:public IUnknown
{
public:
virtual int AIMP_Lang_Version();
virtual int AIMP_Lang_CurrentFile(PWCHAR ABuffer, int ABufferSizeInChars);
virtual HRESULT AIMP_Lang_IsSectionExists(PWCHAR ASectionName, int ASectionNameSizeInChars);
virtual HRESULT AIMP_Lang_ReadString(PWCHAR ASectionName, PWCHAR AItemName, PWCHAR AValueBuffer,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValueBufferSizeInChars);
// When Language changed AIMP will send to window handle "WM_LANG" message
virtual HRESULT AIMP_Lang_Notification(HWND AWndHandle, BOOL ARegister);
};
// See IAIMPConfigFileID
class IAIMPConfigFile
:public IUnknown
{
// functions return null value, if value don't exists in configuration file
virtual HRESULT AIMP_Config_ReadString(PWCHAR ASectionName, PWCHAR AItemName, PWCHAR AValueBuffer,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValueBufferSizeInChars);
virtual HRESULT AIMP_Config_ReadInteger(PWCHAR ASectionName, PWCHAR AItemName,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int * AValue);
//
virtual HRESULT AIMP_Config_WriteString(PWCHAR ASectionName, PWCHAR AItemName, PWCHAR AValueBuffer,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValueBufferSizeInChars);
virtual HRESULT AIMP_Config_WriteInteger(PWCHAR ASectionName, PWCHAR AItemName,
int ASectionNameSizeInChars, int AItemNameSizeInChars, int AValue);
//
virtual HRESULT AIMP_Config_IsSectionExists(PWCHAR ASectionName, int ASectionNameSizeInChars);
virtual HRESULT AIMP_Config_RemoveSection(PWCHAR ASectionName, int ASectionNameSizeInChars);
};
//==============================================================================
// V I S U A L S
//==============================================================================
const int VIS_RQD_DATA_WAVE = 1;
const int VIS_RQD_DATA_SPECTRUM = 2;
const int VIS_RQD_NOT_SUSPEND = 4;
typedef short WaveForm[2][512];
typedef short Spectrum[2][256];
struct AIMPVisualData
{
int LevelR;
int LevelL;
Spectrum spectrum;
WaveForm waveForm;
};
typedef AIMPVisualData *PAIMPVisualData;
class IAIMP2VisualPlugin
:public IUnknown
{
public:
virtual PWCHAR WINAPI AuthorName();
virtual PWCHAR WINAPI PluginName();
virtual PWCHAR WINAPI PluginInfo();
virtual DWORD WINAPI PluginFlags();
virtual BOOL WINAPI Initialize();
virtual void WINAPI Deinitialize();
virtual void WINAPI DisplayClick(int X, int Y);
virtual void WINAPI DisplayRender(HDC DC, PAIMPVisualData AData);
virtual void WINAPI DisplayResize(int AWidth, int AHeight);
};
// Export function name: AIMP_QueryVisual
typedef IAIMP2VisualPlugin *(WINAPI *AIMPVisualProc)();
#endif

View File

@ -0,0 +1,97 @@
#define WINAMP_STOPPED 0
#define WINAMP_PLAYING 1
#define WINAMP_PAUSED 3
#define WINAMP_FILE_QUIT 40001
#define WINAMP_OPTIONS_PREFS 40012
#define WINAMP_OPTIONS_AOT 40019
#define WINAMP_FILE_REPEAT 40022
#define WINAMP_FILE_SHUFFLE 40023
#define WINAMP_HIGH_PRIORITY 40025
#define WINAMP_FILE_PLAY 40029
#define WINAMP_OPTIONS_EQ 40036
#define WINAMP_OPTIONS_ELAPSED 40037
#define WINAMP_OPTIONS_REMAINING 40038
#define WINAMP_OPTIONS_PLEDIT 40040
#define WINAMP_HELP_ABOUT 40041
#define WINAMP_MAINMENU 40043
#define WINAMP_REWIND 40044
#define WINAMP_PLAY 40045
#define WINAMP_PAUSE 40046
#define WINAMP_STOP 40047
#define WINAMP_FASTFWD 40048
#define WINAMP_VOLUMEUP 40058
#define WINAMP_VOLUMEDOWN 40059
#define WINAMP_FFWD5S 40060
#define WINAMP_REW5S 40061
#define WINAMP_NEXT_WINDOW 40063
#define WINAMP_OPTIONS_WINDOWSHADE 40064
#define WINAMP_REWIND_SHIFT 40144
#define WINAMP_PLAY_SHIFT 40145
#define WINAMP_PAUSE_SHIFT 40146
#define WINAMP_STOP_SHIFT 40147
#define WINAMP_FASTFWD_SHIFT 40148
#define WINAMP_REWIND_CTRL 40154
#define WINAMP_PLAY_CTRL 40155
#define WINAMP_PAUSE_CTRL 40156
#define WINAMP_STOP_CTRL 40157
#define WINAMP_FASTFWD_CTRL 40158
#define WINAMP_OPTIONS_DSIZE 40165
#define IDC_SORT_FILENAME 40166
#define IDC_SORT_FILETITLE 40167
#define IDC_SORT_ENTIREFILENAME 40168
#define IDC_SELECTALL 40169
#define IDC_SELECTNONE 40170
#define IDC_SELECTINV 40171
#define IDM_EQ_LOADPRE 40172
#define IDM_EQ_LOADMP3 40173
#define IDM_EQ_LOADDEFAULT 40174
#define IDM_EQ_SAVEPRE 40175
#define IDM_EQ_SAVEMP3 40176
#define IDM_EQ_SAVEDEFAULT 40177
#define IDM_EQ_DELPRE 40178
#define IDM_EQ_DELMP3 40180
#define IDC_PLAYLIST_PLAY 40184
#define WINAMP_FILE_LOC 40185
#define WINAMP_OPTIONS_EASYMOVE 40186
#define WINAMP_FILE_DIR 40187
#define WINAMP_EDIT_ID3 40188
#define WINAMP_TOGGLE_AUTOSCROLL 40189
#define WINAMP_VISSETUP 40190
#define WINAMP_PLGSETUP 40191
#define WINAMP_VISPLUGIN 40192
#define WINAMP_JUMP 40193
#define WINAMP_JUMPFILE 40194
#define WINAMP_JUMP10FWD 40195
#define WINAMP_JUMP10BACK 40197
#define WINAMP_OPTIONS_EQ 40036 // toggles the EQ window
#define WINAMP_OPTIONS_PLEDIT 40040 // toggles the playlist window
#define WINAMP_VOLUMEUP 40058 // turns the volume up a little
#define WINAMP_VOLUMEDOWN 40059 // turns the volume down a little
#define WINAMP_FFWD5S 40060 // fast forwards 5 seconds
#define WINAMP_REW5S 40061 // rewinds 5 seconds
// the following are the five main control buttons, with optionally shift
// or control pressed
// (for the exact functions of each, just try it out)
#define WINAMP_BUTTON1 40044
#define WINAMP_BUTTON2 40045
#define WINAMP_BUTTON3 40046
#define WINAMP_BUTTON4 40047
#define WINAMP_BUTTON5 40048
#define WINAMP_BUTTON1_SHIFT 40144
#define WINAMP_BUTTON2_SHIFT 40145
#define WINAMP_BUTTON3_SHIFT 40146
#define WINAMP_BUTTON4_SHIFT 40147
#define WINAMP_BUTTON5_SHIFT 40148
#define WINAMP_BUTTON1_CTRL 40154
#define WINAMP_BUTTON2_CTRL 40155
#define WINAMP_BUTTON3_CTRL 40156
#define WINAMP_BUTTON4_CTRL 40157
#define WINAMP_BUTTON5_CTRL 40158
#define WINAMP_FILE_PLAY 40029 // pops up the load file(s) box
#define WINAMP_OPTIONS_PREFS 40012 // pops up the preferences
#define WINAMP_OPTIONS_AOT 40019 // toggles always on top
#define WINAMP_HELP_ABOUT 40041 // pops up the about box :)

View File

@ -0,0 +1,353 @@
/*
** Copyright (C) 2003 Nullsoft, Inc.
**
** This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held
** liable for any damages arising from the use of this software.
**
** Permission is granted to anyone to use this software for any purpose, including commercial applications, and to
** alter it and redistribute it freely, subject to the following restrictions:
**
** 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
** If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
**
** 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
**
** 3. This notice may not be removed or altered from any source distribution.
**
*/
#ifndef _WA_DLG_H_
#define _WA_DLG_H_
#include "wa_ipc.h"
/*
dont know where to put this yet :)
1) gen.bmp has a generic window frame for plugins to use.
its format is similar to the minibrowser's.
In addition gen.bmp includes a font for the titlebar, in both
highlight and no-highlight modes. The font is variable width,
and it uses the first color before the letter A as the delimiter.
The no-highlight form of letter must be the same width as the
highlight form.
2) genex.bmp has button and scrollbar images, as well as some individual
pixels that describe the colors for the dialog. The button and
scrollbar images should be self explanatory (note that the buttons
have 4 pixel sized edges that are not stretched, and the center is
stretched), and the scrollbars do something similar.
The colors start at (48,0) and run every other pixel. The meaning
of each pixel is:
x=48: item background (background to edits, listviews etc)
x=50: item foreground (text color of edit/listview, etc)
x=52: window background (used to set the bg color for the dialog)
x=54: button text color
x=56: window text color
x=58: color of dividers and sunken borders
x=60: selection color for listviews/playlists/etc
x=62: listview header background color
x=64: listview header text color
x=66: listview header frame top color
x=68: listview header frame middle color
x=70: listview header frame bottom color
x=72: listview header empty color
x=74: scrollbar foreground color
x=76: scrollbar background color
x=78: inverse scrollbar foreground color
x=80: inverse scrollbar background color
x=82: scrollbar dead area color
*/
#define DCW_SUNKENBORDER 0x00010000
#define DCW_DIVIDER 0x00020000
enum
{
WADLG_ITEMBG,
WADLG_ITEMFG,
WADLG_WNDBG,
WADLG_BUTTONFG,
WADLG_WNDFG,
WADLG_HILITE,
WADLG_SELCOLOR,
WADLG_LISTHEADER_BGCOLOR,
WADLG_LISTHEADER_FONTCOLOR,
WADLG_LISTHEADER_FRAME_TOPCOLOR,
WADLG_LISTHEADER_FRAME_MIDDLECOLOR,
WADLG_LISTHEADER_FRAME_BOTTOMCOLOR,
WADLG_LISTHEADER_EMPTY_BGCOLOR,
WADLG_SCROLLBAR_FGCOLOR,
WADLG_SCROLLBAR_BGCOLOR,
WADLG_SCROLLBAR_INV_FGCOLOR,
WADLG_SCROLLBAR_INV_BGCOLOR,
WADLG_SCROLLBAR_DEADAREA_COLOR,
WADLG_NUM_COLORS
};
void WADlg_init(HWND hwndWinamp); // call this on init, or on WM_DISPLAYCHANGE
void WADlg_close();
int WADlg_getColor(int idx);
int WADlg_handleDialogMsgs(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); //
void WADlg_DrawChildWindowBorders(HWND hwndDlg, int *tab, int tabsize); // each entry in tab would be the id | DCW_*
HBITMAP WADlg_getBitmap();
/// define WA_DLG_IMPLEMENT in one of your source files before including this .h
// if you are making a media library plugin, you dont need to do this, look at view_ex for
// an example of how to get the function *'s via an IPC message.
#ifdef WA_DLG_IMPLEMENT
static HBRUSH wadlg_lastbrush;
static HBITMAP wadlg_bitmap; // load this manually
static int wadlg_colors[WADLG_NUM_COLORS];
static int wadlg_defcolors[WADLG_NUM_COLORS]=
{
RGB(0,0,0),
RGB(0,255,0),
RGB(36,36,60),
RGB(57,56,66),
RGB(255,255,255),
RGB(132,148,165),
RGB(0,0,198),
RGB(36*2,36*2,60*2),
RGB(255,255,255),
RGB(36*3,36*3,60*3),
RGB(36,36,60),
RGB(36*0.5,36*0.5,60*0.5),
RGB(36,36,60),
RGB(36*1,36*1,60*1),
RGB(36*1,36*1,60*1),
RGB(121,130,150),
RGB(78,88,110),
RGB(36*1,36*1,60*1),
};
int WADlg_getColor(int idx)
{
if (idx < 0 || idx >= WADLG_NUM_COLORS) return 0;
return wadlg_colors[idx];
}
HBITMAP WADlg_getBitmap()
{
return wadlg_bitmap;
}
void WADlg_init(HWND hwndWinamp) // call this on init, or on WM_DISPLAYCHANGE
{
if (wadlg_bitmap) DeleteObject(wadlg_bitmap);
wadlg_bitmap = (HBITMAP) SendMessage(hwndWinamp,WM_WA_IPC,0,IPC_GET_GENSKINBITMAP);
if (wadlg_bitmap)
{
HDC tmpDC=CreateCompatibleDC(NULL);
HGDIOBJ o=SelectObject(tmpDC,(HGDIOBJ)wadlg_bitmap);
int x;
for (x = 0; x < WADLG_NUM_COLORS; x ++)
{
int a=GetPixel(tmpDC,48+x*2,0);
if (a == CLR_INVALID || a == RGB(0,198,255)) a=wadlg_defcolors[x];
wadlg_colors[x]=a;
}
SelectObject(tmpDC,o);
DeleteDC(tmpDC);
}
}
void WADlg_close()
{
if (wadlg_bitmap) DeleteObject(wadlg_bitmap);
wadlg_bitmap=0;
if (wadlg_lastbrush) DeleteObject(wadlg_lastbrush);
wadlg_lastbrush=0;
}
void WADlg_dotLine(HDC hdc, int left, int top, int len, int vert)
{
for(int i=(top&1);i<len-1;i+=2)
{
if(vert) {
MoveToEx(hdc,left,top+i,NULL);
LineTo(hdc,left,top+i+1);
} else {
MoveToEx(hdc,left+i,top,NULL);
LineTo(hdc,left+i+1,top);
}
}
}
int WADlg_handleDialogMsgs(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_DRAWITEM)
{
DRAWITEMSTRUCT *di = (DRAWITEMSTRUCT *)lParam;
if (di->CtlType == ODT_BUTTON) {
char wt[256];
RECT r;
GetDlgItemText(hwndDlg,wParam,wt,sizeof(wt));
HDC hdc = CreateCompatibleDC(di->hDC);
SelectObject(hdc,wadlg_bitmap);
r=di->rcItem;
SetStretchBltMode(di->hDC,COLORONCOLOR);
int yoffs = (di->itemState & ODS_SELECTED) ? 15 : 0;
BitBlt(di->hDC,r.left,r.top,4,4,hdc,0,yoffs,SRCCOPY); // top left
StretchBlt(di->hDC,r.left+4,r.top,r.right-r.left-4-4,4,hdc,4,yoffs,47-4-4,4,SRCCOPY); // top center
BitBlt(di->hDC,r.right-4,r.top,4,4,hdc,47-4,yoffs,SRCCOPY); // top right
StretchBlt(di->hDC,r.left,r.top+4,4,r.bottom-r.top-4-4,hdc,0,4+yoffs,4,15-4-4,SRCCOPY); // left edge
StretchBlt(di->hDC,r.right-4,r.top+4,4,r.bottom-r.top-4-4,hdc,47-4,4+yoffs,4,15-4-4,SRCCOPY); // right edge
// center
StretchBlt(di->hDC,r.left+4,r.top+4,r.right-r.left-4-4,r.bottom-r.top-4-4,hdc,4,4+yoffs,47-4-4,15-4-4,SRCCOPY);
BitBlt(di->hDC,r.left,r.bottom-4,4,4,hdc,0,15-4+yoffs,SRCCOPY); // bottom left
StretchBlt(di->hDC,r.left+4,r.bottom-4,r.right-r.left-4-4,4,hdc,4,15-4+yoffs,47-4-4,4,SRCCOPY); // bottom center
BitBlt(di->hDC,r.right-4,r.bottom-4,4,4,hdc,47-4,15-4+yoffs,SRCCOPY); // bottom right
// draw text
SetBkMode(di->hDC,TRANSPARENT);
SetTextColor(di->hDC,wadlg_colors[WADLG_BUTTONFG]);
if (di->itemState & ODS_SELECTED) {r.left+=2; r.top+=2;}
DrawText(di->hDC,wt,-1,&r,DT_VCENTER|DT_SINGLELINE|DT_CENTER);
DeleteDC(hdc);
if(GetFocus()==di->hwndItem) {
HPEN pen=CreatePen(PS_SOLID,0,RGB(0,0,0));
SelectObject(di->hDC,pen);
WADlg_dotLine(di->hDC,r.left+2,r.top+2,r.right-r.left-3,0);
WADlg_dotLine(di->hDC,r.right-3,r.top+2,r.bottom-r.top-3,1);
WADlg_dotLine(di->hDC,r.left+2,r.top+2,r.bottom-r.top-3,1);
WADlg_dotLine(di->hDC,r.left+2,r.bottom-3,r.right-r.left-3,0);
DeleteObject(pen);
}
}
}
switch(uMsg)
{
case WM_CTLCOLORLISTBOX:
case WM_CTLCOLORDLG:
case WM_CTLCOLORBTN:
case WM_CTLCOLORSTATIC:
case WM_CTLCOLOREDIT:
{
int bgcolor=(uMsg == WM_CTLCOLOREDIT || uMsg == WM_CTLCOLORLISTBOX) ? wadlg_colors[WADLG_ITEMBG] : (uMsg == WM_CTLCOLORBTN ? wadlg_colors[WADLG_ITEMBG] : wadlg_colors[WADLG_WNDBG]);
LOGBRUSH lb={BS_SOLID,GetNearestColor((HDC)wParam,bgcolor)};
if (wadlg_lastbrush) DeleteObject(wadlg_lastbrush);
wadlg_lastbrush=CreateBrushIndirect(&lb);
SetTextColor((HDC)wParam,uMsg == WM_CTLCOLORSTATIC ? wadlg_colors[WADLG_WNDFG] : wadlg_colors[WADLG_ITEMFG]);
SetBkColor((HDC)wParam,lb.lbColor);
return (int)wadlg_lastbrush;
}
}
return 0;
}
static int RectInRect(RECT *rect1, RECT *rect2)
{
// this has a bias towards true
// this could probably be optimized a lot
return ((rect1->top >= rect2->top && rect1->top <= rect2->bottom) ||
(rect1->bottom >= rect2->top && rect1->bottom <= rect2->bottom) ||
(rect2->top >= rect1->top && rect2->top <= rect1->bottom) ||
(rect2->bottom >= rect1->top && rect2->bottom <= rect1->bottom)) // vertical intersect
&&
((rect1->left >= rect2->left && rect1->left <= rect2->right) ||
(rect1->right >= rect2->left && rect1->right <= rect2->right) ||
(rect2->left >= rect1->left && rect2->left <= rect1->right) ||
(rect2->right >= rect1->left && rect2->right <= rect1->right)) // horiz intersect
;
}
static void WADlg_removeFromRgn(HRGN hrgn, int left, int top, int right, int bottom)
{
HRGN rgn2=CreateRectRgn(left,top,right,bottom);
CombineRgn(hrgn,hrgn,rgn2,RGN_DIFF);
DeleteObject(rgn2);
}
void WADlg_DrawChildWindowBorders(HWND hwndDlg, int *tab, int tabsize)
{
PAINTSTRUCT ps;
BeginPaint(hwndDlg,&ps);
HRGN hrgn=NULL;
if(ps.fErase)
{
RECT r=ps.rcPaint;
hrgn=CreateRectRgn(r.left,r.top,r.right,r.bottom);
}
HPEN pen=CreatePen(PS_SOLID,0,wadlg_colors[WADLG_HILITE]);
HGDIOBJ o=SelectObject(ps.hdc,pen);
while (tabsize--)
{
RECT r;
int a=*tab++;
GetWindowRect(GetDlgItem(hwndDlg,a&0xffff),&r);
ScreenToClient(hwndDlg,(LPPOINT)&r);
ScreenToClient(hwndDlg,((LPPOINT)&r)+1);
if (RectInRect(&ps.rcPaint,&r))
{
if ((a & 0xffff0000) == DCW_SUNKENBORDER)
{
MoveToEx(ps.hdc,r.left,r.bottom,NULL);
LineTo(ps.hdc,r.right,r.bottom);
LineTo(ps.hdc,r.right,r.top-1);
if(hrgn)
{
WADlg_removeFromRgn(hrgn,r.left,r.bottom,r.right,r.bottom+1);
WADlg_removeFromRgn(hrgn,r.right,r.top,r.right+1,r.bottom);
}
}
else if ((a & 0xffff0000) == DCW_DIVIDER)
{
if (r.right - r.left < r.bottom - r.top) // vertical
{
int left=(r.left+r.right)/2;
MoveToEx(ps.hdc,left,r.top,NULL);
LineTo(ps.hdc,left,r.bottom+1);
if(hrgn) WADlg_removeFromRgn(hrgn,left,r.top,left+1,r.bottom);
}
else // horiz
{
int top=(r.top+r.bottom)/2;
MoveToEx(ps.hdc,r.left,top,NULL);
LineTo(ps.hdc,r.right+1,top);
if(hrgn) WADlg_removeFromRgn(hrgn,r.left,top,r.right,top+1);
}
}
}
}
SelectObject(ps.hdc,o);
DeleteObject(pen);
if(hrgn) {
//erase bkgnd while clipping out our own drawn stuff (for flickerless display)
HBRUSH b=CreateSolidBrush(wadlg_colors[WADLG_WNDBG]);
FillRgn(ps.hdc,hrgn,b);
DeleteObject(b);
DeleteObject(hrgn);
}
EndPaint(hwndDlg,&ps);
}
#endif
#endif//_WA_DLG_H_

View File

@ -0,0 +1,39 @@
#ifndef WA_HOTKEYS
#define WA_HOTKEYS
//#define IPC_GEN_HOTKEYS_ADD xxxx //pass a genHotkeysAddStruct * struct in data
//
//To get the IPC_GEN_HOTKEYS_ADD IPC number, do this:
//
// genhotkeys_add_ipc=SendMessage(winampWindow,WM_WA_IPC,(WPARAM)&"GenHotkeysAdd",IPC_REGISTER_WINAMP_IPCMESSAGE);
//
//Then you can use:
//
// PostMessage(winampWindow,WM_WA_IPC,(WPARAM)&myGenHotkeysAddStruct,genhotkeys_add_ipc);
//
//flags for the genHotkeysAddStruct struct
#define HKF_BRING_TO_FRONT 0x1 // calls SetForegroundWindow before sending the message
#define HKF_HWND_WPARAM 0x2 // sets wParam with Winamp's window handle
#define HKF_COPY 0x4 // copies returned text to the clipboard
#define HKF_PLPOS_WPARAM 0x8 // sets wParam with current pledit position
#define HKF_ISPLAYING_WL 0x10 // sets wParam to genHotkeysAddStruct's wParam if playing, lParam if not
// uses IPC_ISPLAYING to check if playing
#define HKF_SHOWHIDE 0x20 // brings Winamp to front or minimizes Winamp if already at front
#define HKF_NOSENDMSG 0x40 // don't send any message to the winamp window
#define HKF_DISABLED 0x80000000
typedef struct {
char *name; //name that will appear in the Global Hotkeys preferences panel
DWORD flags; //one or more flags from above
UINT uMsg; //message that will be sent to winamp's main window (must always be !=NULL)
WPARAM wParam; //wParam that will be sent to winamp's main window
LPARAM lParam; //lParam that will be sent to winamp's main window
char *id; //unique string to identify this command - case insensitive
HWND wnd; //set the HWND to send message (or 0 for main winamp window)
int extended[6]; //for future extension - always set to zero!
} genHotkeysAddStruct;
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,175 @@
/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
/* link this file in with the server and any clients */
/* File created by MIDL compiler version 6.00.0366 */
/* at Wed Jun 25 17:02:20 2008
*/
/* Compiler settings for iTunesCOMInterface.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
#pragma warning( disable: 4049 ) /* more than 64k source lines */
#ifdef __cplusplus
extern "C"{
#endif
#include <rpc.h>
#include <rpcndr.h>
#ifdef _MIDL_USE_GUIDDEF_
#ifndef INITGUID
#define INITGUID
#include <guiddef.h>
#undef INITGUID
#else
#include <guiddef.h>
#endif
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
#else // !_MIDL_USE_GUIDDEF_
#ifndef __IID_DEFINED__
#define __IID_DEFINED__
typedef struct _IID
{
unsigned long x;
unsigned short s1;
unsigned short s2;
unsigned char c[8];
} IID;
#endif // __IID_DEFINED__
#ifndef CLSID_DEFINED
#define CLSID_DEFINED
typedef IID CLSID;
#endif // CLSID_DEFINED
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
#endif !_MIDL_USE_GUIDDEF_
MIDL_DEFINE_GUID(IID, LIBID_iTunesLib,0x9E93C96F,0xCF0D,0x43f6,0x8B,0xA8,0xB8,0x07,0xA3,0x37,0x07,0x12);
MIDL_DEFINE_GUID(IID, IID_IITObject,0x9FAB0E27,0x70D7,0x4e3a,0x99,0x65,0xB0,0xC8,0xB8,0x86,0x9B,0xB6);
MIDL_DEFINE_GUID(IID, IID_IITSource,0xAEC1C4D3,0xAEF1,0x4255,0xB8,0x92,0x3E,0x3D,0x13,0xAD,0xFD,0xF9);
MIDL_DEFINE_GUID(IID, IID_IITSourceCollection,0x2FF6CE20,0xFF87,0x4183,0xB0,0xB3,0xF3,0x23,0xD0,0x47,0xAF,0x41);
MIDL_DEFINE_GUID(IID, IID_IITEncoder,0x1CF95A1C,0x55FE,0x4f45,0xA2,0xD3,0x85,0xAC,0x6C,0x50,0x4A,0x73);
MIDL_DEFINE_GUID(IID, IID_IITEncoderCollection,0x8862BCA9,0x168D,0x4549,0xA9,0xD5,0xAD,0xB3,0x5E,0x55,0x3B,0xA6);
MIDL_DEFINE_GUID(IID, IID_IITEQPreset,0x5BE75F4F,0x68FA,0x4212,0xAC,0xB7,0xBE,0x44,0xEA,0x56,0x97,0x59);
MIDL_DEFINE_GUID(IID, IID_IITEQPresetCollection,0xAEF4D111,0x3331,0x48da,0xB0,0xC2,0xB4,0x68,0xD5,0xD6,0x1D,0x08);
MIDL_DEFINE_GUID(IID, IID_IITPlaylist,0x3D5E072F,0x2A77,0x4b17,0x9E,0x73,0xE0,0x3B,0x77,0xCC,0xCC,0xA9);
MIDL_DEFINE_GUID(IID, IID_IITOperationStatus,0x206479C9,0xFE32,0x4f9b,0xA1,0x8A,0x47,0x5A,0xC9,0x39,0xB4,0x79);
MIDL_DEFINE_GUID(IID, IID_IITConvertOperationStatus,0x7063AAF6,0xABA0,0x493b,0xB4,0xFC,0x92,0x0A,0x9F,0x10,0x58,0x75);
MIDL_DEFINE_GUID(IID, IID_IITLibraryPlaylist,0x53AE1704,0x491C,0x4289,0x94,0xA0,0x95,0x88,0x15,0x67,0x5A,0x3D);
MIDL_DEFINE_GUID(IID, IID_IITUserPlaylist,0x0A504DED,0xA0B5,0x465a,0x8A,0x94,0x50,0xE2,0x0D,0x7D,0xF6,0x92);
MIDL_DEFINE_GUID(IID, IID_IITTrack,0x4CB0915D,0x1E54,0x4727,0xBA,0xF3,0xCE,0x6C,0xC9,0xA2,0x25,0xA1);
MIDL_DEFINE_GUID(IID, IID_IITTrackCollection,0x755D76F1,0x6B85,0x4ce4,0x8F,0x5F,0xF8,0x8D,0x97,0x43,0xDC,0xD8);
MIDL_DEFINE_GUID(IID, IID_IITVisual,0x340F3315,0xED72,0x4c09,0x9A,0xCF,0x21,0xEB,0x4B,0xDF,0x99,0x31);
MIDL_DEFINE_GUID(IID, IID_IITVisualCollection,0x88A4CCDD,0x114F,0x4043,0xB6,0x9B,0x84,0xD4,0xE6,0x27,0x49,0x57);
MIDL_DEFINE_GUID(IID, IID_IITWindow,0x370D7BE0,0x3A89,0x4a42,0xB9,0x02,0xC7,0x5F,0xC1,0x38,0xBE,0x09);
MIDL_DEFINE_GUID(IID, IID_IITBrowserWindow,0xC999F455,0xC4D5,0x4aa4,0x82,0x77,0xF9,0x97,0x53,0x69,0x99,0x74);
MIDL_DEFINE_GUID(IID, IID_IITWindowCollection,0x3D8DE381,0x6C0E,0x481f,0xA8,0x65,0xE2,0x38,0x5F,0x59,0xFA,0x43);
MIDL_DEFINE_GUID(IID, IID_IiTunes,0x9DD6680B,0x3EDC,0x40db,0xA7,0x71,0xE6,0xFE,0x48,0x32,0xE3,0x4A);
MIDL_DEFINE_GUID(IID, DIID__IiTunesEvents,0x5846EB78,0x317E,0x4b6f,0xB0,0xC3,0x11,0xEE,0x8C,0x8F,0xEE,0xF2);
MIDL_DEFINE_GUID(IID, DIID__IITConvertOperationStatusEvents,0x5C47A705,0x8E8A,0x45a1,0x9E,0xED,0x71,0xC9,0x93,0xF0,0xBF,0x60);
MIDL_DEFINE_GUID(CLSID, CLSID_iTunesApp,0xDC0C2640,0x1415,0x4644,0x87,0x5C,0x6F,0x4D,0x76,0x98,0x39,0xBA);
MIDL_DEFINE_GUID(CLSID, CLSID_iTunesConvertOperationStatus,0xD06596AD,0xC900,0x41b2,0xBC,0x68,0x1B,0x48,0x64,0x50,0xFC,0x56);
MIDL_DEFINE_GUID(IID, IID_IITArtwork,0xD0A6C1F8,0xBF3D,0x4cd8,0xAC,0x47,0xFE,0x32,0xBD,0xD1,0x72,0x57);
MIDL_DEFINE_GUID(IID, IID_IITArtworkCollection,0xBF2742D7,0x418C,0x4858,0x9A,0xF9,0x29,0x81,0xB0,0x62,0xD2,0x3E);
MIDL_DEFINE_GUID(IID, IID_IITURLTrack,0x1116E3B5,0x29FD,0x4393,0xA7,0xBD,0x45,0x4E,0x5E,0x32,0x79,0x00);
MIDL_DEFINE_GUID(IID, IID_IITAudioCDPlaylist,0xCF496DF3,0x0FED,0x4d7d,0x9B,0xD8,0x52,0x9B,0x6E,0x8A,0x08,0x2E);
MIDL_DEFINE_GUID(IID, IID_IITPlaylistCollection,0xFF194254,0x909D,0x4437,0x9C,0x50,0x3A,0xAC,0x2A,0xE6,0x30,0x5C);
MIDL_DEFINE_GUID(IID, IID_IITIPodSource,0xCF4D8ACE,0x1720,0x4fb9,0xB0,0xAE,0x98,0x77,0x24,0x9E,0x89,0xB0);
MIDL_DEFINE_GUID(IID, IID_IITFileOrCDTrack,0x00D7FE99,0x7868,0x4cc7,0xAD,0x9E,0xAC,0xFD,0x70,0xD0,0x95,0x66);
MIDL_DEFINE_GUID(IID, IID_IITPlaylistWindow,0x349CBB45,0x2E5A,0x4822,0x8E,0x4A,0xA7,0x55,0x55,0xA1,0x86,0xF7);
#undef MIDL_DEFINE_GUID
#ifdef __cplusplus
}
#endif