Part and parcel of creating a tool that acts like an in-game jukebox and file browser is to first create a rich, robust, and co-operative interface between the game (taking primary user input) and the tool running in the background. Naturally, this interface that HLDJ employs is well-suited for all kinds of applications other than just file browsers/players. Basically, the interface developed here allows the user to send commands to a listening application while never having to leave the game, AND proactively use the HL/HL2 engine to "forward" messages to your application.
As a result, I'm thinking of making HLDJ mod-able, allowing independent developers to create plug-ins that HLDJ will call when it receives a command. This will allow your tool to accept user input from the game console (without having to modify any game files), much the same way HLDJ does. This is geared towards other developers looking for a well-defined interface between the game and a program/tool they've created. If there is enough interest, I will start work on this, and if there is much interest, I may seperate and package the interface system seperately from HLDJ.
Please let me know if you're interested; post your thoughts in this topic.