Good Reedbeta, reading your answer makes me realize I haven't described the problem with sufficient clarity.
My fault. Let me try again.
I am working on the very injection you speak of. Nontrivial indeed - but I have it covered by now.
DX9 injection is done already.
Time to do it with other versions, starting with DX7.
(Now stop me if I say idiocies - I'm so green with DX7 that I may well be ignoring something big)
The assumption: With DX7 both Flip() and Blt() can be okay to show the new frame on screen.
That is, they can both mimic the Present() method appeared in DX8 and later versions.
Case A: when a Flip() call is detected. When Flip() is called, the game is undoubtedly 'presenting' the new frame on screen, regardless of how many calls to Blt() may (or may not) have been made before. This is the best case scenario I can hope for.
Case B: when NO Flip() call is detected. But if Flip() is never called, the problem gets thorny. Because Blt() is the only alternative, and Blt() may be called several times during the normal composition of 1 frame - and it is not guaranteed that there will only be 1 call to repaint the whole buffer (that is, to examine the Blt() parameters may not be a sure winner). So: how can I detect which such Blt() call is the last, before the game starts working on the next frame?
In simpler words: How can I trap the DX7 call that is being the equivalent of DX8's and DX9's Present() method?
Others have done it before me. There has to be a way.