2016-11-05 8 views
0

アクティブなフォアグラウンドウィンドウがdirect3dを使用しているかどうかを判別する最もクリーンな方法は何でしょうか。アクティブなウィンドウがdirect3dを使用しているかどうかをチェック

d3dモジュールがロードされているかどうかを確認できますが、それだけではdirect3dでレンダリングされているという疑いのないシャドウなしでは確認できません。

私はクラスのインスタンスが初期化されているかどうかを調べるためにメモリをスキャンすることができますが、それはあまりにも多くのCPUと時間を要します。

解決方法は、リソース使用量が非常に速く、非常に低くなければならないため、1秒に1回使用して自分のアプリケーションを閉じて、人々がゲームをするためのリソースを解放する必要があるかどうかを判断する必要があります。

+0

私の意見では、唯一保証された方法は、システム全体のフックをインストールし、そのフックIDirect3dDevice9 Presentにコードを注入することです。 – VuVirt

+0

DIrect3D 10、Direct3D 11、Direct3D 12ゲームでは完全に失敗するはずです。フックは常に脆いです。 –

+0

OpenGL、Vulkanなどをリストに追加することができます... – galop1n

答えて

0

ゲームにフックする(注入DLL)は、ゲーマー&hellipにとって非常に悪い結果を招く可能性があります。 のように、彼らはを禁止することができます。アンチ不正プログラムは、このような未知のDLLをチェックします。

ウィンドウが最小化されたときに検出し、リソースを解放するか、少なくともレンダリングを一時停止する必要があります。それが回復したら、いつものようにビジネスを続けてください。

誰かと同じように、再生中にアプリを閉じるよう教えてください。スマートなゲーマーは、ゲームが必要でないすべてのゲームをプレイします。

+0

dllを注入することは、反カンニングで誤検出を引き起こす可能性があります。私のアプリケーションは一日中実行されます。それを最小化することは、ユーザーがそれを使用していないことを意味しません。ユーザーがゲームに出入りするたびに手動でアプリケーションを閉じて再起動させることで、ユーザーに不便を感じません。 – John

+1

あなたは上記の問題を実際には言及していません。システム上で誰かがゲームをしているかどうかにかかわらず、アプリケーションは最小限に抑えられたときにリソースをほとんどまたは全く使わないべきです。 –

+0

問題が暗示されています。最小化できるアプリケーションではありません。 – John

関連する問題