Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
О пользе плагинов и спорить не приходиться. Потому многие крупные разработчики программного обеспечения предусматривают в своих творениях поддержку модулей, написанных другими людьми. Так поступила и компания Nullsoft, создатель известного компьютерного плеера - Winamp. Для непосредственного обращения к плееру были созданы специальные функции - WinampApi.
Алгоритм взаимодействия таков:
Итак, напишем, например, процедуру для проигрывания заданного трека с заданной громкостью. В дальнейшем, её можно будет использовать в плагине или в программе, работающей совместно с Winamp.
procedure play_track_with_volume(track_number:integer;volume:integer); // Track_number - номер трека (от 1 до величины количества треков) // Volume - громкость (от 0 до 255) var h: hwnd; begin h:=findwindow('Winamp v1.x',g>nil); // Находим окно sendmessage(h,WM_USER,track_number-1,121); // Устанавливаем номер трека sendmessage(h,WM_USER,volume,122); // Устанавливаем громкость sendmessage(h,WM_COMMAND,40045,0); // Проигрываем трек end;
Приложение:
Параметры сообщений и их функции. (Взято с официального сайта):
WM_COMMAND Messages
Previous track button | 40044 | |
Next track button | 40048 | |
Play button | 40045 | |
Pause/Unpause button | 40046 | |
Stop button | 40047 | |
Fadeout and stop | 40147 | |
Stop after current track | 40157 | |
Fast-forward 5 seconds | 40148 | |
Fast-rewind 5 seconds | 40144 | |
Start of playlist | 40154 | |
Go to end of playlist | 40158 | |
Open file dialog | 40029 | |
Open URL dialog | 40155 | |
Open file info box | 40188 | |
Set time display mode to elapsed | 40037 | |
Set time display mode to remaining | 40038 | |
Toggle preferences screen | 40012 | |
Open visualization options | 40190 | |
Open visualization plug-in options | 40191 | |
Execute current visualization plug-in | 40192 | |
Toggle about box | 40041 | |
Toggle title Autoscrolling | 40189 | |
Toggle always on top | 40019 | |
Toggle Windowshade | 40064 | |
Toggle Playlist Windowshade | 40266 | |
Toggle doublesize mode | 40165 | |
Toggle EQ | 40036 | |
Toggle playlist editor | 40040 | |
Toggle main window visible | 40258 | |
Toggle minibrowser | 40298 | |
Toggle easymove | 40186 | |
Raise volume by 1% | 40058 | |
Lower volume by 1% | 40059 | |
Toggle repeat | 40022 | |
Toggle shuffle | 40023 | |
Open jump to time dialog | 40193 | |
Open jump to file dialog | 40194 | |
Open skin selector | 40219 | |
Configure current visualization plug-in | 40221 | |
Reload the current skin | 40291 | |
Close Winamp | 40001 | |
Moves back 10 tracks in playlist | 40197 | |
Show the edit bookmarks | 40320 | |
Adds current track as a bookmark | 40321 | |
Play audio CD | 40323 | |
Load a preset from EQ | 40253 | |
Save a preset to EQF | 40254 | |
Opens load presets dialog | 40172 | |
Opens auto-load presets dialog | 40173 | |
Load default preset | 40174 | |
Opens save preset dialog | 40175 | |
Opens auto-load save preset | 40176 | |
Opens delete preset dialog | 40178 | |
Opens delete an auto load preset dialog | 40180 |
WM_USER Messages
0 | Retrieves the version of Winamp running. Version will be 0x20yx for 2.yx. This is a good way to determine if you did in fact find the right window, etc. |
100 | Starts playback. A lot like hitting 'play' in Winamp, but not exactly the same |
101 | Clears Winamp's internal playlist. |
102 | Begins play of selected track. |
103 | Makes Winamp change to the directory C:\download |
104 | Returns the status of playback. If 'ret' is 1, Winamp is playing. If 'ret' is 3, Winamp is paused. Otherwise, playback is stopped. |
105 | If data is 0, returns the position in milliseconds of playback. If data is 1, returns current track length in seconds. Returns -1 if not playing or if an error occurs. |
106 | Seeks within the current track. The offset is specified in 'data', in milliseconds. |
120 | Writes out the current playlist to Winampdirwinamp.m3u, and returns the current position in the playlist. |
121 | Sets the playlist position to the position specified in tracks in 'data'. |
122 | Sets the volume to 'data', which can be between 0 (silent) and 255 (maximum). |
123 | Sets the panning to 'data', which can be between 0 (all left) and 255 (all right). |
124 | Returns length of the current playlist, in tracks. |
125 | Returns the position in the current playlist, in tracks (requires Winamp 2.05+). |
126 | Retrieves info about the current playing track. Returns samplerate (i.e. 44100) if 'data' is set to 0, bitrate if 'data' is set to 1, and number of channels if 'data' is set to 2. (requires Winamp 2.05+) |
127 | Retrieves one element of equalizer data, based on what 'data' is set to. 0-9 The 10 bands of EQ data. Will return 0-63 (+20db - -20db) 10 The preamp value. Will return 0-63 (+20db - -20db) 11 Enabled. Will return zero if disabled, nonzero if enabled. |
128 | Autoload. Will return zero if disabled, nonzero if enabled. To set an element of equalizer data, simply query which item you wish to set using the message above (127), then call this message with data |
129 | Adds the specified file to the Winamp bookmark list |
135 | Restarts Winamp |
200 | Sets the current skin. 'data' points to a string that describes what skin to load, which can either be a directory or a .zip file. If no directory name is specified, the default Winamp skin directory is assumed. |
201 | Retrieves the current skin directory and/or name. 'ret' is a pointer to the Skin name (or NULL if error), and if 'data' is non-NULL, it must point to a string 260 bytes long, which will receive the pathname to where the skin bitmaps are stored (which can be either a skin directory, or a temporary directory when zipped skins are used) (Requires Winamp 2.04+). |
202 | Selects and executes a visualization plug-in. 'data' points to a string which defines which plug-in to execute. The string can be in the following formats: vis_whatever.dll Executes the default module in vis_whatever.dll in your plug-ins directory. vis_whatever.dll,1 executes the second module in vis_whatever.dll C:pathvis_whatever.dll,1 executes the second module in vis_whatever.dll in another directory |
211 | Retrieves (and returns a pointer in 'ret') a string that contains the filename of a playlist entry (indexed by 'data'). Returns NULL if error, or if 'data' is out of range. |
212 | Retrieves (and returns a pointer in 'ret') a string that contains the title of a playlist entry (indexed by 'data'). Returns NULL if error, or if 'data' is out of range. |
241 | Opens an new URL in the minibrowser. If the URL is NULL it will open the Minibrowser window |
242 | Returns 1 if the internet connecton is available for Winamp |
243 | Asks Winamp to update the information about the current title |
245 | Sets the current playlist item |
246 | Retrives the current Minibrowser URL into the buffer. |
247 | Flushes the playlist cache buffer |
248 | Blocks the Minibrowser from updates if value is set to 1 |
249 | Opens an new URL in the minibrowser (like 241) except that it will work even if 248 is set to 1 |
250 | Returns the status of the shuffle option (1 if set) |
251 | Returns the status of the repeat option (1 if set) |
252 | Sets the status of the suffle option (1 to turn it on) |
253 | Sets the status of the repeat option (1 to turn it on) |
Приятного Вам прослушивания музыки !!!