Fraps - это архетипический пример такого рода действий с полноэкранным приложением DirectX из стороннего приложения. Он работает, перехватывая некоторые системные вызовы и вставляя себя в цепочку вызовов между приложением и DirectX. Есть некоторый удар по производительности, но в целом он минимальный.
Эта страница , кажется, содержит некоторые детали и пример кода о том, как подключить приложение таким образом.
Если я правильно помню, из других обсуждений на форуме (в данный момент не могу найти ссылку. Ищите такие вещи, как "как работает fraps", это популярный вопрос), Fraps перехватывает несколько вещей, чтобы заставить приложение загрузить свою DLL, затем перехватывает вызовы Present () и выполняет вызов device-> Clear () перед вызовом реального Present (), со списком маленьких прямоугольников, которые нужно установить для другого цвета, который может записать число FPS дисплеи. Это оказывает минимальное влияние на производительность и широко совместимо с любым рендерингом приложения. Наложение растрового изображения было бы более сложным, так как это было бы не так просто сделать в настоящее время. Возможно, если бы вы могли подключить EndScene, то вы могли бы сделать больше, но вы должны быть осторожны, чтобы не изменить состояние устройства.
PIX имеет привилегированный доступ к драйверу DirectX, поэтому я не ожидал, что смогу использовать его в качестве модели для эмуляции.
Если целевое приложение работает в оконном режиме, перехват DirectX по-прежнему работает, но вместо этого вы можете просто использовать GDI.
Редактировать: Я думаю это - это ссылка, о которой я изначально думал.