13 changed files
BExplorer/BetterExplorer | ||
ArchiveView | ||
ArchiveProcressScreen.cs | ||
MainWindow.xaml.cs | ||
BreadcrumbBar/BreadcrumbBar | ||
BreadcrumbItem.cs | ||
Shell | ||
FileOperation | ||
AsyncUnbuffCopy.cs | ||
FileOperation.xaml.cs | ||
Interop | ||
IContextMenu.cs | ||
KnownFolders | ||
FileSystemKnownFolder.cs | ||
Defaults.cs | ||
ShellViewEx.cs | ||
SyncQueue.cs | ||
WpfControlLibrary1 | ||
SearchBox.xaml.cs | ||
BetterExplorer1.psess | ||
BetterExplorer140808(6).vsp + | ||
ArchiveProcressScreen.cs
/BExplorer/BetterExplorer/ArchiveView/ArchiveProcressScreen.cs-5+1/BExplorer/BetterExplorer/ArchiveView/ArchiveProcressScreen.cs
Add comment 412 }
Add comment 413 }
Add comment 414
Add comment 415 Minus [Obsolete("Should be changed into a Tuple<string>")]
Add comment 416 415 public class ArchiveEventArgs {
Add comment 417 416
Add comment 418 Minus public string OutputLocation {
Add comment 419 Minus get;
Add comment 420 Minus private set;
Add comment 421 Minus }
Add comment 417 Plus public string OutputLocation { get; private set; }
Add comment 422 418
Add comment 423 419
Add comment 424 420 public ArchiveEventArgs(string output) {
MainWindow.xaml.cs
/BExplorer/BetterExplorer/MainWindow.xaml.cs-6+5/BExplorer/BetterExplorer/MainWindow.xaml.cs
Add comment 55 [Obsolete("Can remove move this!!! Someone should!!!")]
Add comment 56 public bool IsCalledFromLoading;
Add comment 57
Add comment 58 Minus [Obsolete("Find a way to remove this!")]
Add comment 59 58 public bool isOnLoad;
Add comment 60 59
Add comment 61 60
Add comment 62 Minus [Obsolete("Does nothing")]
Add comment 63 Minus private bool IsCloseLastTabCloseApp;
Add comment 61 Plus //[Obsolete("Does nothing")]
Add comment 62 Plus //private bool IsCloseLastTabCloseApp;
Add comment 64 63
Add comment 65 64 [Obsolete("Does nothing")]
Add comment 66 65 private void chkIsLastTabCloseApp_Click(object sender, RoutedEventArgs e) {
Add comment 67 Minus var b = this.chkIsLastTabCloseApp.IsChecked;
Add comment 68 Minus if (b != null)
Add comment 69 Minus this.IsCloseLastTabCloseApp = b.Value;
Add comment 66 Plus //var b = this.chkIsLastTabCloseApp.IsChecked;
Add comment 67 Plus //if (b != null)
Add comment 68 Plus // this.IsCloseLastTabCloseApp = b.Value;
Add comment 70 69 }
Add comment 71 70
Add comment 72 71
BreadcrumbItem.cs
/BreadcrumbBar/BreadcrumbBar/BreadcrumbItem.cs+2/BreadcrumbBar/BreadcrumbBar/BreadcrumbItem.cs
Add comment 585 public object GetTraceItem(ShellItem trace) {
Add comment 586 //this.ApplyTemplate();
Add comment 587 return Items.OfType<ShellItem>().SingleOrDefault(s => s!=null && s.GetHashCode() == trace.GetHashCode());
Add comment 588 Plus
Add comment 589 Plus //TODO: Can we delete the below dead code?
Add comment 588 590 foreach (object item in Items.OfType<ShellItem>().ToArray()) {
Add comment 589 591 BreadcrumbItem bcItem = ContainerFromItem(item);
Add comment 590 592 var rootValue = bcItem.DataContext as ShellItem;
AsyncUnbuffCopy.cs
/Shell/FileOperation/AsyncUnbuffCopy.cs-121+35/Shell/FileOperation/AsyncUnbuffCopy.cs
Add comment 7 using System.Threading;
Add comment 8 using System.Threading.Tasks;
Add comment 9
Add comment 10 Minus namespace BExplorer.Shell
Add comment 11 Minus {
Add comment 12 Minus internal class AsyncUnbuffCopy : IDisposable
Add comment 13 Minus {
Add comment 10 Plus namespace BExplorer.Shell {
Add comment 11 Plus internal class AsyncUnbuffCopy : IDisposable {
Add comment 14 12 #region setup
Add comment 15 13 //private static readonly ILog Log = LogManager.GetLogger(typeof(AsyncUnbuffCopy));
Add comment 16 14 //private readonly bool _isDebugEnabled = Log.IsDebugEnabled;
Add comment 71 69 private byte[] _writehash;
Add comment 72 70 #endregion
Add comment 73 71
Add comment 74 Minus public void Dispose()
Add comment 75 Minus {
Add comment 76 Minus if (_infile != null)
Add comment 77 Minus {
Add comment 72 Plus public void Dispose() {
Add comment 73 Plus if (_infile != null) {
Add comment 78 74 _infile.Dispose();
Add comment 79 75 _infile = null;
Add comment 80 76 }
Add comment 81 Minus if (_outfile != null)
Add comment 82 Minus {
Add comment 77 Plus if (_outfile != null) {
Add comment 83 78 _outfile.Dispose();
Add comment 84 79 _outfile = null;
Add comment 85 80 }
Add comment 86 Minus if (blockFO != null)
Add comment 87 Minus {
Add comment 81 Plus if (blockFO != null) {
Add comment 88 82 blockFO.Dispose();
Add comment 89 83 blockFO = null;
Add comment 90 84 }
Add comment 91 85 }
Add comment 92 Minus private void AsyncReadFile()
Add comment 93 Minus {
Add comment 86 Plus private void AsyncReadFile() {
Add comment 94 87
Add comment 95 88 var md5 = MD5.Create();
Add comment 96 89
Add comment 97 90 //open input file
Add comment 98 Minus try
Add comment 99 Minus {
Add comment 100 91 _infile = new FileStream(_inputfile, FileMode.Open, FileAccess.Read, FileShare.None, CopyBufferSize,
Add comment 101 92 FileFlagNoBuffering | FileOptions.SequentialScan);
Add comment 102 Minus }
Add comment 103 Minus catch (Exception e)
Add comment 104 Minus {
Add comment 105 Minus //if (_isDebugEnabled)
Add comment 106 Minus //{
Add comment 107 Minus // //Log.Debug("Failed to open for read");
Add comment 108 Minus // //Log.Debug(e);
Add comment 109 Minus //}
Add comment 110 Minus throw;
Add comment 111 Minus }
Add comment 93 Plus
Add comment 112 94 //if we have data read it
Add comment 113 Minus while ((_bytesRead1 = _infile.Read(Buffer1, 0, CopyBufferSize)) != 0)
Add comment 114 Minus {
Add comment 95 Plus while ((_bytesRead1 = _infile.Read(Buffer1, 0, CopyBufferSize)) != 0) {
Add comment 115 96 blockFO.WaitOne();
Add comment 116 97 if (_bytesRead1 < CopyBufferSize)
Add comment 117 98
Add comment 119 100 md5.TransformBlock(Buffer1, 0, _bytesRead1, Buffer1, 0);
Add comment 120 101
Add comment 121 102 Monitor.Enter(_locker1);
Add comment 122 Minus try
Add comment 123 Minus {
Add comment 103 Plus try {
Add comment 124 104 while (_buffer2Dirty) Monitor.Wait(_locker1);
Add comment 125 105 Buffer.BlockCopy(Buffer1, 0, Buffer2, 0, _bytesRead1);
Add comment 126 106
Add comment 134 114 // //Log.Debug("Total Read : " + _totalbytesread);
Add comment 135 115 //}
Add comment 136 116 }
Add comment 137 Minus catch (Exception e)
Add comment 138 Minus {
Add comment 139 Minus //Log.Fatal("Read Failed.");
Add comment 140 Minus //Log.Fatal(e);
Add comment 117 Plus catch {
Add comment 141 118 _readfailed = true;
Add comment 142 119 throw;
Add comment 143 120 }
Add comment 145 122
Add comment 146 123 }
Add comment 147 124 // For last block:
Add comment 148 Minus if (_checksum)
Add comment 149 Minus {
Add comment 125 Plus if (_checksum) {
Add comment 150 126 md5.TransformFinalBlock(Buffer1, 0, _bytesRead1);
Add comment 151 127 _readhash = md5.Hash;
Add comment 152 128 }
Add comment 156 132 _infile.Dispose();
Add comment 157 133 }
Add comment 158 134
Add comment 159 Minus private void AsyncWriteFile()
Add comment 160 Minus {
Add comment 135 Plus private void AsyncWriteFile() {
Add comment 161 136 //open file for write unbuffered and set length to prevent growth and file fragmentation
Add comment 162 Minus try
Add comment 163 Minus {
Add comment 164 137 _outfile = new FileStream(_outputfile, FileMode.Create, FileAccess.Write, FileShare.None, 8,
Add comment 165 138 FileOptions.WriteThrough | FileFlagNoBuffering);
Add comment 166 139
Add comment 167 140 //set file size to minimum of one buffer to cut down on fragmentation
Add comment 168 141 _outfile.SetLength((long)(_infilesize > CopyBufferSize ? (Math.Ceiling((double)_infilesize / CopyBufferSize) * CopyBufferSize) : CopyBufferSize));
Add comment 169 Minus }
Add comment 170 Minus catch (Exception e)
Add comment 171 Minus {
Add comment 172 Minus //Log.Fatal("Failed to open for write unbuffered");
Add comment 173 Minus //Log.Fatal(e);
Add comment 174 Minus throw;
Add comment 175 Minus }
Add comment 176 142
Add comment 143 Plus
Add comment 177 144 var pctinc = 0.0;
Add comment 178 145 var progress = pctinc;
Add comment 179 146
Add comment 180 147 //progress stuff
Add comment 181 Minus if (_reportprogress)
Add comment 182 Minus {
Add comment 148 Plus if (_reportprogress) {
Add comment 183 149 //if (_isDebugEnabled)
Add comment 184 150 //{
Add comment 185 151 // //Log.Debug("Report Progress : True");
Add comment 191 157 // //Log.Debug("_totalbyteswritten : " + _totalbyteswritten);
Add comment 192 158 // //Log.Debug("_infilesize - CopyBufferSize: " + (_infilesize - CopyBufferSize));
Add comment 193 159 //}
Add comment 194 Minus while ((_totalbyteswritten < _infilesize) && !_readfailed)
Add comment 195 Minus {
Add comment 160 Plus while ((_totalbyteswritten < _infilesize) && !_readfailed) {
Add comment 196 161 blockFO.WaitOne();
Add comment 197 Minus lock (_locker1)
Add comment 198 Minus {
Add comment 162 Plus lock (_locker1) {
Add comment 199 163 while (!_buffer2Dirty) Monitor.Wait(_locker1);
Add comment 200 164 Buffer.BlockCopy(Buffer2, 0, Buffer3, 0, CopyBufferSize);
Add comment 201 165 _buffer2Dirty = false;
Add comment 202 166 Monitor.PulseAll(_locker1);
Add comment 203 167 //fancy dan in place percent update on each write.
Add comment 204 168
Add comment 205 Minus if (_reportprogress)
Add comment 206 Minus {
Add comment 169 Plus if (_reportprogress) {
Add comment 207 170 Console.SetCursorPosition(_origCol, _origRow);
Add comment 208 Minus if (progress < 101 - pctinc)
Add comment 209 Minus {
Add comment 171 Plus if (progress < 101 - pctinc) {
Add comment 210 172 progress = progress + pctinc;
Add comment 211 173 Console.Write("%{0}", Math.Round(progress, 0));
Add comment 212 174 }
Add comment 213 175 }
Add comment 214 176 }
Add comment 215 Minus try
Add comment 216 Minus {
Add comment 177 Plus
Add comment 217 178 _outfile.Write(Buffer3, 0, CopyBufferSize);
Add comment 218 Minus }
Add comment 219 Minus catch (Exception e)
Add comment 220 Minus {
Add comment 221 Minus //Log.Fatal("Write Unbuffered Failed");
Add comment 222 Minus //Log.Fatal(e);
Add comment 223 Minus throw;
Add comment 224 Minus }
Add comment 179 Plus
Add comment 225 180 _totalbyteswritten = _totalbyteswritten + CopyBufferSize;
Add comment 226 181 //if (_isDebugEnabled)
Add comment 227 182 //{
Add comment 233 188 _outfile.Close();
Add comment 234 189 _outfile.Dispose();
Add comment 235 190
Add comment 236 Minus try
Add comment 237 Minus {
Add comment 238 191 //if (_isDebugEnabled)
Add comment 239 192 //{
Add comment 240 193 // //Log.Debug("Open File Set Length");
Add comment 245 198 _outfile.Close();
Add comment 246 199 _outfile.Dispose();
Add comment 247 200 }
Add comment 248 Minus catch (Exception e)
Add comment 249 Minus {
Add comment 250 Minus //if (_isDebugEnabled)
Add comment 251 Minus //{
Add comment 252 Minus // //Log.Debug("Failed to open for write set length");
Add comment 253 Minus // //Log.Debug(e);
Add comment 254 Minus //}
Add comment 255 Minus throw;
Add comment 256 Minus }
Add comment 257 Minus }
Add comment 258 201
Add comment 259 Minus public int AsyncCopyFileUnbuffered(string inputfile, string outputfile, bool overwrite, bool movefile, bool checksum, int buffersize, bool reportprogress, int bytessecond)
Add comment 260 Minus {
Add comment 202 Plus public int AsyncCopyFileUnbuffered(string inputfile, string outputfile, bool overwrite, bool movefile, bool checksum, int buffersize, bool reportprogress, int bytessecond) {
Add comment 261 203 //if (_isDebugEnabled)
Add comment 262 204 //{
Add comment 263 205 // Log.Error("Enter Normal Method");
Add comment 280 222 _outputfile = outputfile;
Add comment 281 223
Add comment 282 224 //if the overwrite flag is set to false check to see if the file is there.
Add comment 283 Minus if (File.Exists(outputfile) && !overwrite)
Add comment 284 Minus {
Add comment 225 Plus if (File.Exists(outputfile) && !overwrite) {
Add comment 285 226 //Log.Debug("Destination File Exists!");
Add comment 286 227 return 0;
Add comment 287 228 }
Add comment 288 229
Add comment 289 230 //create the directory if it doesn't exist
Add comment 290 231 if (!File.Exists(outputfile))
Add comment 291 Minus if (!Directory.Exists(outputfile))
Add comment 292 Minus {
Add comment 293 Minus try
Add comment 294 Minus {
Add comment 232 Plus if (!Directory.Exists(outputfile)) {
Add comment 295 233 // ReSharper disable AssignNullToNotNullAttribute
Add comment 296 234 Directory.CreateDirectory(Path.GetDirectoryName(outputfile));
Add comment 297 235 // ReSharper restore AssignNullToNotNullAttribute
Add comment 298 236 }
Add comment 299 Minus catch (Exception e)
Add comment 300 Minus {
Add comment 301 Minus //Log.Fatal("Create Directory Failed.");
Add comment 302 Minus //Log.Fatal(e);
Add comment 303 Minus throw;
Add comment 304 Minus }
Add comment 305 Minus }
Add comment 306 237 //get input file size for later use
Add comment 307 238 var inputFileInfo = new FileInfo(_inputfile);
Add comment 308 239 _infilesize = inputFileInfo.Length;
Add comment 348 279 var writefile = new Thread(AsyncWriteFile) { Name = "WriteThread", IsBackground = true };
Add comment 349 280 writefile.Start();
Add comment 350 281
Add comment 351 Minus if (_reportprogress)
Add comment 352 Minus {
Add comment 282 Plus if (_reportprogress) {
Add comment 353 283 //set fancy curor position
Add comment 354 284 _origRow = Console.CursorTop;
Add comment 355 285 _origCol = Console.CursorLeft;
Add comment 366 296 //Log.InfoFormat("Async File {0} Done", _inputfile);
Add comment 367 297 //}
Add comment 368 298
Add comment 369 Minus if (checksum)
Add comment 370 Minus {
Add comment 299 Plus if (checksum) {
Add comment 371 300 //if (_isDebugEnabled)
Add comment 372 301 //{
Add comment 373 302 // //Log.Debug("Checksum Destination File Started");
Add comment 379 308 //hang out until the checksums are done.
Add comment 380 309 checksumwritefile.Join();
Add comment 381 310
Add comment 382 Minus if (BitConverter.ToString(_readhash) == BitConverter.ToString(_writehash))
Add comment 383 Minus {
Add comment 311 Plus if (BitConverter.ToString(_readhash) == BitConverter.ToString(_writehash)) {
Add comment 384 312 //Log.Info("Checksum Verified");
Add comment 385 313 }
Add comment 386 Minus else
Add comment 387 Minus {
Add comment 314 Plus else {
Add comment 388 315 //Log.Info("Checksum Failed");
Add comment 389 316
Add comment 390 317 var sb = new StringBuilder();
Add comment 391 Minus for (var i = 0; i < _readhash.Length; i++)
Add comment 392 Minus {
Add comment 318 Plus for (var i = 0; i < _readhash.Length; i++) {
Add comment 393 319 sb.Append(_readhash[i].ToString("x2"));
Add comment 394 320 }
Add comment 395 321 //Log.DebugFormat("_readhash output : {0}", sb);
Add comment 396 322
Add comment 397 323
Add comment 398 324 sb = new StringBuilder();
Add comment 399 Minus for (var i = 0; i < _writehash.Length; i++)
Add comment 400 Minus {
Add comment 325 Plus for (var i = 0; i < _writehash.Length; i++) {
Add comment 401 326 sb.Append(_writehash[i].ToString("x2"));
Add comment 402 327 }
Add comment 403 328 //Log.DebugFormat("_writehash output : {0}", sb);
Add comment 405 330 }
Add comment 406 331 }
Add comment 407 332
Add comment 408 Minus if (movefile && File.Exists(inputfile) && File.Exists(outputfile))
Add comment 409 Minus try
Add comment 410 Minus {
Add comment 333 Plus if (movefile && File.Exists(inputfile) && File.Exists(outputfile)) {
Add comment 334 Plus try {
Add comment 411 335 File.Delete(inputfile);
Add comment 412 336 }
Add comment 413 Minus catch (IOException ioex)
Add comment 414 Minus {
Add comment 415 Minus //Log.Error("File in use or locked cannot move file.");
Add comment 416 Minus //Log.Error(ioex);
Add comment 337 Plus catch {
Add comment 417 338 }
Add comment 418 Minus catch (Exception ex)
Add comment 419 Minus {
Add comment 420 Minus //Log.Error("File Failed to Delete");
Add comment 421 Minus //Log.Error(ex);
Add comment 422 339 }
Add comment 423 Minus
Add comment 424 340 return 1;
Add comment 425 341 }
Add comment 426 342
Add comment 427 343 //hash output file
Add comment 428 Minus public void GetMD5HashFromOutputFile()
Add comment 429 Minus {
Add comment 344 Plus public void GetMD5HashFromOutputFile() {
Add comment 430 345 var md5 = MD5.Create();
Add comment 431 346 var fs = new FileStream(_outputfile,
Add comment 432 347 FileMode.Open, FileAccess.Read, FileShare.Read, CopyBufferSize,
Add comment 434 349
Add comment 435 350 var buff = new byte[CopyBufferSize];
Add comment 436 351 int bytesread;
Add comment 437 Minus while ((bytesread = fs.Read(buff, 0, buff.Length)) != 0)
Add comment 438 Minus {
Add comment 352 Plus while ((bytesread = fs.Read(buff, 0, buff.Length)) != 0) {
Add comment 439 353 md5.TransformBlock(buff, 0, bytesread, buff, 0);
Add comment 440 354 }
Add comment 441 355 md5.TransformFinalBlock(buff, 0, bytesread);
FileOperation.xaml.cs
/Shell/FileOperation/FileOperation.xaml.cs-23+19/Shell/FileOperation/FileOperation.xaml.cs
Add comment 11 using System.Windows.Media;
Add comment 12 using System.Windows.Threading;
Add comment 13
Add comment 14 Minus namespace BExplorer.Shell
Add comment 15 Minus {
Add comment 14 Plus namespace BExplorer.Shell {
Add comment 16 15 /// <summary>
Add comment 17 16 /// Interaction logic for FileOperation.xaml
Add comment 18 17 /// </summary>
Add comment 19 Minus public partial class FileOperation : UserControl
Add comment 20 Minus {
Add comment 18 Plus public partial class FileOperation : UserControl {
Add comment 21 19 public String[] SourceItemsCollection { get; set; }
Add comment 22 20 public String DestinationLocation { get; set; }
Add comment 23 21 public FileOperationDialog ParentContents { get; set; }
Add comment 24 22 public Boolean Cancel = false;
Add comment 25 23 public OperationType OperationType { get; set; }
Add comment 26 Minus private ManualResetEvent _block;
Add comment 24 Plus //private ManualResetEvent _block;
Add comment 27 25 //private MessageReceiver mr;
Add comment 28 26 public Guid Handle;
Add comment 29 Minus private int CurrentStatus = -1;
Add comment 27 Plus //private int CurrentStatus = -1;
Add comment 30 28 const FileOptions FileFlagNoBuffering = (FileOptions)0x20000000;
Add comment 31 29 private bool DeleteToRB { get; set; }
Add comment 32 Minus Thread CopyThread;
Add comment 30 Plus //Thread CopyThread;
Add comment 33 31 public delegate void NewMessageDelegate(string NewMessage);
Add comment 34 Minus private Boolean IsAdminFO = false;
Add comment 32 Plus //private Boolean IsAdminFO = false;
Add comment 35 33 IntPtr CorrespondingWinHandle = IntPtr.Zero;
Add comment 36 34 System.Windows.Forms.Timer LoadTimer = new System.Windows.Forms.Timer();
Add comment 37 Minus private ManualResetEvent _block2;
Add comment 35 Plus //private ManualResetEvent _block2;
Add comment 38 36 DateTime OperationStartTime = DateTime.Now;
Add comment 39 Minus long totaltransfered = 0;
Add comment 40 Minus long oldbyteVlaue = 0;
Add comment 41 Minus int procCompleted = 0;
Add comment 37 Plus //long totaltransfered = 0;
Add comment 38 Plus //long oldbyteVlaue = 0;
Add comment 39 Plus //int procCompleted = 0;
Add comment 42 40 Dictionary<String, long> oldbyteVlaues = new Dictionary<string, long>();
Add comment 43 41 DateTime LastMeasuredTime = DateTime.Now;
Add comment 44 Minus long lastTotalTransfered = 0;
Add comment 45 Minus ulong totalSize = 0;
Add comment 46 Minus int CopyItemsCount = 0;
Add comment 47 Minus Boolean IsNeedAdminFO = false;
Add comment 48 Minus bool isProcess = false;
Add comment 42 Plus //long lastTotalTransfered = 0;
Add comment 43 Plus //ulong totalSize = 0;
Add comment 44 Plus //int CopyItemsCount = 0;
Add comment 45 Plus //Boolean IsNeedAdminFO = false;
Add comment 46 Plus //bool isProcess = false;
Add comment 49 47
Add comment 50 Minus public FileOperation()
Add comment 51 Minus {
Add comment 48 Plus public FileOperation() {
Add comment 52 49 InitializeComponent();
Add comment 53 50 }
Add comment 54 51
Add comment 1320 1317
Add comment 1321 1318 // }
Add comment 1322 1319 // }
Add comment 1323 Minus private bool isloaded = false;
Add comment 1320 Plus //private bool isloaded = false;
Add comment 1324 1321 // private void prOverallProgress_Loaded(object sender, RoutedEventArgs e)
Add comment 1325 1322 // {
Add comment 1326 1323
Add comment 1350 1347 // }
Add comment 1351 1348 // }
Add comment 1352 1349
Add comment 1353 Minus private void UserControl_Loaded(object sender, RoutedEventArgs e)
Add comment 1354 Minus {
Add comment 1355 Minus this.isloaded = true;
Add comment 1350 Plus private void UserControl_Loaded(object sender, RoutedEventArgs e) {
Add comment 1351 Plus //this.isloaded = true;
Add comment 1356 1352 }
Add comment 1357 1353
Add comment 1358 1354
Add comment 113 int idCmdFirst, int idCmdLast,
Add comment 114 CMF uFlags);
Add comment 115
Add comment 116 Minus void InvokeCommand(ref CMINVOKECOMMANDINFOEX pici);
Add comment 116 Plus //void InvokeCommand(ref CMINVOKECOMMANDINFOEX pici);
Add comment 117
Add comment 118 [PreserveSig]
Add comment 119 HResult GetCommandString(int idcmd, uint uflags, int reserved,
Add comment 132 new HResult QueryContextMenu(IntPtr hMenu, uint indexMenu, int idCmdFirst,
Add comment 133 int idCmdLast, CMF uFlags);
Add comment 134
Add comment 135 Minus [PreserveSig]
Add comment 136 Minus new HResult InvokeCommand(ref CMINVOKECOMMANDINFO pici);
Add comment 135 Plus //[PreserveSig]
Add comment 136 Plus //new HResult InvokeCommand(ref CMINVOKECOMMANDINFO pici);
Add comment 137
Add comment 138 [PreserveSig]
Add comment 139 new HResult GetCommandString(int idcmd, uint uflags, int reserved,
FileSystemKnownFolder.cs
/Shell/KnownFolders/FileSystemKnownFolder.cs/Shell/KnownFolders/FileSystemKnownFolder.cs