Zoom Player supports multiple Command & Control interfaces:
-
TCP/IP based Command and Control.
Allows Command and Control of Zoom Player over an Internet or Intranet connection with full notification of the player's state. -
Inter-Process Win32 API Bi-Directional Command and Control.
An external application registers its window with Zoom Player by calling a specially crafted WinAPI "SendMessage" command. Once the application window is registered, the application can send Zoom Player control commands using the "SendMessage" WinAPI command and receive messages by capturing a special WinAPI message generated by Zoom Player and sent to the registered window. -
Simplified Inter-Process Win32 Control.
A subset of commands that provide easy control over a limited subset of Zoom Player features. -
Command Line Interface.
Control Zoom Player through the command line, requiring no programming experience whatsoever.
## TCP/IP based Command and Control: To use the TCP/IP interface, you must first enable it in the options dialog under "Advanced Options / System". The default TCP/IP port is 4769, this value can be altered on the same options dialog page. Alternatively, with Zoom Player v8.1 or newer, you can instruct Zoom Player to connect to your server using the/CONNECTTCP:[address or ip]:[port]
, for example/CONNECTTCP:127.0.0.1:4770
.
When using the TCP/IP interface, the event number is always sent and returned as a 4-digit code followed by the event's content (when applicable). All content is string based and UTF-8 encoded to preserve country specific character codes.
When sending TCP/IP commands, make sure to terminate each command with CRLF (ASCII #13#10).
## Inter-Process Win32 API Bi-Directional Command and Control:
To register your application with Zoom Player, send Zoom Player (using the WinAPI "SendMessage" function) an
ATOM String containing your application's window name and the following parameters (in the "SendMessage" function):
WParam : ATOM String value created using the WinAPI "GlobalAddAtom" function. LParam : A value of "200" indicating that your application is trying to register itself. Message Number : WM_APP + 49.
Your application must now capture the WM_APP+444
WinAPI message which Zoom Player uses to send information to
your application's window. When Zoom Player notifies your application, the Zoom Player API event number (see below)
is returned in the "WParam" value and the message content is returned in the "LParam" value.
If the LParam value contain a string, it is stored as an ATOM String which your application must free using the
WinAPI "GlobalDeleteAtom" function.
## Generated Events
Events generated by Zoom Player and sent to your application.
Code | Event | Description |
---|---|---|
0000 | Application Name | String describing the Application |
0001 | Application Version | String with the version text |
0100 | Ping | Result of a call to message 0100, indicating the player is responsive |
0110 | System Time | Either a String or comma separated values |
0120 | Monitor Layout | The monitor layout format is:[ Monitor #1 ] [ Monitor #2 ] [ Monitor #3 ] [Left,Top,Width,Height] [Left,Top,Width,Height] [Left,Top,Width,Height] |
0130 | Available Audio Devices | Each device name is separated by the ` |
0132 | New audio device | 0 - Unknown audio device 1 - New audio device set |
0134 | Current audio device | String containing name of the current audio device |
0142 | New video renderer | 0 - Unknown video renderer 1 - New video renderer set |
0144 | Current video renderer | Valid values: 0 : Standard Overlay (No Derived Aspect Ratio or Color Control support) 1 : Overlay Mixer (Limited to the primary monitor on most hardware) 2 : VMR7 (Requires Windows XP) 3 : VMR9 Windowed (Requires DirectX 9) 4 : VMR9 Windowless (Requires DirectX 9) - Default Windows XP 5 : VMR9 Renderless (Requires DirectX 9) 6 : Haali's Video Renderer 7 : EVR (Requires Windows VISTA or .NET3 installed) - Default Windows VISTA+ 8 : MadVR 9 : Custom |
0150 | Mouse Cursor State | -1: Bad value specified 0 : Mouse Cursor Hidden 1 : Mouse Cursor Shown |
0201 | Wrong Password | Wrong password used to encrypt API protocol |
1000 | State Change | 0 - Closed 1 - Stopped (doesn't apply to DVD, DVD Stop = Closed) 2 - Paused 3 - Playing |
1010 | Current Fullscreen State | 0 - Windowed 1 - Fullscreen |
1020 | Current FastForward State | 0 - Disabled 1 - Enabled |
1021 | Current Rewind State | 0 - Disabled 1 - Enabled |
1090 | Timeline Text | The current timeline text |
1100 | Position update | String containing media [Position / Duration] ,For example: 00:00:12 / 01:02:35 |
1110 | Current Duration | Current Duration in milliseconds |
1120 | Current Position | Current Position in milliseconds |
1130 | Current Frame Rate (realtime) | Current Realtime Frame Rate in Frames per second (FPS) Only works with DirectShow based content playback |
1140 | Estimated Frame Rate | Estimated Frame Rate in Frames Per Second (FPS) Note, some formats don't have a frame rate so the returned value is an estimate. |
1200 | OSD Message | String containing the OSD message |
1201 | OSD Message Off | No value, message just tells that the OSD window has disappeared |
1300 | Current Play Mode | 0 - DVD Mode 1 - Media Mode 2 - Audio Mode |
1310 | TV/PC Mode | 0 - PC Mode 1 - TV Mode (unused) |
1400 | DVD Title Change | Current Title |
1401 | DVD Title Count | Number of Titles |
1410 | DVD Domain Change | See EC_DVD_DOMAIN_CHANGE in DirectX SDK |
1420 | DVD Menu Mode | 0 - Not in a Menu 1 - In a Menu |
1450 | DVD Unique String | Returns a unique DVD indentifer |
1500 | DVD Chapter Change | Current Chapter |
1501 | DVD Chapter Count | Number of Chapters |
1600 | DVD/Media Active Audio Track | Current Audio Track Index |
1601 | DVD/Media Audio Track Count | Number of Audio Tracks |
1602 | DVD Audio Name | Contains the name of the Audio track and a padded number for example "001 5.1 AC3" |
1605 | Audio track changed | Contains the name of the newly active audio track. |
1700 | DVD/Media Active Sub | Current Subtitle Track |
1701 | DVD/Media Sub Count | Number of Subtitle Tracks |
1702 | DVD/Media Sub Names | Contains the names of the Subtitle tracks. |
1704 | DVD Sub Disabled | 0 - Sub Visible 1 - Sub Hidden |
1705 | Subtitle track changed | Contains the name of the newly active subtitle track. |
1750 | DVD Angle Change | Current Angle |
1751 | DVD Angle Count | Number of Angles in the DVD Title |
1800 | Currently Loaded File | String containing file name |
1810 | Current Playlist | String containing the Zoom Player Playlist structure. Each entry is separated by the ">" character and is further sub-divided into additional sections in this structure: ` |
1811 | Playlist Count/Change | Triggered when the playlist is modified and returns the Number of items in updated Playlist. |
1855 | End of File | End of file has been reached |
1900 | File PlayList Pos | String containing file position in playlist |
1920 | Playlist Cleared Ack. | A notification that the playlist has been cleared |
1950 | A Play List file was removed | String containing the file name |
2000 | Video Resolution | String containing the video resolution (if there is one) |
2100 | Video Frame Rate | String containing the video frame rate (if there is one) |
2200 | AR Change | String containing the AR String (same as OSD message) |
2210 | DVD AR Mode Change | 0 - Unknown 1 - Full-Frame 2 - Letterbox 3 - Anamorphic |
2300 | Current Audio Volume | The current Audio Volume |
2400 | Media Content Tags | Returns Media Content Strings (ID3/APE/WMA/Etc... Tags) |
2500 | A CD/DVD Was Inserted | Returns path to drive the disc was inserted to |
2611 | Video Display Area X-Ofs | Integer Value |
2621 | Video Display Area Y-Ofs | Integer Value |
2631 | Video Display Area Width | Integer Value |
2641 | Video Display Area Height | Integer Value |
2700 | Play Rate Changed | In Media Mode the Fast Play/Slow Motion Rate. In DVD Mode the Fast Forward/Slow Motion/Rewind Rate. Value is play rate multiplied by 1000. For example: A value of "1500" means a play rate of "1.5". If you call a function and get this message with the play rate value unchanged, it means the function failed to change the play rate. |
2710 | Random Play State | 0 - Disabled 1 - Enabled |
3000 | ZP Error Message | String of error messsage Note that there can be multiple errors appearing in sequence, only the last error may be visible by the user. |
3100 | Nav Dialog Opened | A Navigator Dialog has opened 0 - Blanking Navigator 1 - Chapter Navigator 2 - Context Navigator 3 - File Navigator 4 - GoTo Navigator 5 - Media Library Navigator 6 - MouseWheel Navigator 7 - Color Control Navigator 8 - Playlist Navigator 9 - Resize Navigator 10 - Station Navigator 11 - Web URL Navigator 12 - Main Navigator 13 - Media Library Selection Navigator 14 - Virtual Keyboard Input Navigator 15 - Equalizer Navigator 16 - Station Navigator 17 - Confirmation Navigator 18 - Play History Navigator 19 - Navigation Style Navigator 20 - Download Navigator 21 - Information Navigator 22 - Media Scanner Navigator 23 - Stream Selection Navigator 24 - Mini Color Control |
3110 | Nav Dialog Closed | A Navigator Dialog has closed (Values are the same as #3100) |
3200 | Screen Saver Mode | The ZP Screen Saver has: 0 - Started 1 - Ended |
4000 | Virtual Keyboard Input Result | This message contains 3 parameters separated by the ` |
5100 | ZP Function Called | Value contains name of function |
5110 | ZP ExFunction Called | Value contains name of function |
5120 | ZP ScanCode Called | Value contains ScanCode. |
6000 | Shared Items List | Value contains a list of files and folder returned by the previous 6000 call. The returned format is the same as message 1810. Error codes: -1 : The 'Share Path' parameter was not specified |
6010 | Add Shared files ack. | This messages acknowledges that a call to message 6010 has finished processing. The value returned is the number of files in the playlist verified to exist on the system |
6020 | Save playlist to a file | Returns an error code: 0 - Save success -1 - Save failure |
6030 | Return playlist file content | Returns the content of the specified playlist as file names separated by the ` |
6040 | Return current playlist content | Return the content of the current playlist as file names separated by the ` |
6100 | Scheduled Media About to Start | This message contains two parameters, the scheduled entry Index and file name, for example: "5,C:\Media\Video.avi" |
6101 | Scheduler Media has Ended | This message contains two parameters, the scheduled entry Index and file name, for example: "5,C:\Media\Video.avi" |
6110 | Current Schedule State | 0 - Scheduler is disabled 1 - Scheduler is enabled but not playing 2 - Scheduler is enabled and playing |
6120 | Current Schedule List | This message contains the schedule list. Entries are separated by the ` |
6130 | Number of Schedule Entries set | The message contains the number of schedule items set. Items with invalid path or characters will be rejected. |
6140 | Current schedule pause state | 0 - Do not pause when nothing is scheduled 1 - Pause if nothing is scheduled (default) |
6150 | Current schedule hide UI state | 0 - Do not hide the user interface when the schedule has ended. 1 - Hide the user interface when the schedule has ended. |
9000 | Flash Mouse Click | Used to indicate a screen position was clicked if when interactive flash mode is enabled. |
Messages that contain parameters should be space separated, for example: 5100 fnPlay
A comma used to separate multiple parameters, for example: 5110 exSetAR,1
.
Code | Event | Description |
---|---|---|
0000 | Get Application Name | Returns 0000 message |
0001 | Get Version | Returns 0001 message |
0100 | Ping | Returns 0100 message |
0110 | Request System Time | 0 - String 1 - Year,Month,Day,Hour,Minute,Second |
0120 | Request Monitor Layout | Returns 0120 message |
0130 | Request Available Audio Devices | Returns 0130 message not implemented |
0132 | Set Active Audio Device | The device name must be passed as a parameter The new audio device is only used by the next playing media, the currently playing media is not affected. Returns 0132 message |
0134 | Request current audio device | Returns 0134 message |
0142 | Set Active Video Renderer | Valid values: 0 - Standard Overlay (No Derived Aspect Ratio or Color Control support) 1 - Overlay Mixer (Limited to the primary monitor on most hardware) 2 - VMR7 (Requires Windows XP) 3 - VMR9 Windowed (Requires DirectX 9) 4 - VMR9 Windowless (Requires DirectX 9) - Default Windows XP 5 - VMR9 Renderless (Requires DirectX 9) 6 - Haali's Video Renderer 7 - EVR (Requires Windows VISTA or .NET3 installed) - Default Windows VISTA+ 8 - MadVR 9 - Custom The new video renderer is only used by the next playing media, the currently playing media is not affected. Returns 0142 message |
0144 | Get current Video Renderer | Returns 0144 message |
0150 | Show/Hide Mouse Cursor | 0 - Hide Mouse Cursor 1 - Show Mouse Cursor Returns 0150 message |
0201 | Wrong Password | Wrong password used to encrypt API protocol |
1000 | Get Play State | Returns 1000 message |
1010 | Get Fullscreen State | Returns 1010 message |
1040 | Set OnTop State | 0 - On Top disabled 1 - On Top enabled |
1090 | Request Timeline Text | Returns 1090 message |
1100 | Set Timeline Updates (on/off) | 0 - Stop Media Position Update messages 1 - Start Media Position Update messages 2 - Resend Media Position Update messages |
1110 | Get Current Duration | Returns 1110 message |
1120 | Get Current Position | Returns 1120 message |
1130 | Get Current Frame Rate (FPS) | Returns 1130 message |
1140 | Get Estimated Frame Rate (FPS) | Returns 1140 message |
1200 | Show a PopUp OSD Text | Parameter is a UTF8 encoded text to be shown as a PopUp OSD |
1201 | Temp Disable PopUp OSD | Temporarily Disables the PopUp OSD |
1202 | Re-Enable PopUp OSD | Re-Enables the PopUp OSD |
1210 | Set OSD "Visible" Duration | Value in Seconds |
1300 | Get Play Mode | Returns 1300 message |
1400 | Request DVD Title | Returns 1400 message |
1401 | Request DVD Title Count | Returns 1401 message |
1420 | Request DVD Menu Mode | Returns 1420 message |
1450 | Request DVD Unique String | Returns 1450 message |
1500 | Request DVD Chapter | Returns 1500 message |
1501 | Request DVD Chapter Count | Returns 1501 message |
1600 | Request Audio Track | Returns 1600 message |
1601 | Request Audio Track Count | Returns 1601 message |
1602 | Request DVD Audio Names | Returns 1602 message |
1603 | Set Audio Track | Set the active Audio Track Valid DVD values are 0-7 or 15 for default track |
1700 | Request Subtitle Index | Returns 1700 message |
1701 | Request Subtitle Count | Returns 1701 message |
1702 | Request Subtitle Names | Returns 1702 message |
1703 | Set Subtitle Track | Set the Subtitle Track Valid values 0-31, also shows the subtitles if currently hidden |
1704 | Hide Subtitles | Disable Subtitles from showing |
1750 | Request DVD Angle | Returns 1750 message |
1751 | Request DVD Angle Count | Returns 1751 message |
1753 | Set DVD Angle | Set the DVD's Angle Valid Values 1-9 |
1800 | Request Playing File Name | Returns 1800 message |
1810 | Request Playlist | Returns 1810 message |
1811 | Request Playlist Count | Returns 1811 message |
1850 | Play File | Play a Media File, Value is a UTF8 encoded string containing the file name. |
1852 | Close Media File | Closes the playing media file or stops a DVD in DVD Mode. |
1860 | Browse Web | Browse a web page, Value is the web address (URL) |
1900 | Get Playlist Index | Returns 1900 message |
1910 | Set Playlist Index | Value from 0 to Number items in the playlist-1 (plays the file in index). |
1920 | Clear Playlist | Clears the Current Playlist (will close any playing file) |
1930 | Add Playlist File | Add a file to the Playlist |
1935 | Add Playlist File & Play | Add a file to the Playlist and begin playing it |
1940 | Select Playlist Item | Select an Item in the Playlist Value from 0 to Number items in the playlist-1. |
1941 | DeSelect Playlist Item | Remove selection of a Playlist item Value from 0 to Number items in the playlist-1. |
1950 | Remove Playlist Item | Remove a Playlist item from the list Value from 0 to Number items in the playlist-1. Returns both an 1950 and 1900 message. |
2200 | Request AR Mode | Request the current ZP AR Mode |
2210 | Request DVD AR Mode | Request the DVD AR Mode (see outgoing #2210) |
2300 | Request Audio Volume | Request the Audio Volume Level |
2310 | Set Audio Volume | Sets the audio volume level, valid values are 0-100. |
2600 | Set Derived Mode Aspect Ratio | Sets the aspect ratio used for Derived Aspect Ratio mode for the currentply playing video. The aspect ratio is specified as:Width Ratio+Height Ratio left shifted 16 bits.For Example, 16:9 would be 16+9*65536 or 16+9<<16 or 16+(9 shl 16) (the examples do the same thing in a different syntax). |
2610 | Set Video Display Area X-Ofs | Integer Value. |
2611 | Get Video Display Area X-Ofs | Integer Value (Returns 2611 message). |
2620 | Set Video Display Area Y-Ofs | Integer Value. |
2621 | Get Video Display Area Y-Ofs | Integer Value (Returns 2621 message). |
2630 | Set Video Display Area Width | Integer Value. |
2631 | Get Video Display Area Width | Integer Value (Returns 2631 message). |
2640 | Set Video Display Area Height | Integer Value. |
2641 | Get Video Display Area Height | Integer Value (Returns 2641 message). |
2650 | Set Player Window dimensions | Integer Values representing the Left,Top,Width,Height position of the player window. For example: 50,50,800,600 |
2660 | Set Player on-top value | 0 - Standard window mode 1 - Player window is on-top of other windows |
2670 | Set Fullscreen Monitor | 0 - Monitor where the player window is displayed 1 - Monitor #1 2 - Monitor #2 3 - Monitor #3... |
2700 | Get Play Rate | Returns 2700 message. |
2701 | Set Play Rate | Set the Media Mode Fast Play/Slow Motion rate or the DVD Mode Fast Forward/Slow Motion/Rewind rate. Value is an integer representing the play rate multiplied by 1000. For example a value of 500 means a play rate of 0.5 .Do not use negative values in media mode, it will not work. Fast Play in media mode has a speed restriction a bit over 2.0 unless Reclock is used as the audio renderer (this is a Microsoft limitation due to sound driver architecture). |
2710 | Get Random Play Mode | Returns a 2710 message. |
3000 | Dismiss ZP Error | Close the ZP Error message (if visible). |
4000 | Virtual Keyboard Input Query | Pop up the Virtual Keyboard interface to ask the user to input a text string. This message requires three UTF8 encoded text string parameters. The first parameter indicates a unique identifier which is returned to you in the callback message, which will help you identify which message prompted the user for input. The second parameter populates the text entry field with the specified text (you can leave this empty if you want an empty text input value. The third parameter is used to query the user for the type of input required. For example: `4000 eMail |
5000 | Set Current Position | Sets the Current Play Position (in seconds.ms) For example 122.500 will seek to 2min:2sec.500ms |
5010 | Play DVD Title | Plays a DVD Title (depends on DVD Navigation accepting the title). |
5020 | Play DVD Title,Chapter | Same as 5010, Plays a DVD Title at a specific chapter, value of 1,5 plays Title #1, Chapter #5 |
5030 | Play DVD Chapter | Same as 5010, Plays a DVD Chapter in the current Title. |
5100 | Call ZP Function | Calls a Zoom Player function by name (see skinning tutorial for list) |
5110 | Call ZP ExFunction | Calls a Zoom Player extended function by name (see skinning tutorial for list) Format "exFunctionName,Value" |
5120 | Call ZP ScanCode | Pass a keyboard scancode number to the Zoom Player Interperter (such as VK_DOWN), this can be used to access the Navigator interfaces, pass the scancode as a parameter. |
5130 | Call ZP nvFunction | Calls a Zoom Player navigation function by name (see skinning tutorial for list) |
6000 | List Shared Folder | Lists the content of the shared folder specified by the /SharePath:[Path] Command Line Parameter. If no value is specified, the root path is returned, if a path is specified, the content of the path (under the shared folder) is returned.Please note that for security reasons, paths can't begin with the . , / or \ character and may not include any invalid character in the path's body (such as ` |
6010 | Add Shared files to Playlist | Accept a list of file names separated by the ` |
6020 | Save playlist to a file | Accept a list of file names separated by the ` |
6030 | Retreive playlist file content | Specifies a playlist file to load with a pate relative to the 'SharePath' and Returns a "6030" message containing the playlist content or Error number. |
6040 | Return current playlist content | Returns a "6040" message |
6105 | Set schedule state | 0 - Disabled 1 - Enabled |
6110 | Request current schedule state | Returns a "6110" message containing the current schedule state |
6120 | Request current schedule list | Returns a "6120" message containing the current schedule list |
6130 | Set new schedule list | Replace existing schedule with a new schedule, the schedule structure is identical to the structure returned by the "6120" message. This message returns a "6130" message indicating the number of schedule entries set. |
Use the WinAPI "SendMessage" command to send Zoom Player a control command. The values listed below are passed in the "LParam" field (the values are in HEX).
The return value of the event contains an integer value with the current state (with the exception of "ZP_GetFileName" which returns an ATOM string containing the file name (make sure to deallocate the atom string).
ZP_GetFileName = 0x1000; // Returns the Currently Playing file name
ZP_GetDuration = 0x1010; // Returns the playing media length
ZP_GetPosition = 0x1020; // Returns the current play position
ZP_GetMode = 0x1030; // Returns the current Play Mode (DVD, Media or Audio)
ZP_GetState = 0x1040; // Retruns the current Play State (Closed, Stopped, Paused, Playing)
ZP_GetPlayIndex = 0x1050; // Returns the current (Playlist) Playing Item Index
ZP_VolumeLevel = 0x1060; // Returns the current Audio Volume Level
ZP_SetPosition = 0x5000; // Set current position (WParam specifies the value in Seconds)
ZP_CallFunction = 0x5010; // Call a Zoom Player function (WParam contains an ATOM string listing
// the function name). The Function Names can be found here:
// http://inmatrix.com/zplayer/parameters.shtml
ZP_CallExFunction = 0x5020; // Call a Zoom Player extended function (WParam is an ATOM string listing the
// extended function name
// The string should be listed as [function],[value]
, for example: exSetAR,2
ZP_CallFunctionIndex = 0x0000; // WParam holds a specific function number
// The Function Numbers can be found here:
// http://inmatrix.com/zplayer/parameters.shtml
ZP_ScanCode = 0x0001; // WParam holds a keyboard scancode
ZP_AltScanCode = 0x0002; // WParam holds a keyboard scancode with ALT pressed
ZP_CtrlScanCode = 0x0003; // WParam holds a keyboard scancode with CTRL pressed
ZP_ShiftScanCode = 0x0004; // WParam holds a keyboard scancode with SHIFT pressed
ZP_AltShiftScanCode = 0x0005; // WParam holds a keyboard scancode with ALT+SHIFT pressed
ZP_AltCtrlScanCode = 0x0006; // WParam holds a keyboard scancode with ALT+CTRL pressed
ZP_CtrlShiftScanCode = 0x0007; // WParam holds a keyboard scancode with CTRL+SHIFT pressed
ZP_ASCScanCode = 0x0008; // WParam holds a keyboard scancode with ALT+SHIFT+CTRL pressed
ZP_MWAction = 0x0064; // WParam Value : // 0 = Mouse Middle Button Click // 1 = Mouse Wheel Up // 2 = Mouse Wheel Down
Some functions require you to pass an ATOM string to Zoom Player. Use the WinAPI "GlobalAddAtom" function to create the ATOM and pass it through the WParam parameter. Zoom Player will clear any ATOM string it receives.
The Zoom Player command line interface is quite powerful and allows you to control the action without any programming experience.
Some parameters can be used even if Zoom Player is already running as long as you are not running multiple instances of the player (other parameters only have an affect on the initial run).
For the full command line parameter list, visit the Zoom Player on-line help at: http://inmatrix.com/...arameters.shtml
The Zoom Player Communication and Control interface may only be used commercially under a direct license with Inmatrix LTD.
All rights reserved Inmatrix LTD.