:: Не фоксом единым
WPF с командной строкой
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Если создать приложение Windows Forms, то в Program.cs видим:

static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}

слегка "допилив", получаем:

static void Main(string[] args)
{
if (args.Length == 0) // агрументов нет - запуск окна
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else // в командной строке есть параметры
{
[...]
}
}

Т.е. если просто ткнуть в exe-шник, выскочит окно. А если запустить с параметром, то программа молча отработает, что то сделав.

Вопрос - как подобное поведение реализовать в WPF?
Ratings: 0 negative/0 positive
WPF с командной строкой
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
На сколько понимаю, в App.xaml указано:

StartupUri="MainWindow.xaml"

Т.е. предотвратить вызов окна MainWindow можно просто удалив эту строку". Затем, надо в App.xaml.xs получить параметры командной строки и вручную вызвать окно MainWindow. Примерно так:

/// <summary>
/// Логика взаимодействия для App.xaml
/// </summary>
public partial class App : Application
{
private static void App_Startup(object sender, StartupEventArgs e)
{
if (e.Args.Length == 0) // агрументов нет - запуск в окне
{
// ?
}
else // в командной строке есть параметры
{
}
}
}

Как именно вызвать MainWindow?
Ratings: 0 negative/0 positive
Re: WPF с командной строкой
SoccerStudio

Сообщений: 5055
Откуда: Подмосковье
Дата регистрации: 28.11.2006
Помнится, у тебя была где-то известная книга Мэтью Макдональда. Думаю, в интернете найти не проблема, ежели чего.
Там, помнится, в разделе про класс App есть некая идея про то, как делать "приложения одного окна". Ну, как Эксель, например - сколько ни кликай на файлы xls, они все открываются в одном и том же окне, в отличие от Ворда, который каждый документ открывает в своем собственном окне. Если правильно помню, там описывается идея использовать класс из Visual Basic в качестве своеобразного "прокси".
Поищи, если не найдешь, я потом какой-нибудь код изображу для примера.

ЗЫ. Хотя, в твоем конкретном случае и этого, похоже, не надо, но все равно, в разделе про класс App все это есть - и про параметры, и про вызов окон.


------------------
"Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов




Исправлено 5 раз(а). Последнее : SoccerStudio, 17.02.17 15:54
Ratings: 0 negative/0 positive
Re: WPF с командной строкой
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Книжка - вот она(по 3.5). На 82-й странице "Обработка аргументов командной строки". Про "Приложение одного экземпляра" - стр.86. Сейчас глянем...
Ratings: 0 negative/0 positive
Re: WPF с командной строкой
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Вот так работает:

/// <summary>
/// Логика взаимодействия для App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args.Length == 0) // агрументов нет - запуск в окне
{
MainWindow win = new MainWindow();
win.Show();
}
else // в командной строке есть параметры
{
}
}
}
Ratings: 0 negative/0 positive
Re: WPF с командной строкой
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Работает - но криво, процессы подвисают. Нужна какая то команда, которая будет программу завершать.
Ratings: 0 negative/0 positive
Re: WPF с командной строкой
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Надо так:

public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args.Length == 0) // агрументов нет - запуск в окне
{
MainWindow win = new MainWindow();
win.Show();
}
else // в командной строке есть параметры
{
// что то делаем
this.Shutdown();
}
}
}
Ratings: 0 negative/0 positive
Re: WPF с командной строкой
nah-nah2017

Сообщений: 18
Дата регистрации: 20.02.2017
Да нах... приложение наверняка имеет метод типа Quit, который и надо дернуть, если не создаешь окно. Или нет?

PS. Точно, шат даун.



Исправлено 1 раз(а). Последнее : nah-nah2017, 20.02.17 13:50
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 9 (Гостей: 9)

© 2000-2024 Fox Club 
Яндекс.Метрика