私のアプリケーションは私と同僚のためのものなので、Click-Onceかcopy-the-exeかどうかは気にしません。 Windowsエクスプローラで特定の拡張子を持つファイルをクリックしてプログラムを起動してそのファイルを開くことができるようにしたい。私はファイル名を取得することができません。WPF;一度クリックします。起動するファイルをダブルクリックします。 VS 2008
表向きのソリューション:
私がしようとしているコードは以下であり、この時点で私がやろうとしているすべてのテキストボックスにクリックしたファイルの名前を入れています。私は、私の関連する無知は、Windowsエクスプローラからクリックワンアプリケーションを参照する方法に関するものだと思う。私がビルドすると、setup.exeという名前のファイル、つまりWis.applicationというファイルが作成されます。インストールするために「setup」をクリックすると、「Click-Once application reference」というタイプのショートカットが作成されます。 C:\ Users \ ptom \ AppData \ Roaming \ Microsoft \ Windows \スタートメニュー\プログラム\ Wis "を選択します。私は、インストールによって作成されたそのショートカットとファイルを関連づけ、ファイルをsetup.exeに関連付けることを試みました。ファイルをクリックすると、アプリケーションが起動しますが、 AppDomain.CurrentDomain.SetupInformation.ActivationArgumentsがnullであることが示されます。 ( "によって"私はそれがnullであるかどうかをテストする場所からのテキストでテキストボックスがいっぱいになることを意味します)。私は、デバッグから、または単に起動メニューから実行することで、アプリケーションを実行する場合は、ActivationArgumentsがnullではないことを示すコードパスに従うが、そのActivationData(文字列[])が長さここで
0は
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace Wis
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
// Check if this was launched by double-clicking a doc. If so, use that as the
// startup file name.
if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments == null)
{
this.Properties["DoubleClickedFileToLoad"] = "There were no activation arguments AGAIN";
}
else
{
if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null
&& AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length > 0)
{
this.Properties["DoubleClickedFileToLoad"] =
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];
}
else
{
this.Properties["DoubleClickedFileToLoad"] = "Type in a file name";
}
}
}
}
}
おかげ
あなたのコードに貼り付けました。 ApplicationDeploymentという名前のオブジェクトがあります。私は最初にそれをカットし、それは働いた。最初のテストを使用するために、System.Deploymentへの参照を追加する必要がありました。 –