У меня есть приложение C # WPF, которое я хочу открыть из другого существующего приложения, написанного на VB.net.Что касается приложения c #, я думаю, что я знаю, как получить параметры командной строки, которые передаются ему двумя различными способами, которые я получил, исследуя Google и используя ответы других.
Приложение.Заголовок xaml
<Application x:Class="ChallengeHandler.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ChallengeHandler"
Startup="Application_Startup">
App.xaml.cs Метод 1
private void Application_Startup(object sender, StartupEventArgs e)
{
string[] args = Environment.GetCommandLineArgs();
if (args.Length < 1)
{
MessageBox.Show("No parameter provided. Failed to run.");
Shutdown();
}
else
{
MainWindow wnd = new MainWindow(args[0]);
wnd.Show();
}
}
Приведенный выше метод приведет к открытию приложения, но не к данным, который опирается на параметр, заполняется.Таким образом, выпадающие списки и прочее в представлениях просто пусты.Это не помогло.
App.xaml.cs Метод 2
private void Application_Startup(object sender, StartupEventArgs e)
{
if (e.Args.Length < 1)
{
MessageBox.Show("No parameter provided. Failed to run.");
Shutdown();
}
else
{
MainWindow wnd = new MainWindow(e.Args[0]);
wnd.Show();
}
}
Этот метод просто показывает сообщение об ошибке каждый раз, так как аргументы пусты.
У меня такое чувство, что проблема в том, что я пытаюсь открыть приложение из приложения VB.NET и передать оттуда строковый параметр в приложение c #.Но у меня нет идей о том, как передать строку, подобную параметру командной строки, из кода VB.net. Вызов из приложения VB.net
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Programs) + "\Microsoft\ChallengeHandler.appref-ms"
Dim pHelp As New ProcessStartInfo
If System.IO.File.Exists(sPath) Then
pHelp.FileName = sPath
pHelp.Arguments = "097"
pHelp.UseShellExecute = True
pHelp.WindowStyle = ProcessWindowStyle.Normal
Dim proc As Process = Process.Start(pHelp)
End If
Я пробовал код VB без
pHelp.UseShellExecute = True
pHelp.WindowStyle = ProcessWindowStyle.Normal
безрезультатно;Я добавил их в надежде, что выполнение оболочки вызовет параметры как параметры командной строки.Я также попробовал это в VB: 2-й метод VB
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Programs) + "\Microsoft\ChallengeHandler.appref-ms"
If System.IO.File.Exists(sPath) Then
System.Diagnostics.Process.Start(sPath, "097")
End If
Любое понимание будет с благодарностью!Спасибо.