I'm not 100% sure of my answer being fully correct so don't hold me to it.
Overlaying with anything is a very hit and miss task, especially over a FPS game. The reason is that a FPS re-renders very quickly and so your overlaying layer will need to re-draw every time that the FPS re-draws. Now this is what D3D hooking utilizes: Hooking the d3d and redrawing at "endscene" which is called every time the FPS re-renders, this means it won't flicker over the top. Now with an external program, you can't sync it with the FPS re-rendering so it will flicker around a lot no matter how fast you redraw the program. However aside from games etc, you can usually be pretty safe with the "Topmost" property of your form.
So, basically my answer is, getting a non-flickering external window over any window on your computer isn't going to be easy even if it's possible.
No doubt I'm wrong on some points and am about to get flamed. Ah well.