------------------------------------------------------------ revno: 2263 committer: cologic <n...@parsoma.net> branch nick: dcplusplus timestamp: Sat 2010-10-23 03:15:26 -0400 message: initial /winamp commit (lacks GUI setting, does have a formatting string) added: win32/Winamp.h modified: dcpp/SettingsManager.cpp dcpp/SettingsManager.h win32/WinUtil.cpp win32/WinUtil.h
-- lp:dcplusplus https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk Your team Dcplusplus-team is subscribed to branch lp:dcplusplus. To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/SettingsManager.cpp' --- dcpp/SettingsManager.cpp 2010-09-30 17:34:28 +0000 +++ dcpp/SettingsManager.cpp 2010-10-23 07:15:26 +0000 @@ -51,7 +51,7 @@ "LogFormatSystem", "LogFormatStatus", "DirectoryListingFrameOrder", "DirectoryListingFrameWidths", "TLSPrivateKeyFile", "TLSCertificateFile", "TLSTrustedCertificatesPath", "Language", "DownloadsOrder", "DownloadsWidth", "Toolbar", "LastSearchType", - "SoundMainChat", "SoundPM", "SoundPMWindow", + "SoundMainChat", "SoundPM", "SoundPMWindow", "WinampFormat", "SENTRY", // Ints "IncomingConnections", "InPort", "Slots", "AutoFollow", "ClearSearch", @@ -318,6 +318,7 @@ setDefault(MAIN_WINDOW_POS_Y, CW_USEDEFAULT); setDefault(UPLOAD_BAR_COLOR, RGB(205, 60, 55)); setDefault(DOWNLOAD_BAR_COLOR, RGB(55, 170, 85)); + setDefault(WINAMP_FORMAT, "Winamp(%[version]) %[state] (%[title] - %[bitrate]) - (%[length] %[bar])"); #endif } === modified file 'dcpp/SettingsManager.h' --- dcpp/SettingsManager.h 2010-08-23 16:04:27 +0000 +++ dcpp/SettingsManager.h 2010-10-23 07:15:26 +0000 @@ -70,7 +70,7 @@ LOG_FORMAT_SYSTEM, LOG_FORMAT_STATUS, DIRECTORYLISTINGFRAME_ORDER, DIRECTORYLISTINGFRAME_WIDTHS, TLS_PRIVATE_KEY_FILE, TLS_CERTIFICATE_FILE, TLS_TRUSTED_CERTIFICATES_PATH, LANGUAGE, DOWNLOADS_ORDER, DOWNLOADS_WIDTHS, TOOLBAR, LAST_SEARCH_TYPE, - SOUND_MAIN_CHAT, SOUND_PM, SOUND_PM_WINDOW, + SOUND_MAIN_CHAT, SOUND_PM, SOUND_PM_WINDOW, WINAMP_FORMAT, STR_LAST }; enum IntSetting { INT_FIRST = STR_LAST + 1, === modified file 'win32/WinUtil.cpp' --- win32/WinUtil.cpp 2010-10-07 16:54:32 +0000 +++ win32/WinUtil.cpp 2010-10-23 07:15:26 +0000 @@ -44,6 +44,8 @@ #include "MainWindow.h" #include "PrivateFrame.h" +#include "Winamp.h" + #include <dwt/DWTException.h> #include <dwt/LibraryLoader.h> @@ -382,7 +384,7 @@ tstring WinUtil::commands = - _T("/refresh, /me <msg>, /clear [lines to keep], /slots #, /dslots #, /search <string>, /dc++, /away <msg>, /back, /g <searchstring>, /imdb <imdbquery>, /u <url>, /rebuild, /ts, /download, /upload"); + _T("/refresh, /me <msg>, /clear [lines to keep], /slots #, /dslots #, /search <string>, /dc++, /away <msg>, /back, /g <searchstring>, /imdb <imdbquery>, /u <url>, /rebuild, /ts, /download, /upload, /winamp"); bool WinUtil::checkCommand(tstring& cmd, tstring& param, tstring& message, tstring& status, bool& thirdPerson) { string::size_type i = cmd.find(' '); @@ -499,6 +501,12 @@ } else { status = T_("Download limit disabled"); } + } else if(Util::stricmp(cmd.c_str(), _T("winamp")) == 0) { + tstring res = winampSpam(_T("")); + if (res == T_("Winamp is not running")) + status = res; + else + message = res; } else { return false; } @@ -590,6 +598,100 @@ } } +tstring WinUtil::winampSpam(const tstring& param) { + HWND hwndWinamp = FindWindow(_T("Winamp v1.x"), NULL); + tstring status; + if (hwndWinamp) { + StringMap params; + int waVersion = SendMessage(hwndWinamp,WM_USER, 0, IPC_GETVERSION), + majorVersion, minorVersion; + majorVersion = waVersion >> 12; + if (((waVersion & 0x00F0) >> 4) == 0) { + minorVersion = ((waVersion & 0x0f00) >> 8) * 10 + (waVersion & 0x000f); + } else { + minorVersion = ((waVersion & 0x00f0) >> 4) * 10 + (waVersion & 0x000f); + } + params["version"] = Util::toString(majorVersion + minorVersion / 100.0); + int state = SendMessage(hwndWinamp,WM_USER, 0, IPC_ISPLAYING); + switch (state) { + case 0: params["state"] = "stopped"; + break; + case 1: params["state"] = "playing"; + break; + case 3: params["state"] = "paused"; + }; + TCHAR titleBuffer[2048]; + int buffLength = sizeof(titleBuffer); + GetWindowText(hwndWinamp, titleBuffer, buffLength); + tstring title = titleBuffer; + params["rawtitle"] = Text::fromT(title); + // there's some winamp bug with scrolling. wa5.09x and 5.1 or something.. see: + // http://forums.winamp.com/showthread.php?s=&postid=1768775#post1768775 + int starpos = title.find(_T("***")); + if (starpos >= 1) { + tstring firstpart = title.substr(0, starpos - 1); + if (firstpart == title.substr(title.size() - firstpart.size(), title.size())) { + // fix title + title = title.substr(starpos, title.size()); + } + } + // fix the title if scrolling is on, so need to put the stairs to the end of it + tstring titletmp = title.substr(title.find(_T("***")) + 2, title.size()); + title = titletmp + title.substr(0, title.size() - titletmp.size()); + title = title.substr(title.find(_T('.')) + 2, title.size()); + if (title.rfind(_T('-')) != string::npos) { + params["title"] = Text::fromT(title.substr(0, title.rfind(_T('-')) - 1)); + } + int curPos = SendMessage(hwndWinamp,WM_USER, 0, IPC_GETOUTPUTTIME); + int length = SendMessage(hwndWinamp,WM_USER, 1, IPC_GETOUTPUTTIME); + if (curPos == -1) { + curPos = 0; + } else { + curPos /= 1000; + } + int intPercent; + if (length > 0 ) { + intPercent = curPos * 100 / length; + } else { + length = 0; + intPercent = 0; + } + params["percent"] = Util::toString(intPercent) + "%"; + params["elapsed"] = Util::formatSeconds(curPos); + params["length"] = Util::formatSeconds(length); + if(length>0) { + int numFront = min(max(intPercent / 10, 0), 10), + numBack = min(max(10 - 1 - numFront, 0), 10); + string inFront = string(numFront, '-'), + inBack = string(numBack, '-'); + params["bar"] = "[" + inFront + (state ? "|" : "-") + inBack + "]"; + } + int waSampleRate = SendMessage(hwndWinamp,WM_USER, 0, IPC_GETINFO), + waBitRate = SendMessage(hwndWinamp,WM_USER, 1, IPC_GETINFO), + waChannels = SendMessage(hwndWinamp,WM_USER, 2, IPC_GETINFO); + params["bitrate"] = Util::toString(waBitRate) + "kbps"; + params["sample"] = Util::toString(waSampleRate) + "kHz"; + string waChannelName; + switch (waChannels) { + case 2: + waChannelName = "stereo"; + break; + case 6: + waChannelName = "5.1 surround"; + break; + default: + waChannelName = "mono"; + } + params["channels"] = waChannelName; + status = Text::toT(Util::formatParams(SETTING(WINAMP_FORMAT), params, false)); + if (!param.empty()) + status += _T(" " + param); + } else { + status = T_("Winamp is not running"); + } + return status; +} + void WinUtil::reducePaths(string& message) { string::size_type start = 0; while((start = message.find('<', start)) != string::npos) { === modified file 'win32/WinUtil.h' --- win32/WinUtil.h 2010-08-29 13:02:34 +0000 +++ win32/WinUtil.h 2010-10-23 07:15:26 +0000 @@ -158,6 +158,8 @@ static int getDirIconIndex() { return dirIconIndex; } static int getDirMaskedIndex() { return dirMaskedIndex; } + static tstring winampSpam(const tstring& param); + static bool isShift() { return (::GetKeyState(VK_SHIFT) & 0x8000) > 0; } static bool isAlt() { return (::GetKeyState(VK_MENU) & 0x8000) > 0; } static bool isCtrl() { return (::GetKeyState(VK_CONTROL) & 0x8000) > 0; } === added file 'win32/Winamp.h' --- win32/Winamp.h 1970-01-01 00:00:00 +0000 +++ win32/Winamp.h 2010-10-23 07:15:26 +0000 @@ -0,0 +1,441 @@ +#ifndef _WAFE_H_ +#define _WAFE_H_ +/* +** Winamp frontend/plug-in control API documentation v1.1. +** By Justin Frankel. Updates by Christophe Thibault. +** Copyright (C) 1997-2000, Nullsoft Inc. +** Last updated: JUL.12.2000. +** +** Introduction +** ----------------------- +** This file describes a means to easily communicate to Winamp +** via the classic Win32 Message API. +** +** These definitions/code assume C/C++. Porting to VB/Delphi shouldn't +** be too hard. +** +** First, you find the HWND of the Winamp main window. From a plug-in +** you can easily extract this from the plug-in structure (hMainWindow, +** hwndParent, whatever). For external apps, use: +** +** HWND hwnd_winamp = FindWindow("Winamp v1.x",NULL); +** +** (note: I know, we're in Winamp 2.x, but it's 1.x for compatibility) +** +** Once you have the hwnd_winamp, it's a good idea to check the version +** number. To do this, you send a WM_WA_IPC message to hwnd_winamp. +** Note that WM_WA_IPC is defined as Win32's WM_USER. +** +** Note that sometimes you might want to use PostMessage instead of +** SendMessage. +*/ + +#define WM_WA_IPC WM_USER + +/**************************************************************************/ + +#define IPC_GETVERSION 0 + +/* +** int version = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVERSION); +** +** Version will be 0x20yx for winamp 2.yx. versions previous to Winamp 2.0 +** typically (but not always) use 0x1zyx for 1.zx versions. Weird, I know. +** +** The basic format for sending messages to Winamp is: +** int result=SendMessage(hwnd_winamp,WM_WA_IPC,command_data,command); +** (for the version check, command_data is 0). +*/ + + +#define IPC_DELETE 101 + +/* +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_DELETE); +** +** You can use IPC_DELETE to clear Winamp's internal playlist. +*/ + + +#define IPC_STARTPLAY 102 + +/* +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_STARTPLAY); +** +** Using IPC_STARTPLAY is like hitting 'Play' in Winamp, mostly. +*/ + + +#define IPC_ISPLAYING 104 + +/* +** int res = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISPLAYING); +** +** IPC_ISPLAYING returns the status of playback. +** If it returns 1, it is playing. if it returns 3, it is paused, +** if it returns 0, it is not playing. +*/ + + +#define IPC_GETOUTPUTTIME 105 + +/* +** int res = SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETOUTPUTTIME); +** +** IPC_GETOUTPUTTIME returns the position in milliseconds of the +** current song (mode = 0), or the song length, in seconds (mode = 1). +** Returns -1 if not playing or error. +*/ + + +#define IPC_JUMPTOTIME 106 + +/* (requires Winamp 1.60+) +** SendMessage(hwnd_winamp,WM_WA_IPC,ms,IPC_JUMPTOTIME); +** IPC_JUMPTOTIME sets the position in milliseconds of the +** current song (approximately). +** Returns -1 if not playing, 1 on eof, or 0 if successful +*/ + + +#define IPC_WRITEPLAYLIST 120 + +/* (requires Winamp 1.666+) +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_WRITEPLAYLIST); +** +** IPC_WRITEPLAYLIST writes the current playlist to <winampdir>\\Winamp.m3u, +** and returns the current playlist position. +** Kinda obsoleted by some of the 2.x new stuff, but still good for when +** using a front-end (instead of a plug-in) +*/ + + +#define IPC_SETPLAYLISTPOS 121 + +/* (requires Winamp 2.0+) +** SendMessage(hwnd_winamp,WM_WA_IPC,position,IPC_SETPLAYLISTPOS) +** +** IPC_SETPLAYLISTPOS sets the playlsit position to 'position'. +*/ + + +#define IPC_SETVOLUME 122 + +/* (requires Winamp 2.0+) +** SendMessage(hwnd_winamp,WM_WA_IPC,volume,IPC_SETVOLUME); +** +** IPC_SETVOLUME sets the volume of Winamp (from 0-255). +*/ + + +#define IPC_SETPANNING 123 + +/* (requires Winamp 2.0+) +** SendMessage(hwnd_winamp,WM_WA_IPC,panning,IPC_SETPANNING); +** +** IPC_SETPANNING sets the panning of Winamp (from 0 (left) to 255 (right)). +*/ + + +#define IPC_GETLISTLENGTH 124 + +/* (requires Winamp 2.0+) +** int length = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTLENGTH); +** +** IPC_GETLISTLENGTH returns the length of the current playlist, in +** tracks. +*/ + + +#define IPC_SETSKIN 200 + +/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"skinname",IPC_SETSKIN); +** +** IPC_SETSKIN sets the current skin to "skinname". Note that skinname +** can be the name of a skin, a skin .zip file, with or without path. +** If path isn't specified, the default search path is the winamp skins +** directory. +*/ + + +#define IPC_GETSKIN 201 + +/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)skinname_buffer,IPC_GETSKIN); +** +** IPC_GETSKIN puts the directory where skin bitmaps can be found +** into skinname_buffer. +** skinname_buffer must be MAX_PATH characters in length. +** When using a .zip'd skin file, it'll return a temporary directory +** where the ZIP was decompressed. +*/ + + +#define IPC_EXECPLUG 202 + +/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"vis_file.dll",IPC_EXECPLUG); +** +** IPC_EXECPLUG executes a visualization plug-in pointed to by WPARAM. +** the format of this string can be: +** "vis_whatever.dll" +** "vis_whatever.dll,0" // (first mod, file in winamp plug-in dir) +** "C:\\dir\\vis_whatever.dll,1" +*/ + + +#define IPC_GETPLAYLISTFILE 211 + +/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) +** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE); +** +** IPC_GETPLAYLISTFILE gets the filename of the playlist entry [index]. +** returns a pointer to it. returns NULL on error. +*/ + + +#define IPC_GETPLAYLISTTITLE 212 + +/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) +** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTTITLE); +** +** IPC_GETPLAYLISTTITLE gets the title of the playlist entry [index]. +** returns a pointer to it. returns NULL on error. +*/ + + +#define IPC_GETLISTPOS 125 + +/* (requires Winamp 2.05+) +** int pos=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTPOS); +** +** IPC_GETLISTPOS returns the playlist position. A lot like IPC_WRITEPLAYLIST +** only faster since it doesn't have to write out the list. Heh, silly me. +*/ + + +#define IPC_GETINFO 126 + +/* (requires Winamp 2.05+) +** int inf=SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETINFO); +** +** IPC_GETINFO returns info about the current playing song. The value +** it returns depends on the value of 'mode'. +** Mode Meaning +** ------------------ +** 0 Samplerate (i.e. 44100) +** 1 Bitrate (i.e. 128) +** 2 Channels (i.e. 2) +*/ + + +#define IPC_GETEQDATA 127 + +/* (requires Winamp 2.05+) +** int data=SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA); +** +** IPC_GETEQDATA queries the status of the EQ. +** The value returned depends on what 'pos' is set to: +** Value Meaning +** ------------------ +** 0-9 The 10 bands of EQ data. 0-63 (+20db - -20db) +** 10 The preamp value. 0-63 (+20db - -20db) +** 11 Enabled. zero if disabled, nonzero if enabled. +** 12 Autoload. zero if disabled, nonzero if enabled. +*/ + + +#define IPC_SETEQDATA 128 +/* (requires Winamp 2.05+) +** SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA); +** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SETEQDATA); +** +** IPC_SETEQDATA sets the value of the last position retrieved +** by IPC_GETEQDATA. +*/ + +#define IPC_ADDBOOKMARK 129 +/* (requires Winamp 2.4+) +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)file,IPC_ADDBOOKMARK); +** +** IPC_ADDBOOKMARK will add the specified file to the Winamp bookmark list. +*/ + +#define IPC_RESTARTWINAMP 135 +/* (requires Winamp 2.2+) +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_RESTARTWINAMP); +** +** IPC_RESTARTWINAMP will restart Winamp (isn't that obvious ? :) +*/ + +#define IPC_MBOPEN 241 +/* (requires Winamp 2.05+) +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_MBOPEN); +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)url,IPC_MBOPEN); +** +** IPC_MBOPEN will open a new URL in the minibrowser. if url is NULL, it will open the Minibrowser window. +*/ + +#define IPC_INETAVAILABLE 242 +/* (requires Winamp 2.05+) +** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_INETAVAILABLE); +** +** IPC_INETAVAILABLE will return 1 if the Internet connection is available for Winamp. +*/ + +#define IPC_UPDTITLE 243 +/* (requires Winamp 2.2+) +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_UPDTITLE); +** +** IPC_UPDTITLE will ask Winamp to update the informations about the current title. +*/ + +#define IPC_CHANGECURRENTFILE 245 +/* (requires Winamp 2.05+) +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)file,IPC_CHANGECURRENTFILE); +** +** IPC_CHANGECURRENTFILE will set the current playlist item. +*/ + +#define IPC_GETMBURL 246 +/* (requires Winamp 2.2+) +** char buffer[4096]; // Urls can be VERY long +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)buffer,IPC_GETMBURL); +** +** IPC_GETMBURL will retrieve the current Minibrowser URL into buffer. +*/ + +#define IPC_REFRESHPLCACHE 247 +/* (requires Winamp 2.2+) +** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_REFRESHPLCACHE); +** +** IPC_REFRESHPLCACHE will flush the playlist cache buffer. +*/ + +#define IPC_MBBLOCK 248 +/* (requires Winamp 2.4+) +** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_MBBLOCK); +** +** IPC_MBBLOCK will block the Minibrowser from updates if value is set to 1 +*/ + +#define IPC_MBOPENREAL 249 +/* (requires Winamp 2.4+) +** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)url,IPC_MBOPENREAL); +** +** IPC_MBOPENREAL works the same as IPC_MBOPEN except that it will works even if +** IPC_MBBLOCK has been set to 1 +*/ + +#define IPC_GET_SHUFFLE 250 +/* (requires Winamp 2.4+) +** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_SHUFFLE); +** +** IPC_GET_SHUFFLE returns the status of the Shuffle option (1 if set) +*/ + +#define IPC_GET_REPEAT 251 +/* (requires Winamp 2.4+) +** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_REPEAT); +** +** IPC_GET_REPEAT returns the status of the Repeat option (1 if set) +*/ + +#define IPC_SET_SHUFFLE 252 +/* (requires Winamp 2.4+) +** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_SHUFFLE); +** +** IPC_SET_SHUFFLE sets the status of the Shuffle option (1 to turn it on) +*/ + +#define IPC_SET_REPEAT 253 +/* (requires Winamp 2.4+) +** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_REPEAT); +** +** IPC_SET_REPEAT sets the status of the Repeat option (1 to turn it on) +*/ + +/**************************************************************************/ + +/* +** Some API calls tend to require that you send data via WM_COPYDATA +** instead of WM_USER. Such as IPC_PLAYFILE: +*/ + +#define IPC_PLAYFILE 100 + +/* +** COPYDATASTRUCT cds; +** cds.dwData = IPC_PLAYFILE; +** cds.lpData = (void *) "file.mp3"; +** cds.cbData = strlen((char *) cds.lpData)+1; // include space for null char +** SendMessage(hwnd_winamp,WM_COPYDATA,(WPARAM)NULL,(LPARAM)&cds); +** +** This will play the file "file.mp3". +** +*/ + + +#define IPC_CHDIR 103 + +/* +** COPYDATASTRUCT cds; +** cds.dwData = IPC_CHDIR; +** cds.lpData = (void *) "c:\\download"; +** cds.cbData = strlen((char *) cds.lpData)+1; // include space for null char +** SendMessage(hwnd_winamp,WM_COPYDATA,(WPARAM)NULL,(LPARAM)&cds); +** +** This will make Winamp change to the directory C:\\download +** +*/ + + +/**************************************************************************/ + +/* +** Finally there are some WM_COMMAND messages that you can use to send +** Winamp misc commands. +** +** To send these, use: +** +** SendMessage(hwnd_winamp, WM_COMMAND,command_name,0); +*/ + +#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 :) + + +/* +** EOF.. Enjoy. +*/ + +#endif
_______________________________________________ Mailing list: https://launchpad.net/~linuxdcpp-team Post to : linuxdcpp-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~linuxdcpp-team More help : https://help.launchpad.net/ListHelp