Mon application est seulement pour moi et ses collègues, donc je ne se soucient pas si c'est Cliquez-Une ou copier-la-exe. Je veux être capable de cliquer sur un fichier avec une extension donnée dans Windows Explorer et lancer mon programme et ouvrir ce fichier. Je ne peux pas l'obtenir pour capturer le nom du fichier.WPF; cliquez une fois; Double clic sur le fichier à lancer VS 2008
solution ostensible:
Le code que je suis en train est ci-dessous et à ce stade tout ce que je suis en train de faire est de mettre le nom du fichier cliqué dans une zone de texte. Je soupçonne que mon ignorance pertinente est sur la façon de référencer l'application click-once de Windows Explorer. Quand je construis je me retrouve avec un fichier appelé setup.exe, un fichier appelé Wis.application, et quand je clique sur « setup » pour l'installer, je me retrouve avec un raccourci de type « référence d'application Cliquez-fois » dans " C: \ Utilisateurs \ ptom \ AppData \ Roaming \ Microsoft \ Windows \ Menu Démarrer \ Programmes \ Wis ". J'ai essayé d'associer des fichiers avec ce raccourci créé par install, et en associant des fichiers avec setup.exe. Lorsque je clique sur le fichier, l'application se lance, mais indique que AppDomain.CurrentDomain.SetupInformation.ActivationArguments est nulle. (Par "indique" je veux dire la boîte de texte est rempli avec le texte d'où je vérifie pour voir si c'est nul). Si je lance l'application de débogage, ou tout simplement en exécutant dans le menu de démarrage, il fait ce que je pense, en suivant le chemin de code qui indique que ActivationArguments n'est pas nul, mais que son ActivationData (string []) est de longueur 0.
Voici le code de App.xaml.cs
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";
}
}
}
}
}
Merci
J'ai collé dans votre code; vous aviez un objet nommé ApplicationDeployment; Je l'ai coupé au début et ça a marché. J'ai dû ajouter une référence à System.Deployment pour utiliser ce premier test. –