2015-10-08 62 views
0

將兩個參數從一個WPF應用程序傳遞到另一個WPF應用程序時出現問題。 我發佈第二個WPF應用程序到我的桌面,我想用我的第一個WPF應用程序啓動它。將參數傳遞給另一個WPF應用程序不起作用

首先-計劃:

public MainWindow() 
{ 
    InitializeComponent(); 
    ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.FileName = @"C:\Users\User\Desktop\Work.application"; 
    startInfo.Arguments = "test 1234"; 
    Process.Start(startInfo); 
} 

要獲得的參數在第二個節目我嘗試下面的代碼

1.Get參數在主窗口與Environment.GetCommandLineArgs()=>不起作用

在應用
public MainWindowSecondProgram() 
{ 
    InitializeComponent(); 
    string[] args = Environment.GetCommandLineArgs(); 
    foreach (String element in args) 
    { 
     MessageBox.Show(element); 
    } 
} 

2.註冊參數通過使用啓動功能=>不起作用

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     foreach (string element in e.Args) 
     { 
      MessageBox.Show(element); 
     } 
    } 
} 

現在,如果我從我的Visual Studio項目文件夾中的Work.exe(不Work.application)複製到我的桌面和

@"C:\Users\User\Desktop\Work.application" to 
@"C:\Users\User\Desktop\Work.exe" 

更改路徑,然後再次運行我的第一個程序,它可以完美運行與 第一個功能和第二個功能。

那麼,爲什麼它與EXE一起工作,但與已發佈的應用程序沒有關係?

編輯: 我通過傳遞兩個參數來測試這兩個函數拋出調試器,它的工作原理,但不是通過將它傳遞給發佈的應用程序,只有EXE的作品。

+0

[C#ProcessStartInfo參數]的可能重複(http://stackoverflow.com/questions/15454456/c-sharp-processstartinfo-arguments) – MethodMan

+0

@MethodMan我做了同樣的事情,但沒有結果。認爲它是一個不同的問題。他正在談論傳遞給EXE,我正在談論傳遞給應用程序。 (不同?!)EXE適用於我,但不適用於應用程序。 – user3769192

+0

你爲什麼認爲'應用程序'文件可以視爲正常的應用程序?對我來說,這只是一個***設置***文件。這只是爲了方便,是的,它是完全不專業的(甚至通過網絡現在發佈通常要求用戶下載一個完整的安裝文件爲'EXE'或'MSI' - 它看起來更專業,現在用戶足夠聰明,知道如何使用這些設置文件)。因爲它只是一個快速設置文件,所以在實際運行exe文件之前,運行它將首先運行安裝程序(準備exe文件)。你想要什麼是不可能的,***胡話***。 – Hopeless

回答

0

對於Windows應用商店應用,您需要使用Application.OnLaunched。試試這段代碼:

public partial class App : Application 
{ 
    protected override void OnLaunched(LaunchActivatedEventArgs args) 
    { 

      MessageBox.Show(args.Arguments); 
    } 
} 

請注意,您必須自己將該字符串轉換爲數組。

+0

提交:首先感謝您的回答。該應用程序是一個桌面wpf應用程序而不是Windows應用商店應用程序。最好的問候 – user3769192

+0

無論哪種方式,我相信如果你從'Application'繼承,這是獲取參數的方法。 –

0

要閱讀ClickOnce應用程序的參數,使用方法:

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData 

你可以read more here

此外,不確定,但您可能需要通過.appref-ms快捷方式運行ClickOnce應用程序,而不是.application文件本身。

相關問題