[英]Passing Arguments to another WPF Application doesn't work
從一個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,使用Environment在Mainwindow中獲取參數.GetCommandLineArgs()=>不起作用
public MainWindowSecondProgram()
{
InitializeComponent();
string[] args = Environment.GetCommandLineArgs();
foreach (String element in args)
{
MessageBox.Show(element);
}
}
2.使用啟動功能在App中獲取參數=>不起作用
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
foreach (string element in e.Args)
{
MessageBox.Show(element);
}
}
}
現在,如果我將Visual Studio Project文件夾中的Work.exe(不是Work.application)復制到我的桌面,並從
@"C:\Users\User\Desktop\Work.application" to
@"C:\Users\User\Desktop\Work.exe"
然后再次運行我的第一個程序,它可以與第一個功能和第二個功能完美配合。
那么,為什么它可以與EXE一起使用,但不能與已發布的應用程序一起使用呢?
編輯:我通過傳遞兩個參數引發調試器來測試這兩個函數,並且它可以工作,但是沒有通過將其傳遞給已發布的應用程序,只有EXE可以工作。
對於Windows Store應用程序,您需要使用Application.OnLaunched
。 試試這個代碼:
public partial class App : Application
{
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
MessageBox.Show(args.Arguments);
}
}
請注意,您必須自己將該字符串轉換為數組。
要在ClickOnce應用程序中讀取參數,請使用:
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
您可以在這里閱讀更多內容 。
另外,不確定,但是您可能需要通過.appref-ms快捷方式(而不是.application文件本身)運行ClickOnce應用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.