반응형
WPF 명령줄
명령줄 인수를 사용하는 WPF 애플리케이션을 작성하려고 합니다.인수를 지정하지 않으면 메인창이 나타납니다.일부 특정 명령줄 인수의 경우 코드를 GUI 없이 실행하고 종료해야 합니다.어떻게 해야 하는지 어떤 제안이라도 해주시면 감사하겠습니다.
먼저 App.xaml 파일 상단에서 다음 속성을 찾아 제거합니다.
StartupUri="Window1.xaml"
즉, 응용 프로그램이 자동으로 기본 창을 인스턴스화하고 표시하지 않습니다.
그런 다음 앱 클래스의 OnStartup 메서드를 재정의하여 다음 논리를 수행합니다.
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if ( /* test command-line params */ )
{
/* do stuff without a GUI */
}
else
{
new Window1().ShowDialog();
}
this.Shutdown();
}
Matt의 솔루션에서 자신의 주장이 존재하는지 확인하려면 테스트에 다음을 사용하십시오.
e.Args.Contains("MyTriggerArg")
위의 솔루션의 조합(용).NET 4.0+(콘솔 출력):
[DllImport("Kernel32.dll")]
public static extern bool AttachConsole(int processID);
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args.Contains("--GUI"))
{
// Launch GUI and pass arguments in case you want to use them.
new MainWindow(e).ShowDialog();
}
else
{
//Do command line stuff
if (e.Args.Length > 0)
{
string parameter = e.Args[0].ToString();
WriteToConsole(parameter);
}
}
Shutdown();
}
public void WriteToConsole(string message)
{
AttachConsole(-1);
Console.WriteLine(message);
}
Main Window의 컨스트럭터를 변경하여 인수를 받아들입니다.
public partial class MainWindow : Window
{
public MainWindow(StartupEventArgs e)
{
InitializeComponent();
}
}
다음 항목을 삭제하는 것을 잊지 마십시오.
StartupUri="MainWindow.xaml"
에서 다음 항목을 사용할 수 있습니다.app.xaml.cs
파일:
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow WindowToDisplay = new MainWindow();
if (e.Args.Length == 0)
{
WindowToDisplay.Show();
}
else
{
string FirstArgument = e.Args[0].ToString();
string SecondArgument = e.Args[1].ToString();
//your logic here
}
}
언급URL : https://stackoverflow.com/questions/426421/wpf-command-line
반응형
'programing' 카테고리의 다른 글
데이터그램 열 가시성 MVVM 바인딩 (0) | 2023.04.17 |
---|---|
C#에서 Excel 워크북을 만들 때 클래스가 등록되지 않음 오류 발생 (0) | 2023.04.17 |
커밋 메시지 내 GitHub의 이슈 번호 링크 (0) | 2023.04.17 |
읽기 전용 종속성 속성을 생성하려면 어떻게 해야 합니까? (0) | 2023.04.17 |
Swift에서 목록 항목의 인덱스를 찾는 방법은 무엇입니까? (0) | 2023.04.17 |