5

重複の可能性:
ファイル拡張子をC#の現在の実行可能ファイルに関連付ける方法

ということで、学校への申し込み(最終プロジェクト)をしています。

このアプリケーションでは、Projectクラスがあります。これは、テストなどのカスタムファイルとして保存できます。gpr。(.gprは拡張子です)。

Windows /アプリケーションに.gprファイルをこのアプリケーションに関連付けさせるにはどうすればよいですか。.gprファイルをダブルクリックすると、アプリケーションが起動してファイルを開きます(OpenProjectメソッドを起動します-これによりプロジェクトが読み込まれます)。

Windowsでファイルの種類をアプリケーションに関連付ける方法を尋ねているのではなく、VisualStudio2012のコードでこれをキャッチする方法を尋ねています

更新: 私の質問はそれほど明確ではないようですので:

atm、私は何もしなかったので、最善の解決策をたどることができます。必要なのは、.gprをダブルクリックし、Windowsがアプリでそれを開くことを認識していることを確認し、アプリケーションでファイルパスをキャッチすることです。

どんな助けでも大歓迎です!

4

1 に答える 1

12

アプリケーションでファイルを開くと、そのファイルへのパスが最初のコマンドライン引数として渡されます。

C#では、これはargs[0]あなたのMain方法です。

static void Main(string[] args)
{
    if(args.Length == 1) //make sure an argument is passed
    {
        FileInfo file = new FileInfo(args[0]);
        if(file.Exists) //make sure it's actually a file
        {
           //Do whatever
        }
    }

    //...
}

WPF

プロジェクトがWPFアプリケーションの場合は、イベントハンドラーApp.xamlを追加します。Startup

<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml"
             Startup="Application_Startup"> <!--this line added-->
    <Application.Resources>

    </Application.Resources>
</Application>

これで、コマンドライン引数がイベントハンドラーe.Argsに含まれるようになります。Application_Startup

private void Application_Startup(object sender, StartupEventArgs e)
{
    if(e.Args.Length == 1) //make sure an argument is passed
    {
        FileInfo file = new FileInfo(e.Args[0]);
        if(file.Exists) //make sure it's actually a file
        {
           //Do whatever
        }
    }
}
于 2012-11-30T22:57:36.620 に答える