Thanks Lanux128. An alternative also would be to make an autohotkey script and use RunWait. I was hoping there would have been a program that would detect program x was started, instead started y, then started x, and afterwards start z.
The benefit of this would be that I can just keep running X as normal, or via file associations etc.
However the more I think about it, the more this seems to be impossible, also Windows might not like it, basically you're creating a dodgy piece of software.