英文:
winui3 command line arguments not working
问题
我正在进行一个WinUI3(打包)项目。
我正在尝试在启动新进程时传递参数
但由于某种原因,要么是启动进程的方法,要么是读取参数的方法不起作用。
这是我已经尝试过的多种方法。
启动进程
Process.Start(Environment.ProcessPath, StartupMethod.UPLOAD);
或者
ProcessStartInfo processStartInfo = new()
{
FileName = Environment.ProcessPath,
Arguments = StartupMethod.UPLOAD
};
Process.Start(processStartInfo);
读取参数
string[] arguments = args.Arguments.Split(" ", StringSplitOptions.RemoveEmptyEntries);
或者
string[] arguments = Environment.GetCommandLineArgs();
但似乎没有一种组合起作用。
此外,我尝试手动运行Environment.ProcessPath,但由于某种原因,.exe文件没有运行。
英文:
I am working on a winui3 (packaged) project.
I am trying to pass arguments while starting a new process
But for some reason, either the process starting method or arguments reading method isn't working.
These are the multiple ways I already tried.
To start the process
Process.Start(Environment.ProcessPath, StartupMethod.UPLOAD);
or
ProcessStartInfo processStartInfo = new()
{
FileName = Environment.ProcessPath,
Arguments = StartupMethod.UPLOAD
};
Process.Start(processStartInfo);
To read the arguments
string[] arguments = args.Arguments.Split(" ", StringSplitOptions.RemoveEmptyEntries);
or
string[] arguments = Environment.GetCommandLineArgs();
But none of the combinations seems to be working.
Also, I tried to run the Environment.ProcessPath manually, but the .exe file isn't running for some reason.
答案1
得分: 0
开始这个过程
Process.Start(Environment.ProcessPath, "参数");
读取参数
string[] 参数 = Environment.GetCommandLineArgs();
// `Environment.GetCommandLineArgs()` 返回的第一个位置是文件名,所以可能需要跳过它
英文:
To start the process
Process.Start(Environment.ProcessPath, "Arguments");
To read the arguments
string[] arguments = Environment.GetCommandLineArgs();
The Environment.GetCommandLineArgs()
return filename at the first position, so might want to skip that
答案2
得分: 0
这对我来说有效。
开始进程
Process P = new();
P.StartInfo.UseShellExecute = true;
P.StartInfo.Verb = "runas";
P.StartInfo.FileName = Environment.ProcessPath;
P.StartInfo.Arguments = "这是一个测试";
P.Start();
在App.xaml.cs中读取参数
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
m_window.Activate();
string[] arguments = Environment.GetCommandLineArgs();
if (arguments.Length > 1)
{
//做一些事情
}
}
英文:
This works for me.
Start the process
Process P = new();
P.StartInfo.UseShellExecute = true;
P.StartInfo.Verb = "runas";
P.StartInfo.FileName = Environment.ProcessPath;
P.StartInfo.Arguments = "This is a Test";
P.Start();
Read the arguments in App.xaml.cs
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
m_window.Activate();
string[] arguments = Environment.GetCommandLineArgs();
if (arguments.Length > 1)
{
//do something
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论