3

このサンプルとして、sharpshell を使用してアイコン オーバーレイ ハンドラーを作成しました

私のSharpshellハンドラーは

[ComVisible(true)]
[DisplayName("  Test")]
public class SyncedIconOverlayHandler : SharpIconOverlayHandler    
{
...
}

私の質問は、名前の前にスペースを含むようにハンドラー名を変更したいので、私のハンドラーは Dropbox と Google Drive よりも優先されます。 ここに画像の説明を入力

4

3 に答える 3

1

これはオーバーレイの作成に関するものではなく、オーバーレイ識別子のリストで使用される並べ替え順序に関するものです。名前が表示される場所を変更するには、DropboxExt1 が最初の項目であるため、ID の名前を D の前の文字で開始するように変更する必要があります。そのため、代わりに を使用して" Test"、別の名前を付けます。

スペースを使用する方法はありません。このための適切なアプローチは、名前をアンダースコア_文字で始めることです。これは、文字 A の前にリストに表示されます。これにより、将来の識別子が追加された場合に先頭に残ることが保証されます。

于 2016-01-13T07:56:03.963 に答える
1

ご存知のように、名前にスペースを追加して、オーバーレイを他のオーバーレイの上に並べ替えることができます。たとえば、Google ドライブ、Dropbox、Tortoise SVN など、多くの一般的なアイコン オーバーレイがこれを行います。

ソートの優先順位は、ソートされた上位 15 個のみが表示されるためです。これは、Windows 95 以降の Windows の制限です! (そして、今でも Windows 10 ではそうです)。たとえば、Google ドライブと競合していて、両方のアイコン オーバーレイが上位 15 位にある場合は、SharpShell でオーバーライドして優先度の低い番号を返す必要がありますGetPriority()。両方が同じ優先度を返す場合、おそらく表示されるのはソートされた後のほうですか? テストする必要があります..

他の人が示唆しているように _ を使用するのは道ではなく、スペースの後にソートします。

あなたがしたいこと - レジストリを手動で編集するのではなく、プログラムで名前を指定することは SharpShell によって提供されていません - 私は同じ問題を抱えているので、それを行う属性を追加しようとしています。

于 2016-05-10T03:27:52.597 に答える