Desktop Info by Glenn Delahoy (C) Copyright 2005-2010 All rights reserved Description ----------- This little application displays real-time system information on your desktop. Looks like wallpaper but stays resident in memory. Perfect for quick identification and walk-by monitoring of production or test server farms. Everything is customisable. Usage ----- Just run it. You can kill it via the right click context menu or from Task Manager. Open the desktopinfo.ini file and adjust each item in the items section to control visibility, refresh times, colours etc. The display updates itself automatically when you save the ini file. Options ------- There is no configuration program. Options are set by modifying the ini file in a text editor such as Notepad. The included ini file shows all the available options. Display values are relative to the primary display so if you have a dual monitor display, you may need to specify negative values for any of these depending on the display arrangement. Here are the rules for the position options: if left is specified, it is left aligned if right is specified, it is right aligned if neither left or right, it is left if both are specified, it is left if top is specified, it is top aligned if bottom is specified, it is bottom aligned if neither top or bottom, it is top if both are specified, it is top if font size is not specified, it is 8 if font size is less than 6, it is 8 if width is not specified, it is half the primary monitor width height is always the number of items fontface The name of the font. fontsize The size of the font. ssfontsize The font size in screen saver mode. formcolor Used with the /f command line option. contextmenu Enables/disables the right click context menu. offset Enables/disables the display offset of the network adapter, fixed disk and printer sub-items. networkadapterfilter A comma delimited list of network adapters to *exclude* from the display. language File name containing alternate display text for the items. msnstatus Enables option to update msn status. Colours ------- Colours are specified as a six character bgr (reverse rgb) hexadecimal number. The first two characters represent the level of blue, the second represent the level of green, the third two represent the level of red. Each element has a range of 00-ff (0-255). ff0000 is blue, 00ff00 is green, 0000ff is red. ffffff is white (all colour elements at maximum), 000000 is black (all colour elements are off). Items ----- The items section in the ini file controls the state of each info item. Each item contains a comma delimited list of key:value pairs. key value --- ----- active : a value of 0 is off, 1 is on interval : a value in seconds where 0 means never refresh colour : a bgr value as defined above chart : chart type to display where 0 = no chart, 1 = bar chart, 2 = line chart. See below for items that have charts. threshold : the value where the item text will change colour threshold colour : the new text colour when the value reaches the threshold value style : font style where b is bold and i is italic An example is: DATETIME=active:1,interval:1,color:FFFFFF where the datetime item is active, refreshed every second and the colour is white. CPU=active:1,interval:2,color:0000FF,chart:1,style:b is active, refreshed every two seconds, the colour is red, chart number 1 is displayed and the font style is bold. If an item does not have a chart, the chart value is ignored. If you don't specify an item at all, it will not display. Some items such as network adapter, fixed disk and printer control all items of that class. For example if you switch on fixed disk, all detected fixed disks are displayed including most usb disks. The display is refreshed whenever there is a hardware change notification for fixed disks or network adapters. Charts ------ Where an item has two values such as NETPACKETSRATE and DISKIO, the bar chart value will be the sum of the two values. On line charts the first value takes the colour configured for that item, the second value takes a standard brown/orange/tan kind of colour. The following items have both bar and line charts available: CPU TOPPROCESSCPU PHYSICALRAM VIRTUALMEMORY PAGEFILE PAGEFAULTS NETCONNECTIONS NETPACKETSRATE FIXEDDISK DISKIO Thresholds ---------- Items that display values may be configured to change colour when that item reaches a given value. The following items can have threshold values: Item Threshold ---- --------- CPU percent TOPPROCESSCPU percent TOPPROCESSMEM MB TOPPROCESSPF count PROCESSCOUNT count PHYSICALRAM percent VIRTUALMEMORY percent PAGEFILE percent PAGEFAULTS count NETCONNECTIONS count NETPACKETSRATE rate of either value FIXEDDISK percent DISKIO rate of either value DISKQUEUE count TSSESSIONS count UNREADMAIL count Numbers ------- Several of the entries show two numbers. For example, the physical ram might show something like 528MB / 1024MB (51% used). The first number is the amount used, the second is the total. So in this case it shows 528MB used out of a total of 1024MB which equates to 51% used. The same is true for virtual memory, page file and fixed disks. Files ----- Desktop Info can monitor files and folders for changes to size, write time or version number. Create a new section in the Ini file called [files]. Each entry consists of "name=value". The name is for display and can be anything you choose to identify the entry. The value is divided into four sections separated by commas: the first section is the file or folder name, the second section is the monitor type, the third section is refresh interval, the fourth section is the colour. The four monitor types are text, size, time and version. The text type will display the first line of the given text file when the last write time changes. The size type will display the file size when the size changes. The time type will display the last write and access times when either changes. The version type will display the file version resource string when the file changes. This monitor will work for local and network files and folders. If the file or directory does not exist, the display will show "". The text type might be useful for monitoring semaphore or progress files created by batch processes. The following example displays the text in the given file. [files] status=c:\semaphore.txt,text,10,FF0000 Registry -------- Desktop Info can monitor specific registry keys or values for changes. If you specify a key you can also choose to monitor just that key or the entire tree starting at that key. Create a new section in the Ini file called [registry]. An entry consists of "name=value". The name is for display and can be anything you choose to identify the entry. The value is divided into three sections separated by commas: the first section is the registry key (and value), the second section is the word 'tree' if you specify a key and want to monitor the whole tree, the third section is the colour. No refresh time is required. The following example will monitor the Run keys. [registry] machine run=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,tree,6578AB user run=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,tree,6570FF The following example will monitor a specific value. [registry] sound man=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SoundMan,notree,44FF44 Event Logs ---------- Desktop Info can monitor specific event logs for changes. Create a new section in the Ini file called [eventlogs]. An entry consists of "name=value". The name is for display and can be anything you choose to identify the entry. The value is divided into three sections separated by commas: the first section is the event log name, the second section is the refresh interval and the third section is the colour. The following example will monitor the application event log. [eventlogs] Application Events=Application,20,339999 Network Adapter Filter ---------------------- The ini file [options] section may contain a "networkadapterfilter" entry which contains a comma delimited list of network adapters to exclude from the display. networkadapterfilter=usb exclude all network adapters that have "usb" in the description networkadapterfilter=usb,vmware exclude all network adapters that have "usb" or "vmware" in the description. Language File ------------- The ini file [options] section may contain a "language" entry which points to an additional configuration file in the application directory. It contains a duplicate list of the items found in the desktop.ini file. Each item is a name=value pair where the name matches the id in the desktop.ini file and the value is any string you want to use on the display for that item. The NETWORKADAPTER, FIXEDDISK and PRINTER items may contain %1 which will be replaced by each item number. TIMEZONE=Slide Zone HOST=Machine Name USER=Current User FIXEDDISK=Hard Disk %1 Msn Status / Personal Message ----------------------------- The ini file [options] section may contain a "msnstatus" entry which enables the option to update your Live Messenger status / personal message with any current alarms. To enable msnstatus, set the value to some number above 10 indicating how often to update the status in seconds. Alarms are buffered and the oldest will be sent next. That is, first in first out. If there are no alarms the message is removed and your Messenger status / personal message will revert to its normal message. Don't set the value to less than 10 seconds as it will probably be ignored. Your Live Messenger must be connected and configured to "Show what I'm listening to". This has been tested on Windows Live Messenger 2009 (14.0.8089.726) and Miranda v0.8.13 but should work with any messenger that implements the MsnMsgrUIManager interface. Messenger insists on showing the music icon; still working on that. Show Desktop ------------ The Show Desktop button on the Windows Quick Launch toolbar makes Desktop Info invisible, there's nothing I can do about that. Instead, add a Desktop Info icon to your Quick Launch toolbar. When you run it, Desktop Info will look to see if it's running already. If it is, it will attempt to minimise enough applications to make itself visible. This makes it sort of an alternative to Show Desktop. The obscuring windows may choose to ignore the minimise message or do other bizarre things which are outside of my control. Command Line Options -------------------- The following command line options may be used: /a Show all items regardless of ini file settings. /f Show a visible form. This tells Desktop Info to appear like a regular application allowing you to move it to the background or foreground and drag it around like any other application. Context Menu ------------ To get the context menu to appear in transparent mode, you have to click on a chart or part of the text which may take a few tries (this is not necessarily true in Windows 7). The context menu can be disabled by setting the 'contextmenu' item in the 'options' section to '0'. Show Desktop In default mode this minimises enough applications to make Desktop Info visible. See above. Refresh This forces a refresh of the display and all items. Configuration Opens the desktopinfo.ini file with the default text editor. When you edit and save this file, Desktop Info will detect the change and load the new configuration. Read Me Opens the readme.txt file with the default text editor. Quit Closes the Desktop Info application. Screen Saver ------------ Desktop Info can be used as a screen saver. Make a copy of DesktopInfo.exe and rename it to DesktopInfo.scr. Right click on this file and select Install. In the ini file, the "ssfontsize" option controls the font size when running as a screen saver. You can run the exe and the screen saver at the same time. You can also add a screen saver to the Windows logon screen by altering the registry at HKEY_USERS\.DEFAULT\Control Panel\Desktop. The values are: ScreenSaveActive, ScreenSaverIsSecure, ScreenSaveTimeOut and SCRNSAVE.EXE. Put the full path and file name to desktopinfo.scr in the SCRNSAVE.EXE value. Miscellaneous ------------- The application is set to idle priority class which means it will only take up cpu time when no other process requires it. If some other application is going flat out 100% cpu, the Desktop Info display may not update right away. Fixed disks smaller than 3GB in size will be displayed as MB. This is primarily to avoid the rounding error of going to gigabytes. The main CPU item shows percentage of all cpus in the system. This means it will always show 0-100% regardless of how many cpus there are. The top process cpu item shows the percentage per cpu. This means it may show more than 100%. Top Process PF shows total page faults. "Page Faults/sec" shows both total and hard page faults. The hard page faults is usually the one you're interested in. This shows page file activity which is what kills system performance. The Windows ClearType system makes a mess of the transparent text. The only solution I've found is to either switch off ClearType or use a fixed width font such as Courier, Fixedsys, MS Sans Serif, System. Your mileage will vary for cpu temperature. On Windows 7 and presumably Vista, it only works if Desktop Info is run as Administrator. The motherboard must have a sensor and the motherboard drivers have to install the correct wmi counter. So far out of all the computers i've tested only my Asus laptop shows the cpu temperature! Your mileage will vary for oem information. Desktop Info reads the OEMInformation registry key. Because of the 64 bit registry redirection done for 32 bit applications, the information needs to exist in the Wow6432Node branch. On my Asus, for example, the oem information exists only in the 64 branch, not the 32 bit branch. I can't bypass this redirection so it will either work or not. Windows Platforms ----------------- Desktop Info has been tested on the following Windows platforms: XP Pro (32 bit) version 2002 service pack 2 XP Pro (32 bit) version 2002 service pack 3 XP Pro (64 bit) version 2003 service pack 2 Vista (32 bit) business service pack 1 Server 2000 (32 bit) service pack 4 Server 2003 (64 bit) service pack 2 Server 2008 (32 bit) standard service pack 1 Server 2008 (64 bit) standard service pack 1 Windows 7 Professional 64 bit -------------------------------------------------------------- Release Notes Version v0.10 ------------- Limited distribution test release. Version v0.11 ------------- Change 1: Fixed the nasty flicker some systems were getting. Change 2: Fixed the odd characters after the domain name. Change 3: Less full refreshes means less cpu time. Change 4: Fixed disk figures for very small drives. Version v0.20 ------------- Change 1: Added time zone info. Change 2: Some optimisations. Change 3: Added refresh intervals. Change 4: Added domain controller info. Change 5: Added event logs. Version v0.21 ------------- Change 1: Added terminal server session count. Change 2: Fixed some stuff in event logs. Version v0.22 ------------- Change 1: Added DirectX version. Change 2: Adjusted domain controller. I can't directly test this one. Change 3: Added network packet stats and rates. Change 4: Added network connection count. Change 5: Added double click refresh. Version v0.30 ------------- Change 1: Fixed a bunch of memory issues. Change 2: Fixed Terminal Services sessions and added session list. Change 3: Added auto font size. Change 4: Added 'missing ini' default values. Change 5: Implemented proper ini file monitoring. Change 6: Added screen info. Change 7: Fixed display for 256 colour remote desktop. Change 8: Added files monitor options. Version v0.31 ------------- Change 1: Added Up Time. Change 2: Added support for cpu times for Windows 2000. Change 3: Fixed Domain Controller Change 4: Fixed multiples of same file watch type bug. Change 5: Fixed memory sizes over 2GB. Version v0.40 ------------- Change 1: Added top process cpu time. Change 2: Added top process memory usage. Change 3: Added file version watch type. Change 4: Added registry watch types. Change 5: Added cpu count. Change 6: Additional checking for terminal sessions. Version v0.41 ------------- Change 1: Added unread mail. Change 2: Added formright and formbottom options. Version v0.42 ------------- Change 1: Increased fixed disks to eight. Change 2: Added multiple ip addresses. Change 3: Fixed problem with missing ini file. Change 4: Split network gateway entries to separate lines. Change 5: Added percentages to memory and disk displays. Version v0.50 ------------- Change 1: I think I've nailed the show desktop thing. Version v0.51 ------------- Change 1: Fixed problem with some USB drives. Change 2: Solved refresh problem when removable drives come and go. Version v0.60 ------------- Change 1: Reworked the file monitoring so it works on local and remote files and folders. You'll need to adjust your ini file entries as noted above. Change 2: Reworked the registry monitoring to merge the two types. You'll need to adjust your ini file entries as noted above. Change 3: Added the /f command line option to show a visible, moveable form. Change 4: Added the /a command line option to show all items regardless of the ini file settings. Change 5: Added right click context menu. Change 6: The network entries are grouped so all information for each adapter is together. Change 7: Tested on a variety of Windows platforms. The results are noted above. Version v0.70 ------------- Change 1: Added Disk IO on fixed logical drives. Change 2: Added disk queue length. Change 3: Changed ini file format as noted above. Will continue to read the old format while the Intervals section exists. Change 4: Added item colours. Change 5: Fixed bug in Top Process Cpu Change 6: Fixed bug in cpu times. Change 7: Added charts. Change 8: Added thresholds. Change 9: Added exception handlers to process enumerators. Version v0.71 ------------- Change 1: Fixed an access violation in the disk io routines. Change 2: Fixed refresh when disks come and go. Version v0.80 ------------- Change 1: Added colours to the file and registry monitors. Change 2: Added option to disable the context menu. Change 3: Added option to toggle the indents on disks/networks. Change 4: Modified registry monitor to optionally show values. Change 5: Registry item names are shown as found in the ini file. Change 6: Added event log monitor and removed redundant event logs from the items. Version v0.81 ------------- Change 1: Improved disk change handling. Change 2: Fixed file monitor where file/directory does not exist or disappears or reappears. Change 3: Fixed divide by zero error in fixed disks. Version v0.90 ------------- Change 1: Refactored the chart display code to be more useful and added charts to more items. See the charts section for more information. Change 2: Refactored form display code. Options have changed accordingly. Auto form width, auto font size and font color are gone. You should make sure every item has the colour set. See the options section for more information. Change 3: Rewritten all the network adapter stuff. Added change handling. Added filtering. See the options section for more information. Change 4: Prevent form from resetting it's position after it is dragged. Change 5: Rewrote the bar chart. Change 6: Fixed problem with event log monitor thread not terminating correctly. Change 7: Added the following items: printer, printerstatus, displaycontroller, bios, motherboard, workgroup. Printers is work in progress. Change 8: Added language file. Change 9: Added screen saver option. Change 10: Added msnstatus option. Change 11: Changed method for retrieving service pack. Version v1.00 ------------- Change 1: Added page faults and top process page faults. Change 2: The order of displayed items now follows the order in the ini file. Change 3: New ini file item format. This will make it easier to read and easier for me to add new options. See the item section above for more details. Change 4: Fixed the process name for all known varieties of Windows. If a process name can't be retrieved for any reason, it will display and maybe an error message. Change 5: Added cpu temperature from wmi. See the miscellaneous section above. Change 6: Fixed line chart width in screen saver mode. Change 7: Subdued some redundant refreshes. Change 8: Some memory usage optimisations. Change 9: Fixed display controller and bios on Windows 7 and hopefully haven't broken it elsewhere. Change 10: Added oeminfo. See miscellaneous section above. Change 11: Added item font style. Version v1.01 ------------- Change 1: Fixed fatal crash on startup as the result of an access denied problem when retrieving OS info in limited access Windows account. -------------------------------------------------------------- Comments/suggestions to: support@delahoy.com http://www.glenn.delahoy.com