66using  System ; 
77using  System . Collections . Generic ; 
88using  System . Diagnostics . Eventing . Reader ; 
9+ using  System . IO ; 
910using  System . Reflection . Metadata . Ecma335 ; 
1011using  WEventViewer . Model ; 
1112using  WEventViewer . ViewModel ; 
@@ -20,11 +21,12 @@ class WEventViewOptions
2021        public  string  LogType  =  "" ; 
2122        public  List < int >  LogLevels  =  new  List < int > ( ) ; 
2223    } 
24+     static   bool  ShowHelp  =  false ; 
2325    static   OptionSet  CreateOptionSet ( OpenLogWindowViewModel  vm ) 
2426    { 
2527        var  set  =  new  OptionSet ( ) 
26-             . Add ( "n=|logname=" ,  x =>  vm . LogName  =  x ) 
27-             . Add ( "t=|logtype=" ,  x => 
28+             . Add ( "n=|logname=" ,  "LogName or Exported EventLog file path(*.evtx)" ,   x =>  vm . LogName  =  x ) 
29+             . Add ( "t=|logtype=" ,  "LogName kind, 'logname': from Windows EventLog store, 'filepath': exported Windows Event Log file(*.evtx) " ,   x => 
2830            { 
2931                vm . CurrentSelected  =  x . ToLower ( )  switch 
3032                { 
@@ -33,7 +35,7 @@ static OptionSet CreateOptionSet(OpenLogWindowViewModel vm)
3335                    _ =>  throw  new  ArgumentException ( "invalid logtype" ) 
3436                } ; 
3537            } ) 
36-             . Add ( "l=|loglevel=" ,  x => 
38+             . Add ( "l=|loglevel=" ,  "log severity: availables = critical,error,warning,information,verbose" ,   x => 
3739            { 
3840                switch ( x . ToLower ( ) ) 
3941                { 
@@ -55,26 +57,27 @@ static OptionSet CreateOptionSet(OpenLogWindowViewModel vm)
5557                } 
5658                vm . UseFilterByLevel  =  true ; 
5759            } ) 
58-             . Add ( "p=|provider=" ,  x =>  vm . ProviderNames  =  x ) 
59-             . Add ( "b=|begin=" ,  x => 
60+             . Add ( "p=|provider=" ,  "log provider name" ,   x =>  vm . ProviderNames  =  x ) 
61+             . Add ( "b=|begin=" ,  "log begin datetime" ,   x => 
6062            { 
6163                DateTime  dt  =  DateTime . Parse ( x ) ; 
6264                vm . BeginDate  =  dt . ToString ( "yyyy-MM-dd" ) ; 
6365                vm . BeginTime  =  dt . ToString ( "HH:mm:ss" ) ; 
6466                vm . UseTimeCreated  =  true ; 
6567            } ) 
66-             . Add ( "e=|end=" ,  x => 
68+             . Add ( "e=|end=" ,  "log end datetime" ,   x => 
6769            { 
6870                DateTime  dt  =  DateTime . Parse ( x ) ; 
6971                vm . EndDate  =  dt . ToString ( "yyyy-MM-dd" ) ; 
7072                vm . EndTime  =  dt . ToString ( "HH:mm:ss" ) ; 
7173                vm . UseTimeCreated  =  true ; 
7274            } ) 
73-             . Add ( "r=|raw=" ,  x => 
75+             . Add ( "r=|raw=" ,  "log filtering query by raw filter string" ,   x => 
7476            { 
7577                vm . RawQuery  =  x ; 
7678                vm . UseRawQuery  =  true ; 
7779            } ) 
80+             . Add ( "h|help" ,  x =>  ShowHelp  =  true ) 
7881            ; 
7982        return  set ; 
8083    } 
@@ -89,19 +92,24 @@ public override void OnFrameworkInitializationCompleted()
8992        collection . AddSingleton < EventLogRepository > ( ) ; 
9093        collection . AddSingleton < IViewModelFactory ,  ViewModelFactoryServiceProvider > ( provider =>  new  ViewModelFactoryServiceProvider ( provider ) ) ; 
9194        collection . AddSingleton < MainWindowViewModel > ( ) ; 
92-         if  ( ApplicationLifetime  is  IClassicDesktopStyleApplicationLifetime  classic ) 
93-         { 
94-             collection . AddSingleton < OpenLogWindowViewModel > ( provider => 
95-             { 
96-                 var  vm  =  new  OpenLogWindowViewModel ( ) ; 
97-                 if  ( classic . Args  !=  null ) 
98-                 { 
99-                     var  optset  =  CreateOptionSet ( vm ) ; 
100-                     optset . Parse ( classic . Args ) ; 
101-                 } 
102-                 return  vm ; 
103-             } ) ; 
104-         } 
95+         collection . AddSingleton < OpenLogWindowViewModel > ( ) ; 
96+         //if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime classic) 
97+         //{ 
98+         //    collection.AddSingleton<OpenLogWindowViewModel>(provider => 
99+         //    { 
100+         //        var vm = new OpenLogWindowViewModel(); 
101+         //        if (classic.Args != null) 
102+         //        { 
103+         //            var optset = CreateOptionSet(vm); 
104+         //            var remaining = optset.Parse(classic.Args); 
105+         //            if(remaining.Count > 0) 
106+         //            { 
107+         //                vm.LogName = remaining[0]; 
108+         //            } 
109+         //        } 
110+         //        return vm; 
111+         //    }); 
112+         //} 
105113        collection . AddSingleton < MainWindow > ( provider => 
106114        { 
107115            return  new  MainWindow ( provider . GetRequiredService < IViewModelFactory > ( ) ) 
@@ -116,11 +124,37 @@ public override void OnFrameworkInitializationCompleted()
116124        collection . AddTransient < LogNameViewModel > ( ) ; 
117125        collection . AddTransient < AboutViewModel > ( ) ; 
118126        collection . AddTransient < DetailedLogViewModel > ( ) ; 
127+         collection . AddTransient < HelpWindowViewModel > ( provider => 
128+         { 
129+             var  optset  =  CreateOptionSet ( provider . GetRequiredService < OpenLogWindowViewModel > ( ) ) ; 
130+             using  var  sw  =  new  StringWriter ( ) ; 
131+             optset . WriteOptionDescriptions ( sw ) ; 
132+             return  new  HelpWindowViewModel ( )  {  HelpMessage  =  sw . ToString ( )  } ; 
133+         } ) ; 
134+         collection . AddTransient < HelpWindow > ( provider =>  new  HelpWindow ( )  {  DataContext  =  provider . GetRequiredService < HelpWindowViewModel > ( )  } ) ; 
119135        var  serviceProvider  =  collection . BuildServiceProvider ( ) ; 
120-         var  vm  =  serviceProvider . GetRequiredService < MainWindowViewModel > ( ) ; 
136+         //var vm = serviceProvider.GetRequiredService<MainWindowViewModel>(); 
137+         var  w  =  serviceProvider . GetRequiredService < MainWindow > ( ) ; 
121138        if  ( ApplicationLifetime  is  IClassicDesktopStyleApplicationLifetime  desktop ) 
122139        { 
123-             desktop . MainWindow  =  serviceProvider . GetRequiredService < MainWindow > ( ) ; 
140+             var  openLogVM  =  serviceProvider . GetRequiredService < OpenLogWindowViewModel > ( ) ; 
141+             var  optset  =  CreateOptionSet ( openLogVM ) ; 
142+             if  ( desktop . Args  !=  null ) 
143+             { 
144+                 var  remaining  =  optset . Parse ( desktop . Args ) ; 
145+                 if ( remaining . Count  >  0 ) 
146+                 { 
147+                     openLogVM . LogName  =  remaining [ 0 ] ; 
148+                 } 
149+             } 
150+             if  ( ShowHelp ) 
151+             { 
152+                 desktop . MainWindow  =  serviceProvider . GetRequiredService < HelpWindow > ( ) ; 
153+             } 
154+             else 
155+             { 
156+                 desktop . MainWindow  =  w ; 
157+             } 
124158        } 
125159        else  if  ( ApplicationLifetime  is  ISingleViewApplicationLifetime  singleViewPlatform ) 
126160        { 
0 commit comments