/WorldOfTheThreeKingdoms/Platforms/WinHelper.cs

https://github.com/luiges90/ZHSan · C# · 122 lines · 106 code · 12 blank · 4 comment · 1 complexity · e80b4c568d9a3c5402f27fac51b15228 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Runtime.InteropServices;
  5. using System.Linq;
  6. using System.IO;
  7. using System.Security;
  8. using System.Security.Cryptography;
  9. namespace WorldOfTheThreeKingdoms
  10. {
  11. public class WinHelper
  12. {
  13. public static void FullScreen(IntPtr hWnd)
  14. {
  15. //Form frm = MainProcessManager.mainGame.GameForm;
  16. //IntPtr hWnd = frm.Handle;
  17. int oldStyle = GetWindowLong(hWnd, GWL_STYLE);
  18. oldStyle &= (~WS_CAPTION);
  19. oldStyle &= (~WS_THICKFRAME);
  20. SetWindowLong(hWnd, GWL_STYLE, oldStyle);
  21. MoveWindow(hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), true);
  22. SendMessage(hWnd, WM_SYSCOMMAND, (IntPtr)SC_MAXIMIZE, IntPtr.Zero);
  23. UpdateWindow(hWnd);
  24. }
  25. public static void RestoreFullScreen(IntPtr hWnd)
  26. {
  27. //Form frm = MainProcessManager.mainGame.GameForm;
  28. //IntPtr hWnd = frm.Handle;
  29. int oldStyle = GetWindowLong(hWnd, GWL_STYLE);
  30. oldStyle |= WS_CAPTION;
  31. oldStyle |= WS_THICKFRAME;
  32. SetWindowLong(hWnd, GWL_STYLE, oldStyle);
  33. MoveWindow(hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), true);
  34. SendMessage(hWnd, WM_SYSCOMMAND, (IntPtr)SC_MAXIMIZE, IntPtr.Zero);
  35. UpdateWindow(hWnd);
  36. }
  37. [DllImport("user32.dll", SetLastError = true)]
  38. public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
  39. [DllImport("user32.dll", SetLastError = true)]
  40. public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
  41. [DllImport("user32.dll", SetLastError = true)]
  42. public static extern int MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool repaint);
  43. [DllImport("user32.dll", SetLastError = true)]
  44. public static extern int GetSystemMetrics(int smIndex);
  45. [DllImport("user32.dll", SetLastError = true)]
  46. public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
  47. [DllImport("user32.dll", SetLastError = true)]
  48. public static extern int UpdateWindow(IntPtr hWnd);
  49. public const int GWL_STYLE = -16;
  50. public const int WS_CAPTION = 0x00C00000;
  51. public const int WS_THICKFRAME = 0x00040000;
  52. public const int SM_CXSCREEN = 0;
  53. public const int SM_CYSCREEN = 1;
  54. public const uint WM_SYSCOMMAND = 0x0112;
  55. public const int SC_MAXIMIZE = 0xF030;
  56. }
  57. public class FileEncryptor
  58. {
  59. public static void EncryptFile(string sInputFilename,
  60. string sOutputFilename,
  61. string sKey)
  62. {
  63. FileStream fsInput = new FileStream(sInputFilename,
  64. FileMode.Open,
  65. FileAccess.Read);
  66. FileStream fsEncrypted = new FileStream(sOutputFilename,
  67. FileMode.Create,
  68. FileAccess.Write);
  69. DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
  70. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  71. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  72. ICryptoTransform desencrypt = DES.CreateEncryptor();
  73. CryptoStream cryptostream = new CryptoStream(fsEncrypted,
  74. desencrypt,
  75. CryptoStreamMode.Write);
  76. byte[] bytearrayinput = new byte[fsInput.Length];
  77. fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
  78. cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
  79. cryptostream.Close();
  80. fsInput.Close();
  81. fsEncrypted.Close();
  82. }
  83. public static void DecryptFile(string sInputFilename,
  84. string sOutputFilename,
  85. string sKey)
  86. {
  87. DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
  88. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  89. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  90. FileStream fsread = new FileStream(sInputFilename,
  91. FileMode.Open,
  92. FileAccess.Read);
  93. ICryptoTransform desdecrypt = DES.CreateDecryptor();
  94. CryptoStream cryptostreamDecr = new CryptoStream(fsread,
  95. desdecrypt,
  96. CryptoStreamMode.Read);
  97. FileStream fswrite = new FileStream(sOutputFilename,
  98. FileMode.Create,
  99. FileAccess.Write);
  100. int b;
  101. while ((b = cryptostreamDecr.ReadByte()) >= 0)
  102. {
  103. fswrite.WriteByte((byte)b);
  104. }
  105. fswrite.Close();
  106. cryptostreamDecr.Close();
  107. fsread.Close();
  108. }
  109. }
  110. }