Extended System Control plugin for DesktopX


The plan for this plugin is to include all system-related functionality that isn’t already available in the DesktopX System namespace.



You can download a test version here (set to expire on 10/5/2009).

If you have ideas for stuff to add to this plugin, feel free to post them on the DesktopX 4.x request thread.


Plugin Information

Mouse wheel

  • SystemEx_OnMouseWheel(rotation)
  • SystemEx_OnMButtonDown(x, y)
  • SystemEx_OnMButtonUp(x, y, dragged)

Monitor information

  • Monitors
  • NumberOfMonitors
  • GetMonitor(index)

MonitorInfo object:

  • IsPrimary
  • Left
  • Top
  • Bottom
  • Right


  • Volume
  • Mute
  • PeakValue (read-only)
  • SystemEx_OnVolumeEvent(volume)
  • SystemEx_OnMuteEvent(isMuted)


  • CommandLine
  • CommandLineArgs
  • IsFirstInstance
  • SystemEx_OnNewInstance(commandLineArgs)


  • VerifySignature(path, signature, type)



Mouse wheel


When the mouse is over the object and the mousewheel is used, the SystemExOnMouseWheel
function will be called with the wheel rotation passed as a parameter.

The wheel rotation will be in number of lines.

Default value: 3
Default value for page scrolling: 10

A positive value indicates that the wheel was rotated forward, away from the user;
a negative value indicates that the wheel was rotated backward, toward the user.

SystemEx_OnMButtonDown(x, y) & SystemEx_OnMButtonUp(x, y, dragged)

When you middle click on your object, the SystemEx_OnMButtonDown function will be
called. When you release the button, theSystemEx_OnMButtonUp function will be called.

Both functions will have the mouse coordinates relative to your object passed as


Monitor Information

This one was asked by Zubaz to better handle multi-monitor systems. As it turns out, the virtual screen coordinates are not nearly enough to be able to position objects on multi-monitor systems. WMI is exposing monitor information, but it does not seems to work reliably (it only gives information for the first monitor on my system for example).


Gets an array of MonitorInfo objects


Returns the MonitorInfo for the given screen


Gets the number of monitors on the machine


Volume Information


When the user change the master volume through the volume mixer or another application
your object callback is called. The volume parameter will contain the current master

XP Compatibility: never called.


If the volume is muted, your object callback is called.
isMuted will be True if the volume has been muted, false otherwise.

XP Compatibility: never called.


Sets or gets the master volume.

SystemEx.Volume = <volume>
<volume> = SystemEx.Volume

<volume> should/will be between 0 and 100. Any value outside these bounds will be capped.


Mute or un-mute the audio stream

SystemEx.Mute = True
isMuted = SystemEx.Mute

Mute can take two values: True and False.
If Mute is True the audio stream is muted, otherwise it is not muted.


This is a read-only property. It allows you to get the peak level value for the
currently playing sample.

level = SystemEx.PeakValue
level will be between 0 and 100.

XP Compatibility: might not work with some cards, in which case it will always  returns 100.
It reads from the waveout device, so it won’t work when reading from a CD for example.


Instance Information


Get the full command line (including the path to the executable and DesktopX-specific arguments)


Get an array of command line arguments.
Command line arguments have been cleaned up to remove DesktopX-specific arguments (in the case of single-exe gadgets)


Will be True if this is the first instance to run, False otherwise.
It is preferable to check for it at startup and close the gadget accordingly,
as only the first instance will receive a callback message when a new instance is started.


Gets called when another instance is started. The command line arguments are passed in an array.


Misc Information

SystemEx.VerifySignature(path, signature, type)
Check the signature of the file pointed to by path.

The only type of signature supported at this time is SIGNATURE_SHA1



1.0 Build 228:

  • Renamed to DXSystemEx (plugin namespace is now SystemEx)
  • Added SHA1 signature check
  • Added MouseWheel and Middle button click callbacks (merged from DXMouseWheel)
  • Added Master volume control / Mute / Peak (merged from DXVolumeControl)
  • Added instance information (merged from DxInstance)

1.0 Build 205:

  • First test version