私が理解している限りでは、FRAPS はどこに店を置くかを決定するために比較的強引なアプローチを使用しています。プロセスは SetWindowsHookEx で開始され、OS が FRAPS フック DLL を実行中のすべてのプロセス [および将来のプロセス] にロードするように要求します。DLL の魔法は、GetModuleHandleA を使用して手続き型の一連のテストを実行し、接続先のプロセスが OpenGL/DirectX モジュールをロードしたかどうかを観察することに帰着します。すべての呼び出しが NULL を返す場合、フックは自分自身をプロセスから削除しようとします。
一方、プロセスがそれらをロードしている場合は、保護を解除して JMP フックを挿入することにより、そのライブラリから適切なレンダリング関数を単純にフックします。wglSwapBuffers は通常、OpenGL で唯一関連するものです。プロセスがこの関数を呼び出すと、最終的に FRAPS モジュールが呼び出され、FRAPS はバック バッファーをキューにキャプチャして AVI にエンコードし、その小さな表示をレンダリングします。次に、wglSwapBuffers の元の要求を処理し、実行をプログラムに返します。
C# でクエリを実行する限り... EasyHook (http://easyhook.codeplex.com/) を確認し、それが機能しないかどうかを確認してください。私は個人的にこの API の経験がありません。