Benim uygulamam sadece ben ve iş arkadaşlarım içindir, bu yüzden Click-Once veya copy-the-exe olup olmadığına aldırmam. Windows Gezgini'nde verilen uzantıya sahip bir dosyayı tıklatıp programımın başlatılmasını ve dosyayı açmasını istiyorum. Dosya adını yakalamak için alamıyorum.WPF; bir kere tıkla; Başlatmak için Çift Tıklama Dosyası; VS 2008
göstermelik çözüm:
deniyorum kod aşağıda ve bu noktada ben yapmaya çalışıyorum hepsi bir metin kutusuna tıklandığında dosyanın adını konur. İlgili bilgisizliğimin, bir kez tıklatma uygulamasının windows explorer'dan nasıl referans gösterileceğinden şüpheleniyorum. İnşa ettiğimde, setup.exe adında bir dosyaya, Wis.application adlı bir dosyaya son veriyorum ve kurmak için "setup" a tıkladığımda, "Click-once uygulama referansı" türünde bir kısayolla bitiriyorum. C: \ Kullanıcılar \ ptom \ AppData \ Roaming \ Microsoft \ Windows \ Başlat Menüsü \ Programlar \ Wis ". Yüklemeyle oluşturulmuş kısayolu ve dosyalarınızı setup.exe ile ilişkilendirerek ilişkilendirmeyi denedim. Dosyaya tıkladığımda, uygulama başlatılır ancak AppDomain.CurrentDomain.SetupInformation.ActivationArguments öğesinin null olduğunu gösterir. ("İşaretler" ifadesiyle, metin kutusunun, boş olup olmadığını görmek için test ettiğim metinle doldurulduğunu kastediyorum). Uygulamayı hata ayıklamadan çalıştırırsam veya yalnızca başlangıç menüsünden çalıştırarak, ActivationArguments öğesinin null olmadığını belirten kod yolunu izleyerek neyi beklediğimi yapar, ancak ActivationData (string []) uzunluğudır İşte
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";
}
}
}
}
}
Teşekkür
Kodunuza yapıştırdım; ApplicationDeployment adlı bir nesneniz vardı; İlk önce bunu kestim ve işe yaradı. İlk testi kullanmak için System.Deployment'a bir başvuru eklemem gerekiyordu. –