У меня есть приложение WPF, которому нужно получить параметр, позволяющий выбрать экран, который должен отображаться.
Это работает как очарование, когда я использую функцию «Аргументы командной строки» в «Project правой кнопкой мыши -> Свойства -> Отладка». Проблема возникает, когда я публикую приложение и пытаюсь передать аргумент, используя CMD, потому что он полностью игнорируется ,
Вот код:
App.xaml.cs класс
private void Application_Startup(object sender, StartupEventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
log.Debug("Paramerters: " + e.Args.Length);
foreach (var parameter in e.Args )
{
log.Debug("Arg " + parameter);
}
var screen = 0;
if (e.Args.Length > 0)
{
if(Int32.TryParse(e.Args[0], out screen))
{
log.Debug("Parameter: " + screen);
} else
{
log.Debug("Invalid parameter : " + e.Args[0]);
}
}
log.Debug("Screen: " + screen);
App.Current.Properties["Screen"] = screen;
log.Debug("Screens count: " + System.Windows.Forms.Screen.AllScreens.Length);
if (screen >= System.Windows.Forms.Screen.AllScreens.Length)
{
log.Debug("Error screens count: " + System.Windows.Forms.Screen.AllScreens.Length);
App.Current.Shutdown();
}
else
{
var screen1 = App.Current.Properties["Screen"];
MainWindow mainWindow = new MainWindow();
var screenBounds = System.Windows.Forms.Screen.AllScreens[screen].Bounds;
mainWindow.Left = screenBounds.Left;
mainWindow.Top = screenBounds.Top;
mainWindow.Show();
mainWindow.WindowState = WindowState.Maximized;
}
}
Я что-то упустил? Я использую следующую строку, чтобы запустить приложение (оно запускается, но аргумент всегда по умолчанию):
AppName 1
Кроме того, у меня наверняка есть более 1 экрана.
Редактировать с выводом логов:
2018-10-31 12: 42: 20,366 [1] Приложение DEBUG - Параметры: 0
2018-10-31 12: 42: 20,396 [1] Приложение DEBUG - Экран: 0
2018-10-31 12: 42: 20,401 [1] Приложение DEBUG - Количество экранов: 2