6
6
using System ;
7
7
using System . Collections . Generic ;
8
8
using System . Diagnostics . Eventing . Reader ;
9
+ using System . IO ;
9
10
using System . Reflection . Metadata . Ecma335 ;
10
11
using WEventViewer . Model ;
11
12
using WEventViewer . ViewModel ;
@@ -20,11 +21,12 @@ class WEventViewOptions
20
21
public string LogType = "" ;
21
22
public List < int > LogLevels = new List < int > ( ) ;
22
23
}
24
+ static bool ShowHelp = false ;
23
25
static OptionSet CreateOptionSet ( OpenLogWindowViewModel vm )
24
26
{
25
27
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 =>
28
30
{
29
31
vm . CurrentSelected = x . ToLower ( ) switch
30
32
{
@@ -33,7 +35,7 @@ static OptionSet CreateOptionSet(OpenLogWindowViewModel vm)
33
35
_ => throw new ArgumentException ( "invalid logtype" )
34
36
} ;
35
37
} )
36
- . Add ( "l=|loglevel=" , x =>
38
+ . Add ( "l=|loglevel=" , "log severity: availables = critical,error,warning,information,verbose" , x =>
37
39
{
38
40
switch ( x . ToLower ( ) )
39
41
{
@@ -55,26 +57,27 @@ static OptionSet CreateOptionSet(OpenLogWindowViewModel vm)
55
57
}
56
58
vm . UseFilterByLevel = true ;
57
59
} )
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 =>
60
62
{
61
63
DateTime dt = DateTime . Parse ( x ) ;
62
64
vm . BeginDate = dt . ToString ( "yyyy-MM-dd" ) ;
63
65
vm . BeginTime = dt . ToString ( "HH:mm:ss" ) ;
64
66
vm . UseTimeCreated = true ;
65
67
} )
66
- . Add ( "e=|end=" , x =>
68
+ . Add ( "e=|end=" , "log end datetime" , x =>
67
69
{
68
70
DateTime dt = DateTime . Parse ( x ) ;
69
71
vm . EndDate = dt . ToString ( "yyyy-MM-dd" ) ;
70
72
vm . EndTime = dt . ToString ( "HH:mm:ss" ) ;
71
73
vm . UseTimeCreated = true ;
72
74
} )
73
- . Add ( "r=|raw=" , x =>
75
+ . Add ( "r=|raw=" , "log filtering query by raw filter string" , x =>
74
76
{
75
77
vm . RawQuery = x ;
76
78
vm . UseRawQuery = true ;
77
79
} )
80
+ . Add ( "h|help" , x => ShowHelp = true )
78
81
;
79
82
return set ;
80
83
}
@@ -89,19 +92,24 @@ public override void OnFrameworkInitializationCompleted()
89
92
collection . AddSingleton < EventLogRepository > ( ) ;
90
93
collection . AddSingleton < IViewModelFactory , ViewModelFactoryServiceProvider > ( provider => new ViewModelFactoryServiceProvider ( provider ) ) ;
91
94
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
+ //}
105
113
collection . AddSingleton < MainWindow > ( provider =>
106
114
{
107
115
return new MainWindow ( provider . GetRequiredService < IViewModelFactory > ( ) )
@@ -116,11 +124,37 @@ public override void OnFrameworkInitializationCompleted()
116
124
collection . AddTransient < LogNameViewModel > ( ) ;
117
125
collection . AddTransient < AboutViewModel > ( ) ;
118
126
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 > ( ) } ) ;
119
135
var serviceProvider = collection . BuildServiceProvider ( ) ;
120
- var vm = serviceProvider . GetRequiredService < MainWindowViewModel > ( ) ;
136
+ //var vm = serviceProvider.GetRequiredService<MainWindowViewModel>();
137
+ var w = serviceProvider . GetRequiredService < MainWindow > ( ) ;
121
138
if ( ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop )
122
139
{
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
+ }
124
158
}
125
159
else if ( ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform )
126
160
{
0 commit comments