Hi all!
Note: This thread describes the old xpMCE (Windows XP) Media Center 2005 version of my add-ins!(See here for the new Windows Vista version.)
Note: This version for xpMCE 2005 RU2 will be not developed any further by me (i.e. no new features, no bug-fixes). The Vista version will act as its replacement.
There's a number of MCE add-ins I've been writing for my own use, some of which I've published on the German MCE-Community site HERE. Since there's been some interest in an English version, I thought I'd publish it here too.
Some of the add-ins are more useful, some less. Please remember that this is a hobby project. The add-ins do not come in a fancy installer, so you will have to unzip, copy/move files and edit config files manually...
The add-ins come in form of two DLLs which both are required. However, you can decide for yourself which of the add-ins in the DLLs to activate on your system and which not.
Important: Only works with MCE 2005 with Rollup 2 or later!
Add-Ins Currently In the DLLs:
The following describes the general installation of the add-in package. I'll then follow up (over time) with more postings in this thread with a more detailed description of each of the features.
Installation
Precondition: The add-ins work only on MCE 2005 Rollup 2 or later (.NET 1.1 is required). Also you need to install the J# redistributable package version 1.1, available from Microsoft:
https://www.microsoft.com/downloads/details.aspx?familyid=E3CF70A9-84CA-4FEA-9E7D-7D674D2C7CA1
To check if you already have the J# 1.1 redistributable, check the installed software (via the Control Panel) and look for "Microsoft Visual J# .NET Redistributable Package 1.1". (Do not confuse with a similar package for 2.0 which you may also have installed.)
Now, for the actual installation, download the JHTAddIn.zip file which you will find attached to the posting in the German community HERE (scroll to the bottom of the first posting in this thread - not the bottom of the whole thread!)Make sure that you are actually downloading the xpMCE version of the add-in from the German page: Check the note in red at the very top of the first posting to make sure it says "xpMCE".Unzip the file into any suitable folder (called "install folder" below).
In the install folder, you'll find two DLL files called JHTAddIn.dll and JHTAddInUtil.dll. You need to copy both of these files into your ehome folder in the Windows folder (usually C:\Windows\ehome).
Now you have the DLLs in place, so what's left is to register (activate) those add-ins from the DLLs that you are interested in:
For each add-in, you'll find a matching regADD_IN_NAME.cmd file in the "reg-unreg" subfolder of the installation folder which you can use to register the add-in with MCE (and also a matching unregADD_IN_NAME.cmd file for unregistering it again). When registering an add-in, you are also asked which language you want: 1=German, 2=English.
See the following postings in this thread for more information about which registration file to use for which add-in. You may also have to edit the add-in config file to supply further settings for a specific add-in. More about this later.
Finally, after registering all add-ins you are interested in, you need to restart MCE.
Note: You can always "activate" further add-ins from the package, or "deactivate" some with this process (see also "Uninstall" below). Simply execute the matching CMD file and then restart MCE.
Uninstall
If you only want to stop using a certain add-in from the package, simple execute the matching unregADD_IN_NAME.cmd file (and restart MCE).
If you want to uninstall the whole package and all add-ins in it, do so here:
Update with a new Version
I recommend to first unregister all add-ins of the old version, then delete the old install folder (but keep the old config file!), then install the new version, then register the add-ins of the new version you are interested in, then transfer your settings from the old config file (or the whole file) to the new install folder, like this:
Finally...
If you use my add-ins and like them, I would be happy about any feedback (probably also if you don't like them! ;-)
If there are any problems, don't hesitate to ask.
Please see the following postings for the descriptions of the individual add-ins. (Work in progress, I'll make these postings over time.)
Update 27 Nov 2006: Attached a new ZIP file to the posting at the German community (see link above) which fixes a problem in the "timeshift-buffer backup" add-in: If MCE had been running for a while, it could happen that the keyboard-hook that is listening for the "3x-left" combo on the remote (to trigger the add-in) would become unhooked, so it would no longer be possible to trigger the add-in. This should now be fixed.
Doc
Main Background Add-In
(This add-in is activated by running regMainBackgroundAddIn.cmd and deactivated by running unregMainBackgroundAddIn.cmd. Once the add-in is activated, any of its individual sub-features can be activated/deactivated via the config file. Once the add-in is deactivated, all its sub-features are deactivated too. For general installation instructions of the add-ins, please read the first posting in this thread!)
This add-in is a background add-in which means that it is started together with MCE and remains active in the background (but usually doesn't do anything and doesn't use CPU-time, unless its features are accessed).
The add-in contains several sub-features which can be activated or deactivated via a config file. Also in the config file you can specify further settings for some of the sub-features. For details on how to activate/deactivate and configure each sub-feature, please see the corresponding posting further below for each sub-feature.
The config file is called jhtAddIn.properties and is located in the install folder. It can be edited with any text editor (like Notepad). After a change in the config file it is enough to restart MCE to make the changes active (an additional execution of regMainBackgroundAddIn.cmd is not necessary if only jhtAddIn.properties is edited).
The add-in contains the following sub-features:
See below for explanations of the individual sub-features.
Timeshift-Buffer Backup
This feature is a sub-feature of the main background add-in which must be activated for this sub-feature to be available. Therefore, please do also read the posting about the main background add-in above. For a general installation description please read the first posting in this thread!
This sub-feature of the main background add-in allows you to back up the accumulated MCE timeshift-buffer while watching live TV, which will then appear like a normal recorded show.
To activate this feature, the config file jhtAddIn.properties must contain this line:
timeshiftBufferSave=true
Once the feature is running you can activate it at any time while watching live TV in full screen mode simply by pressing 3x-Left on the remote, i.e. press the "left" button (left-arrow) 3 times in quick succession. Shortly after you'll get a dialog which asks you if you want to back up the timeshift-buffer or not.
If you choose "No" then nothing further will happen (which is also the case if the dialog closes automatically after a while).
If you choose "Yes", the buffer-backup is started, with the following steps:
(Note: While the following may look complicated at first glance, it is actually quite simple to use, as each dialog will tell you what will happen or what you are supposed to do - the whole process is quite self-explanatory and not really difficult to understand or use.)
Once the process is completed, the buffer backup recording will be available in your normal "Recorded TV" list in MCE, just like a normal recorded show. The recording will have the name Live-TV and the subtitle will be the date and time for the time-span of live-tv contained in the recording.
(To see the new recording in the list, it might be necessary to refresh the list by switching between "Sort by Date" and "Sort by Title" and back.)
The recording will be stored in a normal DVR-MS file and can be handled like any other recording (watched, deleted, processed to MPEG or with DCut or whatever).On disk, the file will be located in a subfolder called "TimeshiftBuffers" located in your normal TV-recordings folder.
BTW: The timeshift buffer backup will contain the whole accumulated buffer since you have started watching live-TV, including all channel switches (up to the maximum length of the buffer).
That means that the add-in is also useful in one of those ugly situations where you are watching live-TV and then pause/stop for a while (or rewind) and from then on you watch TV from the buffer, i.e. you are "behind" in time. If in this situation you accidentially switch channels, then normally the part in the buffer that you have not watched yet would have been lost, because once you switch back to the correct channel, you will see the "current" live-TV and rewinding into the past is not possible anymore. With the add-in, you can now trigger a buffer backup and thus gain access to the part of the buffer before the accidential channel switch.(I explained this in more detail HERE.)
Advanced Configuration: By default, the add-in assumes that the timeshift-buffer files are located in their default folder, which is the subfolder "TempRec\TempSBE" of the default TV-recordings folder (the location of the default TV-recordings folder is in turn read from the Windows registry).If however the buffer files are located in a different folder (for example if you have configured the TV-recordings folder to be located on a shared network drive, but have left the temp-folder on the local computer, or if you are using a junction in the file system to have the recordings- and temp-folders on different disks or partitions), then you need to tell the add-in the path to the temp-folder by adding the following entry to the jhtAddIn.properties config file:
timeshiftBufferTempSBEFolder=PATH_TO_TempSBE_FOLDER
where PATH_TO_TempSBE_FOLDER is to be replaced with the path of the folder where the temporary buffer files (the files with names like "SBE*.tmp") are located on your system. (In the config file, remember to use "\\" or "/" instead of the normal "\" in the path!)
MCE-Message
This sub-feature allows other processes to show a notification dialog inside of the MCE. This dialog can contain text and optionally a PNG-image and has an OK button. Also, the dialog can either be modal or non-modal and can disappear automatically after a certain timeout.
To activate this sub-feature, the config file jhtAddIn.properties must contain the following line:
remoteCalls=true
To display a message in MCE, use the MCEMessage.exe (which is also part of the ZIP file that contains the add-ins, i.e. you'll find it in the install folder).
From a command prompt (or from inside of a batch command file), run the EXE with the following parameters:
MCEMessage TITLE TEXT TIMEOUT MODAL IMAGEPATH
with the following meaning:
BTW, the dialog will be displayed in all currently running instances of the MCE shell, which means that it will be displayed in the actual main MCE shell of the PC (if it is started) and also on all extenders which are currently connected. This works for the main MCE shell plus up to 5 extenders.
Important: The MCE-Message add-in only works if certains ports in the Windows firewall are opened for local access, because MCEMessage.exe talks to the add-in via these ports. The add-in uses the ports 31031 and following, i.e. the first MCE shell that is started (be it the main MCE on the PC or an extender) uses port 31031, the second uses port 31032 and so on.Therefore you need to open these ports in the Windows firewall for the add-in to work. When opening the ports, you can restrict them to the local computer, so that you do not open a security hole on your computer.Do so here:(I'm writing this on a German language XP, so I'm not sure that I'm getting the correct names of the menus and buttons, if in doubt, try to find something with a similar name...)Control Panel -> Windows-Firewall -> Exceptions -> Port...Then enter a meaningful "Name" (for example "MCEMessage Add-In") and for port enter 31031. Then click "Change Area..." (this button probably has a different name?). Then "Userdefined" and enter "127.0.0.1" into the input field (without the quotes) as the IP-address. Click OK 2 times. Now port 31031 is opened.If you only have the main MCE (no extender), then this is all you need to do. For each extender you have, repeat the same procedure with an additional port. I.e. for the first extender open port 31032, for the second extender port 31033 and so on (up to 5 extenders).If you have a different personal firewall instead of (or in addition to) the Windows-firewall, you probably need to configure it in a similar way to open the ports.
OnStartup Execute
This sub-feature allows you to automatically run an external program (or batch file) at each start of the MCE shell.
To activate this sub-feature, add the following two lines to the jhtAddIn.properties config file:
onStartup=trueonStartupCommand=COMMAND
where COMMAND needs to be replaced with the command that is to be executed (including all parameters).
The given command will then be executed once after each start of the MCE shell.
The home folder in which the command will be run will be your ehome folder, i.e. %WINDIR%\ehome. Therefore you may have to supply the full path to the desired EXE file, for example:
onStartupCommand=C:/Sample/MyProgram.exe param1 param2 param3
To run a batch file, execute "cmd.exe" and use the name of the batch file as a parameter (followed by the parameters for the batch file itself). In the batch file, remember to do a "cd PATH" to the correct folder in which your batch file is supposed to work, otherwise it will be working in %WINDIR%\ehome.If you want to close the command line window after the batch file completes, you need to include the "/c" parameter. If the command line window is supposed to remain open include "/k" instead. So usually something liket his:
onStartupCommand=cmd /c C:/Sample/MyBatch.cmd param1 param2 param3
Remember to use "/" or "\\" in paths, not the usual "\"!
OnResume Execute
This sub-feature allows you to automatically run an external program (or batch file) each time the PC wakes up from "Standby" (while the MCE shell is running).
onResume=trueonResumeCommand=COMMAND
The given command will then be executed each time the PC wakes up from Standby, but only if the MCE shell is open.
For more details about the COMMAND, please see OnStartup Execute above.
Slideshow Settings Add-In
(This add-in is activated by running regSlideshowSettingsAddIn.cmd and deactivated by running unregSlideshowSettingsAddIn.cmd. For general installation instructions of the add-ins, please read the first posting in this thread!)
This is a rather simple add-in for a quite trivial use, with the following background:
Frequently I run a slideshow with some of my pictures while MCE is playing music. In this case, I want the pictures in random sequence, with animations and relatively quickly after each other.Every now and then however I also watch (or show) a "real" slideshow, for example with vacation pictures. In this case I do of course not want a random sequence and usually also no animations and a longer interval for each picture.
In this situation I was annoyed that for getting to the "Slideshow Settings" page, I always have to go via "Info/i-Key -> Settings -> Pictures". (I'm not sure if this are the correct names on an English MCE, but I guess you understand what I mean...)
So I created this add-in as a shortcut: If a picture folder is selected in MCE and you press "Info/i" on the remote, then the popup menu will contain an additional "More..." entry. If you select it you go to a "More..." page where you will find an icon for "Slideshow Settings". Now click this icon and you will go directly to the slideshow settings page where you can adjust randomness, animations and speed (and other settings).
I know: It's not rocket science, but it's a shortcut that saves me a few key-clicks on the remote to get to the page I want, and since it's part of the DLL anyway, I thought I might just as well describe it here too.
TV-Archivation Add-In
(This add-in is activated by running regTVArchiveAddIn.cmd and deactivated by running unregTVArchiveAddIn.cmd. For general installation instructions of the add-ins, please read the first posting in this thread!)
Background: I wrote this add-in to play around with the ListMaker interface which is built into MCE. Normally the ListMaker is meant for assembling media data (recordings, pictures, music) to then be burned on CD/DVD. It is however possible to use the ListMaker for other purposes too, which is what I did. Still, you will see its CD/DVD-burning roots here and there on the add-in pages, which you will have to ignore. Since the add-in was programmed for personal use and as a playground for testing the ListMaker interface, I'm not sure about it's usefulness for others, but I thought I'd describe it anyway...
Anyway, the add-in has nothing to do with CD/DVD-burning but instead is meant for the situatuation where TV recordings are accumulating in the normal recordings folder and the disk is getting full. You don't want to delete recordings you haven't watched yet but you need to make space on the disk or the upcoming recordings will fail.This is where the add-in may be helpful, to move recordings from the normal recordings folder to a pre-configured archivation folder (on a different disk or partition), but in a way that the details of the archived recordings will still be viewable under "My TV -> Recorded TV", so that you can still browse and select them.
(So actually it's more of a "Move-TV" add-in than a "TV-Archivation" add-in, but the latter just sounds better ).
Note: If you want to use this add-in and already have the version of "11 Nov 2006" installed, then I recommend to update with the newer version ("15 Nov 2006" or later) which is now available for download, because in the Nov. 11th version I forgot to translate one of the text strings from German to English. The new version can be downloaded from the same location as described in the first posting of this thread.
The add-in is meant for two use cases, which I'll describe in more detail later on:
Online-Archive
Use case: The disk for normal recordings is getting full but there is another partition or disk with enough space. This second disk is usually always available. Selected recordings shall therefore be moved to this other disk, but shall still be available under "My TV -> Recorded TV".
For this the add-in can be used as follows:
You can now move recordings to this archive folder with the help of the add-in (see below for how to use the add-in). Since the archive folder is also a "Watched Folder", the moved recordings will still be available under "My TV -> Recorded TV".
(In case you want to configure the "Watched Folders" manually in the registry, edit the following entry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Service\Recording\WatchedFoldersThis entry is a multi-line entry. Specifiy one watched folder per line. The first line must always contain the normal TV-recordings folder, so you shouldn't change it. Simply add a new line with your archive folder.)
Offline Archive
Use case: The disk for normal recordings is getting full but there is an external USB-disk (or similar) with usable space. This external disk is usually switched off. Selected recordings shall be moved to this external disk, but shall still appear under "My TV -> Recorded TV", even if the external disk is switched off.
Now you can use the add-in to move TV recordings from the normal recordings folder to the archive folder (see below for how to use the add-in). Of course this is only possible if the archive folder is online (the external disk is switched on - see also below on what happens if the disk is off).
The twist when using the offline archive is, that the add-in not only moves the recording to the archive folder, but it also leaves a small "stub" of just 50 KB size (i.e. negligible in size) in the original recordings folder (or more precisely, in a sub-folder called "ArchiveStubs"). This stub can of course not be played/viewed, but it does contain all the usual meta-data of the recording, like title, sub-title, description, etc.That way, the recording with all its information remains present in the "My TV -> Recorded TV" list, even after it has been moved to an external disk which is usually switched off.
Of course you can't play this recording from the "Recorded TV" list, it is only there as a reminder (with details) of what recordings you also have (aside from those in the normal folder) in your archive folder.To better discern between normal recordings (which can be played from this list) and archived recordings (which can not be played from this list), the meta-data in the stub has been augmented with the note "ARCHIVED RECORDING". So if you see this note, then you know that this is an archived recording.
The "workflow" when using the add-in in offline modus is therefore something like this:
Using the Add-In
The add-in is available under "More Programs" as an icon with the name "TV-Archivation". Just click the icon to start the add-in.
(If after clicking the icon the first page of the add-in does not appear, then this means that the configured archive folder [see above] ist not available. Either there's a mistake in the entry in the config file jhtAddIn.properties, or, in case you are using an offline-archive, the external disk is still switched off.)
The add-in consists of several pages which are made available by the ListMaker interface of MCE, which is why they fit very well into the MCE look & feel:
Note: To be on the safe side in case of any problems, the add-in only deletes the original recordings-file after it has double checked that the copy in the archive folder was correctly written. For this, the add-in compares a checksum of the two files. This makes the archivation process longer, but here I thought it best to err on the safe side.
Hi, I have tried installing this and followed your instructions or at least I thought so but when I start media center up I get a message saying no background featues activated background add ins will now bw terminated. Can you offer any suggestions.
Thanks
Jason
Did you remove the "#" at the beginning of the line
#timeshiftBufferSave=true
in jhtAddIn.properties, so that it then reads
?
This is necessary to enable the timeshift-buffer sub-feature (as described above).
Please double-check this line. If've had people who accidentially deleted not only the "#" but also the first "t" (or something similar), rendering the entry useless.
If you can't find a problem there, did you move/rename the install folder or the jhtAddIn.properties *after* running the regXXX.cmd? Because then the add-in wouldn't be able to find it.To double check that the add-in can find the config file, please check the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Extensibility\Entry Points\{cea2344e-31ef-4136-a865-9a973ad3cff2}
and there the entry "Context". The value of this entry must be a path that correctly points to the jhtAddIn.properties file, for example "C:\JHTAddIn\reg-unreg\..\jhtAddIn.properties" or similar.
Thanks for the quick reply I continued to have a play and realsied I hadn't made the changes in the config file that needed to be done. It's looking good look forward to the info regarding the other add ins and anything new you may add.
Is there any way to make this work when using an extender as well?, I am using the linksys extender and get the same message about no background features activated when starting up the extender although it works fine now on the pc.
@jase33: The add-in is generally extender enabled already. I am using this add-in with the XBox 360 extender all the time. The fact that you are actually seeing the "No background features activated" dialog alone is already proof, that the background add-in by itself is running even on the extender. Because it is the add-in itself which displays this dialog. This dialog appears if the add-in can't find the jhtAddIn.properties file, or if in this file no background features are enabled (all lines are commented out with "#"). In your case the add-in works on the main MCE, which tells us, that the config file is present, that the path in the registry correctly points to it and that the feature is correctly enabled in the file. The only reason I can think of why the extender does not see this could be, that the MCX user account which is used by the extender does not have the right to access (read) the jhtAddIn.properties file. So I would suggest checking the file access rights to this file (and the folder it is in) and add a read-access for the MCX1 (or whatever) account your extender is using.
@GnatGoSplat: The download is the same both for the German and English version. You simply select which language you want during the registration process of each add-in (when you run the regXXX.cmd file).
Thanks Doc
Sorted