2

AP.I 関数 GetSystemMetrics のフックを作成するのを手伝ってください。一部のアプリ (calc.exe など) が GetSystemMetrics を呼び出すときに、値 (500x500 など) を受け取り、他のアプリが正しい画面サイズを取得するようにしたいと考えています。また、C# と .net CF 2.0 を使用してこれを行う方法を誰かが教えてくれれば、とてもうれしいです。

ご協力いただきありがとうございます。

4

2 に答える 2

0

ネイティブ コードを書かずに C#/.NET で行うことは不可能だと思います。ただし、良いニュースは、madCodeHook という非常に使いやすい素晴らしいライブラリがあることです。http://madshi.net/をご覧ください

于 2012-09-18T14:22:51.927 に答える
0

ネイティブコードであっても、それはできません(少なくとも、OSのバージョン間で引き続き機能する場合と機能しない場合がある、醜い、悪い考えのvtable /カーネルメモリハックがないわけではありません)。GetSystemMetrics は OS を呼び出して、プラットフォームに関する情報を取得します。OS を再コンパイルしてそれらの値を変更する以外に、これらの値を「上書き」して OS に他の数値を報告させる方法はありません (もちろん、OS がそれらの数値が由来するような方法で既に構築されている場合を除きます)。アプリが変更できる場所 (レジストリなど)。

編集

あなたのコメントに基づいて、あなたの実際の問題は、何らかの形の「タスクバー」タイプのアプリケーションを作成しようとしていて、制御外の他のアプリが最大化したときにタスクバーをオーバーレイしないようにしたいということです. これはまさに既存の Explorer タスクバーの動作方法であるため、デフォルトのシェル ソース コードを調べて、そこでどのように実行されるかを確認することをお勧めします。

最終的には、既存のシェル コードを複製して既存のタスクバーをニーズに合わせて変更するか、必要な動作を備えたまったく新しいシェル アプリケーションを作成するかのいずれかになる可能性がありますが、ほとんどの場合、シェルを置き換える必要があり、それはネイティブ コードでのみ行うことができます。

于 2012-09-18T14:02:26.873 に答える