3

タスクバーで実行されるツールバーを作成しました。残念ながら、インストール後、ユーザーは手動で有効にする必要があります。特定のツールバーを開く(または閉じる)ようにエクスプローラーに指示する方法はありますか?

インストールが完了したら、インストーラーであるNSISにツールバーをオンにしてもらいたいです(プラグインが必要になることはわかっています)。

また、複数のユーザーがPCを共有する企業環境など、すべてのユーザーに対してツールバーを自動的に有効にできるかどうかも知りたいです。

4

6 に答える 6

10
  • この CodeProject コメントは、キーの押下をシミュレートすることによってそれを行います
  • Vista+ には、ShowDeskBandHideDeskBandを使用して、これを行うための API があります。
  • 編集: このコードは、デスクバンド オブジェクトを追加できるようになりました (Pinvoke.net およびこれらの 2 つのMSDN フォーラムの質問から):

    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("4CF504B0-DE96-11D0-8B3F-00A0C911E8E5")]
    public interface IBandSite
    {
        [PreserveSig]
        uint AddBand([In, MarshalAs(UnmanagedType.IUnknown)] Object pUnkSite);
        [PreserveSig]
        void RemoveBand(uint dwBandID);
    }
    
    
    private uint AddDeskbandToTray(Guid Deskband)
    {
        Guid IUnknown = new Guid("{00000000-0000-0000-C000-000000000046}");
        Guid ITrayBand = new Guid("{F60AD0A0-E5E1-45cb-B51A-E15B9F8B2934}");   
        Type TrayBandSiteService = Type.GetTypeFromCLSID(ITrayBand, true);
        IBandSite BandSite = Activator.CreateInstance(TrayBandSiteService) as IBandSite;
        object DeskbandObject = CoCreateInstance(Deskband, null, CLSCTX.CLSCTX_INPROC_SERVER, IUnknown);
        return BandSite.AddBand(DeskbandObject);
    }
    

そして、使用例:

Guid address_toolbar_guid = new Guid("{01E04581-4EEE-11D0-BFE9-00AA005B4383}");
uint band_id = AddDeskbandToTray(address_toolbar_guid);

RemoveBand への同様の呼び出しでもうまくいくのは理にかなっていますが、今のところ、そのコードを機能させることはできません。別の問題: 追加したデスクバンドは、それを追加したアプリケーションを閉じると閉じます。

于 2009-05-03T21:33:04.073 に答える
3

この記事をチェックしてみてください。これは、ITrayDeskBand インターフェースを使用して Vista でのみ (「公式に」とにかく) 実行できるようです。

于 2009-05-03T20:06:33.033 に答える
2

現在、正確なURLを見つけることができませんが、PDC2008の周りでこれについての議論があったことを覚えています。基本的にこれは特に有効になっておらず、ユーザーの同意なしにランダムなプログラムがタスクバーに入力できませんでした。

これの副作用は、デフォルトでWMPデスクバーを有効にするユーザーがほとんどいないことです。

于 2008-12-07T05:50:59.857 に答える
1

あなたの質問に対する答えではありませんが、お願いします: .NET でシェル エクステンションを記述しないでください(タスクバーはシェル エクステンションです)。

理由は次のとおりです。

基本的に、あなたは他のアプリを壊しています。

于 2009-05-08T20:45:40.817 に答える
1

私が理解していることから、タスクバーの場所と値などはレジストリに保存されます(正確な場所を忘れた)ので、特定のレジストリキーを見つけた場合は、その場所を取得し、インストーラーにコンピューターにレジストリキーを挿入して、タスクバーが有効になるようにすることができます。

于 2009-05-07T20:44:29.523 に答える
0

よく確認すると、exeが背後で実行されている間にgoogleツールバンドが存在するため(GoogleDesktop.exe)、googleまたは検索バーのインスタンス化の方法を主張する場合は、TrayBandSiteServiceを再度確認して、サポートexeを作成する必要があります...

于 2009-09-23T17:08:26.167 に答える