@@ -61,24 +61,26 @@ public List<Result> Query(Query query)
61
61
62
62
if ( basedir != null )
63
63
{
64
- var autocomplete = Directory . GetFileSystemEntries ( basedir ) .
65
- Select ( o => dir + Path . GetFileName ( o ) ) .
66
- Where ( o => o . StartsWith ( cmd , StringComparison . OrdinalIgnoreCase ) &&
67
- ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) &&
68
- ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) ) . ToList ( ) ;
64
+ var autocomplete =
65
+ Directory . GetFileSystemEntries ( basedir )
66
+ . Select ( o => dir + Path . GetFileName ( o ) )
67
+ . Where ( o => o . StartsWith ( cmd , StringComparison . OrdinalIgnoreCase ) &&
68
+ ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) &&
69
+ ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) ) . ToList ( ) ;
70
+
69
71
autocomplete . Sort ( ) ;
72
+
70
73
results . AddRange ( autocomplete . ConvertAll ( m => new Result
71
74
{
72
75
Title = m ,
73
76
IcoPath = Image ,
74
77
Action = c =>
75
78
{
76
- var runAsAdministrator = (
79
+ var runAsAdministrator =
77
80
c . SpecialKeyState . CtrlPressed &&
78
81
c . SpecialKeyState . ShiftPressed &&
79
82
! c . SpecialKeyState . AltPressed &&
80
- ! c . SpecialKeyState . WinPressed
81
- ) ;
83
+ ! c . SpecialKeyState . WinPressed ;
82
84
83
85
Execute ( Process . Start , PrepareProcessStartInfo ( m , runAsAdministrator ) ) ;
84
86
return true ;
@@ -113,12 +115,11 @@ private List<Result> GetHistoryCmds(string cmd, Result result)
113
115
IcoPath = Image ,
114
116
Action = c =>
115
117
{
116
- var runAsAdministrator = (
118
+ var runAsAdministrator =
117
119
c . SpecialKeyState . CtrlPressed &&
118
120
c . SpecialKeyState . ShiftPressed &&
119
121
! c . SpecialKeyState . AltPressed &&
120
- ! c . SpecialKeyState . WinPressed
121
- ) ;
122
+ ! c . SpecialKeyState . WinPressed ;
122
123
123
124
Execute ( Process . Start , PrepareProcessStartInfo ( m . Key , runAsAdministrator ) ) ;
124
125
return true ;
@@ -143,12 +144,11 @@ private Result GetCurrentCmd(string cmd)
143
144
IcoPath = Image ,
144
145
Action = c =>
145
146
{
146
- var runAsAdministrator = (
147
+ var runAsAdministrator =
147
148
c . SpecialKeyState . CtrlPressed &&
148
149
c . SpecialKeyState . ShiftPressed &&
149
150
! c . SpecialKeyState . AltPressed &&
150
- ! c . SpecialKeyState . WinPressed
151
- ) ;
151
+ ! c . SpecialKeyState . WinPressed ;
152
152
153
153
Execute ( Process . Start , PrepareProcessStartInfo ( cmd , runAsAdministrator ) ) ;
154
154
return true ;
@@ -168,12 +168,11 @@ private List<Result> ResultsFromlHistory()
168
168
IcoPath = Image ,
169
169
Action = c =>
170
170
{
171
- var runAsAdministrator = (
171
+ var runAsAdministrator =
172
172
c . SpecialKeyState . CtrlPressed &&
173
173
c . SpecialKeyState . ShiftPressed &&
174
174
! c . SpecialKeyState . AltPressed &&
175
- ! c . SpecialKeyState . WinPressed
176
- ) ;
175
+ ! c . SpecialKeyState . WinPressed ;
177
176
178
177
Execute ( Process . Start , PrepareProcessStartInfo ( m . Key , runAsAdministrator ) ) ;
179
178
return true ;
@@ -203,8 +202,21 @@ private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdmin
203
202
case Shell . Cmd :
204
203
{
205
204
info . FileName = "cmd.exe" ;
206
- info . ArgumentList . Add ( _settings . LeaveShellOpen ? "/k" : "/c" ) ;
207
- info . ArgumentList . Add ( command ) ;
205
+ info . Arguments = $ "{ ( _settings . LeaveShellOpen ? "/k" : "/c" ) } { command } ";
206
+
207
+ //// Use info.Arguments instead of info.ArgumentList to enable users better control over the arguments they are writing.
208
+ //// Previous code using ArgumentList, commands needed to be seperated correctly:
209
+ //// Incorrect:
210
+ // info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c");
211
+ // info.ArgumentList.Add(command); //<== info.ArgumentList.Add("mkdir \"c:\\test new\"");
212
+
213
+ //// Correct version should be:
214
+ //info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c");
215
+ //info.ArgumentList.Add("mkdir");
216
+ //info.ArgumentList.Add(@"c:\test new");
217
+
218
+ //https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.argumentlist?view=net-6.0#remarks
219
+
208
220
break ;
209
221
}
210
222
@@ -366,7 +378,7 @@ public List<Result> LoadContextMenus(Result selectedResult)
366
378
Title = context . API . GetTranslation ( "flowlauncher_plugin_cmd_run_as_different_user" ) ,
367
379
Action = c =>
368
380
{
369
- Task . Run ( ( ) => Execute ( ShellCommand . RunAsDifferentUser , PrepareProcessStartInfo ( selectedResult . Title ) ) ) ;
381
+ Task . Run ( ( ) => Execute ( ShellCommand . RunAsDifferentUser , PrepareProcessStartInfo ( selectedResult . Title ) ) ) ;
370
382
return true ;
371
383
} ,
372
384
IcoPath = "Images/user.png"
@@ -396,4 +408,4 @@ public List<Result> LoadContextMenus(Result selectedResult)
396
408
return resultlist ;
397
409
}
398
410
}
399
- }
411
+ }
0 commit comments