zoukankan      html  css  js  c++  java
  • 关于最近用过的一些类

    学习C#已经有两个多月,在网上查了很多资料,也整理了很多类。大部分来自网络,然后自己修改一下

    发个帖整理一下,希望对园友有所帮助

    1 热键注册类

     1using System;
     2using System.Collections.Generic;
     3using System.Text;
     4using System.Runtime.InteropServices;
     5using System.Windows.Forms;
     6
     7namespace IDCard
     8{
     9    class HotKey
    10    {
    11        //如果函数执行成功,返回值不为0。        
    12        //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
    13        [DllImport("user32.dll", SetLastError = true)]        
    14        public static extern bool RegisterHotKey(
    15            IntPtr hWnd,                //要定义热键的窗口的句柄            
    16            int id,                     //定义热键ID(不能与其它ID重复)                       
    17            KeyModifiers fsModifiers,   //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效            
    18            Keys vk                     //定义热键的内容 
    19            );        
    20            [DllImport("user32.dll", SetLastError = true)]        
    21        public static extern bool UnregisterHotKey(            
    22            IntPtr hWnd,                //要取消热键的窗口的句柄            
    23            int id                      //要取消热键的ID            
    24            );        
    25        //定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)        
    26        [Flags()]
    27        public enum KeyModifiers        
    28        {            
    29            None = 0,            
    30            Alt = 1,            
    31            Ctrl = 2,            
    32            Shift = 4,            
    33            WindowsKey = 8        
    34        }

    35    }

    36}

    37

    2 加密解密类

      1using System;
      2using System.Data;
      3using System.Data.OleDb;
      4using System.Collections.Generic;
      5using System.Text;
      6using System.IO;
      7using System.Security.Cryptography;
      8using Microsoft.Win32;
      9using System.Configuration;
     10using System.Windows.Forms;
     11
     12namespace IDCard
     13{
     14    class Decrypt
     15    {
     16
     17        //默认密钥向量
     18        private static byte[] Keys = 0x550x320xF80xEA0x930xC30xF90xB2 };
     19        /// <summary>
     20        /// DES加密字符串
     21        /// </summary>
     22        /// <param name="encryptString">待加密的字符串</param>
     23        /// <param name="encryptKey">加密密钥,要求为8位</param>
     24        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>

     25        public static string EncryptDES(string encryptString, string encryptKey)
     26        {
     27            try
     28            {
     29                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey);
     30                byte[] rgbIV = Keys;
     31                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
     32                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
     33                MemoryStream mStream = new MemoryStream();
     34                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
     35                cStream.Write(inputByteArray, 0, inputByteArray.Length);
     36                cStream.FlushFinalBlock();
     37                return Convert.ToBase64String(mStream.ToArray());
     38            }

     39            catch (Exception e)
     40            {
     41                MessageBox.Show("Message=" + e.Message);
     42                return encryptString;
     43            }

     44        }

     45
     46        /// <summary>
     47        /// DES解密字符串
     48        /// </summary>
     49        /// <param name="decryptString">待解密的字符串</param>
     50        /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
     51        /// <returns>解密成功返回解密后的字符串,失败返源串</returns>

     52        public static string DecryptDES(string decryptString, string decryptKey)
     53        {
     54            try
     55            {
     56                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
     57                byte[] rgbIV = Keys;
     58                byte[] inputByteArray = Convert.FromBase64String(decryptString);
     59                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
     60                MemoryStream mStream = new MemoryStream();
     61                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
     62                cStream.Write(inputByteArray, 0, inputByteArray.Length);
     63                cStream.FlushFinalBlock();
     64                return Encoding.UTF8.GetString(mStream.ToArray());
     65            }

     66            catch (Exception e)
     67            {
     68                MessageBox.Show("Message=" + e.Message);
     69                return decryptString;
     70            }

     71        }

     72
     73        public static string Formate(string decryptString, string decryptKey)
     74        {
     75            string transactSn = string.Empty;
     76            if (decryptString != "")
     77            {
     78                string sn = EncryptDES(EncryptDES(EncryptDES(decryptString, decryptKey), decryptKey),decryptKey);
     79                
     80                sn = Get_MD5_Method1(sn);
     81                transactSn = sn.Substring(04+ "-" + sn.Substring(44+
     82                "-" + sn.Substring(84+ "-" + sn.Substring(124);
     83                return transactSn;
     84            }

     85            else
     86                return transactSn;
     87        }

     88
     89        public static string Get_MD5_Method1(string strSource)
     90        { //new9  
     91            System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
     92            //获取密文字节数组
     93            byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));
     94            //转换成字符串,并取9到25位
     95            string strResult = BitConverter.ToString(bytResult, 48);
     96            //转换成字符串,32位
     97            //string strResult = BitConverter.ToString(bytResult);
     98            //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
     99            strResult = strResult.Replace("-""");
    100            return strResult;
    101        }

    102    }

    103}

    104

    3  繁简体转换

     1using System;
     2using System.Collections.Generic;
     3using System.Text;
     4using Microsoft.VisualBasic;
     5namespace IDCard
     6{
     7    class FontStyle
     8    {
     9        /// <summary>
    10        /// 繁体转简体
    11        /// </summary>
    12        /// <param name="str">需转换的繁体文字</param>
    13        /// <returns></returns>

    14        public static string Traditional2Simplified(string str)
    15        
    16            return (Microsoft.VisualBasic.Strings.StrConv(str, Microsoft.VisualBasic.VbStrConv.SimplifiedChinese, 0));
    17
    18        }

    19        /// <summary>
    20        /// 简体转繁体 
    21        /// </summary>
    22        /// <param name="str">需转换的简体文字</param>
    23        /// <returns></returns>

    24        public static string Simplified2Traditional(string str)
    25        
    26            return (Microsoft.VisualBasic.Strings.StrConv(str as String, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0));
    27        }

    28
    29    }

    30}

    4 读取系统配置文件

      1using System;
      2using System.IO;
      3using System.Runtime.InteropServices;
      4using System.Text;
      5using System.Collections;
      6using System.Collections.Specialized;
      7
      8namespace IDCard
      9{
     10    /**/
     11    /**/
     12    /**/
     13    /// <summary> 
     14    /// IniFiles的类 
     15    /// </summary> 

     16    public class IniFiles
     17    {
     18        public string FileName; //INI文件名 
     19        //声明读写INI文件的API函数 
     20        [DllImport("kernel32")]
     21        private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
     22        [DllImport("kernel32")]
     23        private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
     24        //类的构造函数,传递INI文件名 
     25        public IniFiles(string AFileName)
     26        {
     27            // 判断文件是否存在 
     28            FileInfo fileInfo = new FileInfo(AFileName);
     29            //Todo:搞清枚举的用法 
     30            if ((!fileInfo.Exists))
     31            // ¦ ¦ (FileAttributes.Directory in fileInfo.Attributes)) 
     32                //文件不存在,建立文件 
     33                System.IO.StreamWriter sw = new System.IO.StreamWriter(AFileName, false, System.Text.Encoding.Default);
     34                try
     35                {
     36                    sw.Write("#表格配置档案");
     37                    sw.Close();
     38                }

     39                catch
     40                {
     41                    throw (new ApplicationException("Ini文件不存在"));
     42                }

     43            }

     44            //必须是完全路径,不能是相对路径 
     45            FileName = fileInfo.FullName;
     46        }

     47        //写INI文件 
     48        public void WriteString(string Section, string Ident, string Value)
     49        {
     50            if (!WritePrivateProfileString(Section, Ident, Value, FileName))
     51            {
     52
     53                throw (new ApplicationException("写Ini文件出错"));
     54            }

     55        }

     56        //读取INI文件指定 
     57        public string ReadString(string Section, string Ident, string Default)
     58        {
     59            Byte[] Buffer = new Byte[65535];
     60            int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
     61            //必须设定0(系统默认的代码页)的编码方式,否则无法支持中文 
     62            string s = Encoding.GetEncoding(0).GetString(Buffer);
     63            s = s.Substring(0, bufLen);
     64            return s.Trim();
     65        }

     66
     67        //读整数 
     68        public int ReadInteger(string Section, string Ident, int Default)
     69        {
     70            string intStr = ReadString(Section, Ident, Convert.ToString(Default));
     71            try
     72            {
     73                return Convert.ToInt32(intStr);
     74            }

     75            catch (Exception ex)
     76            {
     77                Console.WriteLine(ex.Message);
     78                return Default;
     79            }

     80        }

     81
     82        //写整数 
     83        public void WriteInteger(string Section, string Ident, int Value)
     84        {
     85            WriteString(Section, Ident, Value.ToString());
     86        }

     87
     88        //读布尔 
     89        public bool ReadBool(string Section, string Ident, bool Default)
     90        {
     91            try
     92            {
     93                return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default)));
     94            }

     95            catch (Exception ex)
     96            {
     97                Console.WriteLine(ex.Message);
     98                return Default;
     99            }

    100        }

    101
    102        //写Bool 
    103        public void WriteBool(string Section, string Ident, bool Value)
    104        {
    105            WriteString(Section, Ident, Convert.ToString(Value));
    106        }

    107
    108        //从Ini文件中,将指定的Section名称中的所有Ident添加到列表中 
    109        public void ReadSection(string Section, StringCollection Idents)
    110        {
    111            Byte[] Buffer = new Byte[16384];
    112            //Idents.Clear(); 
    113
    114            int bufLen = GetPrivateProfileString(Section, nullnull, Buffer, Buffer.GetUpperBound(0),
    115            FileName);
    116            //对Section进行解析 
    117            GetStringsFromBuffer(Buffer, bufLen, Idents);
    118        }

    119
    120        private void GetStringsFromBuffer(Byte[] Buffer, int bufLen, StringCollection Strings)
    121        {
    122            Strings.Clear();
    123            if (bufLen != 0)
    124            {
    125                int start = 0;
    126                for (int i = 0; i < bufLen; i++)
    127                {
    128                    if ((Buffer[i] == 0&& ((i - start) > 0))
    129                    {
    130                        String s = Encoding.GetEncoding(0).GetString(Buffer, start, i - start);
    131                        Strings.Add(s);
    132                        start = i + 1;
    133                    }

    134                }

    135            }

    136        }

    137        //从Ini文件中,读取所有的Sections的名称 
    138        public void ReadSections(StringCollection SectionList)
    139        {
    140            //Note:必须得用Bytes来实现,StringBuilder只能取到第一个Section 
    141            byte[] Buffer = new byte[65535];
    142            int bufLen = 0;
    143            bufLen = GetPrivateProfileString(nullnullnull, Buffer,
    144            Buffer.GetUpperBound(0), FileName);
    145            GetStringsFromBuffer(Buffer, bufLen, SectionList);
    146        }

    147        //读取指定的Section的所有Value到列表中 
    148        public void ReadSectionValues(string Section, NameValueCollection Values)
    149        {
    150            StringCollection KeyList = new StringCollection();
    151            ReadSection(Section, KeyList);
    152            Values.Clear();
    153            foreach (string key in KeyList)
    154            {
    155                Values.Add(key, ReadString(Section, key, ""));
    156
    157            }

    158        }

    159              //清除某个Section 
    160        public void EraseSection(string Section)
    161        {
    162            // 
    163            if (!WritePrivateProfileString(Section, nullnull, FileName))
    164            {
    165                throw (new ApplicationException("无法清除Ini文件中的Section"));
    166            }

    167        }

    168        //删除某个Section下的键 
    169        public void DeleteKey(string Section, string Ident)
    170        {
    171            WritePrivateProfileString(Section, Ident, null, FileName);
    172        }

    173        //Note:对于Win9X,来说需要实现UpdateFile方法将缓冲中的数据写入文件 
    174        //在Win NT, 2000和XP上,都是直接写文件,没有缓冲,所以,无须实现UpdateFile 
    175        //执行完对Ini文件的修改之后,应该调用本方法更新缓冲区。 
    176        public void UpdateFile()
    177        {
    178            WritePrivateProfileString(nullnullnull, FileName);
    179        }

    180
    181        //检查某个Section下的某个键值是否存在 
    182        public bool ValueExists(string Section, string Ident)
    183        {
    184            // 
    185            StringCollection Idents = new StringCollection();
    186            ReadSection(Section, Idents);
    187            return Idents.IndexOf(Ident) > -1;
    188        }

    189
    190        //确保资源的释放 
    191        ~IniFiles()
    192        {
    193            UpdateFile();
    194        }

    195    }

    196}

    197
    198
  • 相关阅读:
    windows“画图”工具用法
    数字信号处理的流程
    怎样去掉桌面图标蓝色阴影
    Linux下Wi-Fi配置工具2
    vs2005下面编译自己的luars232.dll
    [spring]03_装配Bean
    [Java IO]02_字节流
    [Java IO]01_File类和RandomAccessFile类
    [Spring]01_环境配置
    Notepad++ 实用技巧
  • 原文地址:https://www.cnblogs.com/coolkiss/p/1299845.html
Copyright © 2011-2022 走看看