8

重複の可能性:
アプリケーションとのファイルタイプの関連付け (C#)

「.build」ファイル (nant スクリプト) を視覚化および変更する C# Windows アプリを作成しています。ユーザーが Windows エクスプローラーで .build ファイルを右クリックし、[アプリケーションで開く] オプションを選択して、アプリでファイルを変更できるようにしたいと考えています。

このメカニズムを使用するには、プログラムで何をサポートする必要がありますか? コンテキスト メニューのサポートを有効にするために、プログラムは Windows に対して何をする必要があるでしょうか?

この件に関する優れた記事/チュートリアルの方向性を教えてくれる人がいるかどうか疑問に思っていました.

4

2 に答える 2

5

Open With コマンドは、ファイルのパスを最初の引数としてアプリケーションに渡すだけなので、必要なことは次のとおりです。

public static void Main(string[] args)
{
    if(args[0] != null)
    {
       //args[0] contans a path to the file do whatever you need to do to display it
    }
    else
    {
       //Start normally
    }
}

プログラムを open with リストに自動的に入れるには、いくつかの reg キーを に追加する必要がありますHKEY_CLASSES_ROOT\YOUR_EXT\。ここにそれを行う方法を言っているSOの答えがあります

または、通常の方法で open with リストに手動で追加することもできます。

于 2010-09-24T15:17:36.603 に答える
2

このブログ記事を見てみましょう: Shell Extensions - Context Menu。Windows シェル コンテキスト メニューへのいくつかの COM フックへの単純な「ラッパー」のコードが含まれています。それをGACに入れ、右クリックすると、メニューが右クリックコンテキストメニューのサブメニューとして含まれます。

「Open With...」を厳密に使用して、アプリケーションが開くことができるファイルに対してのみアプリケーションを表示する限り、それは少し簡単です。これらは、レジストリの 2 つの場所でレジストリ キーを使用して Windows によって管理されます。

  1. HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .FileExtension \ OpenWithList (現在のユーザー用にインストール)
  2. HKEY_CLASSES_ROOT\.FileExtension\OpenWithList (全ユーザーインストール)

regedit を使用して既存のものをいくつか見てから、Registry クラスを使用して、必要な拡張機能の新しいキーを作成します。

于 2010-09-24T15:28:47.373 に答える