<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CQ-CSER &#187; c#</title>
	<atom:link href="http://cq-cser.cn/category/web/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://cq-cser.cn</link>
	<description>计算机爱好者</description>
	<lastBuildDate>Wed, 02 May 2012 10:01:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>豆瓣电台下载</title>
		<link>http://cq-cser.cn/2011/01/%e8%b1%86%e7%93%a3%e7%94%b5%e5%8f%b0%e4%b8%8b%e8%bd%bd/</link>
		<comments>http://cq-cser.cn/2011/01/%e8%b1%86%e7%93%a3%e7%94%b5%e5%8f%b0%e4%b8%8b%e8%bd%bd/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 03:23:01 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[WEB]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[豆瓣电台]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1407</guid>
		<description><![CDATA[下载链接类似 http://douban.fm/j/mine/playlist?r=0.8999408618547022&#38;type=r&#38;sid=501054&#38;h=&#124;364993:p&#124;630475:p&#124;1380740:p&#124;501054:r&#38;channel=2 SID,CHANNEL,type都是必须的。返回个PLAYLIST。JSON数组? {&#8220;r&#8221;:0,&#8221;song&#8221;:[{"picture":"http:\/\/img3.douban.com\/mpic\/s1400647.jpg","albumtitle":"Lennon Legend: The V...","company":"Capitol","rating_avg":4.609370,"public_time":"1998-02-24","album":"\/subject\/1395275\/","like":"0","artist":"John Lennon","url":"http:\/\/mr4.douban.com\/201101021105\/0222ce7c85ff473e0d91d8d56305e79d\/view\/song\/small\/p1403051.mp3","title":"Cold Turkey","subtype":"","sid":"1403051","aid":"1395275"},{"picture":"http:\/\/img3.douban.com\/mpic\/s3868617.jpg","albumtitle":"Dangerous","company":"Sony","rating_avg":4.696230,"public_time":"1991","album":"\/subject\/1422152\/","like":"0","artist":"Michael Jackson","url":"http:\/\/mr4.douban.com\/201101021105\/20236647acd3ff11c48b284b6817072e\/view\/song\/small\/p967061.mp3","title":"Dangerous","subtype":"","sid":"967061","aid":"1422152"},{"picture":"http:\/\/img3.douban.com\/mpic\/s2717072.jpg","albumtitle":"Westlife - Unbreakab...","company":"RCA Victor Europe","rating_avg":4.496790,"public_time":"2002-11-26","album":"\/subject\/1452987\/","like":"0","artist":"Westlife","url":"http:\/\/mr4.douban.com\/201101021105\/c105dc2839686ef307a4e175bb2170f1\/view\/song\/small\/p1382426.mp3","title":"Unbreakable (single Remix)","subtype":"","sid":"1382426","aid":"1452987"},{"picture":"http:\/\/img3.douban.com\/mpic\/s3017846.jpg","albumtitle":"It Won't Be Soon Bef...","company":"A&#38;M \/ Octone Records","rating_avg":4.088900,"public_time":"2007-05-22","album":"\/subject\/2032823\/","like":"0","artist":"Maroon 5","url":"http:\/\/mr4.douban.com\/201101021105\/c8a3fa06b4c3a5f7236a7f92d74c2243\/view\/song\/small\/p464284.mp3","title":"Won’t Go Home Without You (acoustic Version)","subtype":"","sid":"464284","aid":"2032823"},{"picture":"http:\/\/img3.douban.com\/mpic\/s1400216.jpg","albumtitle":"The Memory Of Trees","company":"© 1995 Warner Music UK Ltd. \/ Reprise Records","rating_avg":4.402740,"public_time":"1995","album":"\/subject\/1394952\/","like":"0","artist":"Enya","url":"http:\/\/mr4.douban.com\/201101021105\/19678cf350c8b131f5e871ad583cd9e7\/view\/song\/small\/p658204.mp3","title":"From Where I Am","subtype":"","sid":"658204","aid":"1394952"},{"picture":"http:\/\/img3.douban.com\/mpic\/s3142014.jpg","albumtitle":"Dreaming Out Loud","company":"Interscope Records","rating_avg":4.162190,"public_time":"2007-11-20","album":"\/subject\/2285684\/","like":"0","artist":"OneRepublic","url":"http:\/\/mr4.douban.com\/201101021105\/dc07f33a38af5d185e66d38af7b5689c\/view\/song\/small\/p1381621.mp3","title":"Stop And Stare","subtype":"","sid":"1381621","aid":"2285684"},{"picture":"http:\/\/img5.douban.com\/mpic\/s3771905.jpg","albumtitle":"Com Lag (2Plus2IsFiv...","company":"EMI Int'l","rating_avg":4.190890,"public_time":"2004","album":"\/subject\/1401429\/","like":"0","artist":"Radiohead","url":"http:\/\/mr3.douban.com\/201101021105\/04367996e2be40270af518cb4d8ec24e\/view\/song\/small\/p1437167.mp3","title":"I Will [Los Angeles [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e6%8e%a8%e8%8d%901-%e7%9e%ac%e9%97%b4%e4%b9%8b%e7%be%8e/' rel='bookmark' title='Permanent Link: 推荐1-瞬间之美'>推荐1-瞬间之美</a></li>
<li><a href='http://cq-cser.cn/2010/03/rot13/' rel='bookmark' title='Permanent Link: ROT13'>ROT13</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>下载链接类似</p>
<p><a href="http://douban.fm/j/mine/playlist?r=0.8999408618547022&amp;type=r&amp;sid=501054&amp;h=|364993:p|630475:p|1380740:p|501054:r&amp;channel=2">http://douban.fm/j/mine/playlist?r=0.8999408618547022&amp;type=r&amp;sid=501054&amp;h=|364993:p|630475:p|1380740:p|501054:r&amp;channel=2</a></p>
<p>SID,CHANNEL,type都是必须的。返回个PLAYLIST。JSON数组?</p>
<p>{&#8220;r&#8221;:0,&#8221;song&#8221;:[{"picture":"http:\/\/img3.douban.com\/mpic\/s1400647.jpg","albumtitle":"Lennon Legend: The V...","company":"Capitol","rating_avg":4.609370,"public_time":"1998-02-24","album":"\/subject\/1395275\/","like":"0","artist":"John Lennon","url":"http:\/\/mr4.douban.com\/201101021105\/0222ce7c85ff473e0d91d8d56305e79d\/view\/song\/small\/p1403051.mp3","title":"Cold Turkey","subtype":"","sid":"1403051","aid":"1395275"},{"picture":"http:\/\/img3.douban.com\/mpic\/s3868617.jpg","albumtitle":"Dangerous","company":"Sony","rating_avg":4.696230,"public_time":"1991","album":"\/subject\/1422152\/","like":"0","artist":"Michael Jackson","url":"http:\/\/mr4.douban.com\/201101021105\/20236647acd3ff11c48b284b6817072e\/view\/song\/small\/p967061.mp3","title":"Dangerous","subtype":"","sid":"967061","aid":"1422152"},{"picture":"http:\/\/img3.douban.com\/mpic\/s2717072.jpg","albumtitle":"Westlife - Unbreakab...","company":"RCA Victor Europe","rating_avg":4.496790,"public_time":"2002-11-26","album":"\/subject\/1452987\/","like":"0","artist":"Westlife","url":"http:\/\/mr4.douban.com\/201101021105\/c105dc2839686ef307a4e175bb2170f1\/view\/song\/small\/p1382426.mp3","title":"Unbreakable (single Remix)","subtype":"","sid":"1382426","aid":"1452987"},{"picture":"http:\/\/img3.douban.com\/mpic\/s3017846.jpg","albumtitle":"It Won't Be Soon Bef...","company":"A&amp;M \/ Octone Records","rating_avg":4.088900,"public_time":"2007-05-22","album":"\/subject\/2032823\/","like":"0","artist":"Maroon 5","url":"http:\/\/mr4.douban.com\/201101021105\/c8a3fa06b4c3a5f7236a7f92d74c2243\/view\/song\/small\/p464284.mp3","title":"Won’t Go Home Without You (acoustic Version)","subtype":"","sid":"464284","aid":"2032823"},{"picture":"http:\/\/img3.douban.com\/mpic\/s1400216.jpg","albumtitle":"The Memory Of Trees","company":"© 1995 Warner Music UK Ltd. \/ Reprise Records","rating_avg":4.402740,"public_time":"1995","album":"\/subject\/1394952\/","like":"0","artist":"Enya","url":"http:\/\/mr4.douban.com\/201101021105\/19678cf350c8b131f5e871ad583cd9e7\/view\/song\/small\/p658204.mp3","title":"From Where I Am","subtype":"","sid":"658204","aid":"1394952"},{"picture":"http:\/\/img3.douban.com\/mpic\/s3142014.jpg","albumtitle":"Dreaming Out Loud","company":"Interscope Records","rating_avg":4.162190,"public_time":"2007-11-20","album":"\/subject\/2285684\/","like":"0","artist":"OneRepublic","url":"http:\/\/mr4.douban.com\/201101021105\/dc07f33a38af5d185e66d38af7b5689c\/view\/song\/small\/p1381621.mp3","title":"Stop And Stare","subtype":"","sid":"1381621","aid":"2285684"},{"picture":"http:\/\/img5.douban.com\/mpic\/s3771905.jpg","albumtitle":"Com Lag (2Plus2IsFiv...","company":"EMI Int'l","rating_avg":4.190890,"public_time":"2004","album":"\/subject\/1401429\/","like":"0","artist":"Radiohead","url":"http:\/\/mr3.douban.com\/201101021105\/04367996e2be40270af518cb4d8ec24e\/view\/song\/small\/p1437167.mp3","title":"I Will [Los Angeles Version]&#8220;,&#8221;subtype&#8221;:&#8221;",&#8221;sid&#8221;:&#8221;1437167&#8243;,&#8221;aid&#8221;:&#8221;1401429&#8243;},{&#8220;picture&#8221;:&#8221;http:\/\/img3.douban.com\/mpic\/s3319502.jpg&#8221;,&#8221;albumtitle&#8221;:&#8221;Playing My Game&#8221;,&#8221;company&#8221;:&#8221;Emi&#8221;,&#8221;rating_avg&#8221;:4.443200,&#8221;public_time&#8221;:&#8221;2000&#8243;,&#8221;album&#8221;:&#8221;\/subject\/1416411\/&#8221;,&#8221;like&#8221;:&#8221;0&#8243;,&#8221;artist&#8221;:&#8221;Lene Marlin&#8221;,&#8221;url&#8221;:&#8221;http:\/\/mr4.douban.com\/201101021105\/50e6a293efe3c02f1c3a59a68d08430c\/view\/song\/small\/p1036351.mp3&#8243;,&#8221;title&#8221;:&#8221;One Year Ago&#8221;,&#8221;subtype&#8221;:&#8221;",&#8221;sid&#8221;:&#8221;1036351&#8243;,&#8221;aid&#8221;:&#8221;1416411&#8243;}]}</p>
<p>可以很明显的看到评分，命名，歌手，歌名等信息，就是不知道那个/SONG/SMALL，是否有对于的/SONG/BIG</p>
<p>下面这位同学已经写好了啦。可以反编译下。可惜自动保存歌曲那个插件坏链了，无法下载。</p>
<p>不依靠各类SDK的一时无法下手啊，对SDK依赖不小啊，可以顺便学习下BHO，蛮好玩的</p>
<p><a href="http://slippor.blogbus.com/logs/62644175.html?s=info&amp;v=4.4.1227.2&amp;t=W7">http://slippor.blogbus.com/logs/62644175.html?s=info&amp;v=4.4.1227.2&amp;t=W7</a></p>
<p>最近没什么兴趣点，神马程序都是浮云，各类服务才是王道</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e6%8e%a8%e8%8d%901-%e7%9e%ac%e9%97%b4%e4%b9%8b%e7%be%8e/' rel='bookmark' title='Permanent Link: 推荐1-瞬间之美'>推荐1-瞬间之美</a></li>
<li><a href='http://cq-cser.cn/2010/03/rot13/' rel='bookmark' title='Permanent Link: ROT13'>ROT13</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2011/01/%e8%b1%86%e7%93%a3%e7%94%b5%e5%8f%b0%e4%b8%8b%e8%bd%bd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>随笔-MD5悲剧-c#</title>
		<link>http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/</link>
		<comments>http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 12:15:46 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[其他]]></category>
		<category><![CDATA[MD5]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1163</guid>
		<description><![CDATA[图书馆对面的2小情侣给了我动力，终于搞定了课设，今晚又尝试了下MD5加解密文件系统密码，网上找了个MD5类如下，结果就悲剧了 using System; using System.Text; using System.IO; using System.Globalization; using System.Security.Cryptography;&#60;/code&#62;// 创建Key public string GenerateKey() { DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create(); return ASCIIEncoding.ASCII.GetString(desCrypto.Key); } // 加密字符串 public string EncryptString(string sInputString, string sKey) { byte [] data = Encoding.UTF8.GetBytes(sInputString); DESCryptoServiceProvider md5 = new DESCryptoServiceProvider(); md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey); namespace MyFileBrowser { public class MD5 { ///MD5加密 public string [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/asp-net%e5%8a%a0%e5%af%86cookies/' rel='bookmark' title='Permanent Link: ASP.NET加密Cookies'>ASP.NET加密Cookies</a></li>
<li><a href='http://cq-cser.cn/2010/04/app-config-c%e8%af%bb%e5%86%99%e7%b1%bb/' rel='bookmark' title='Permanent Link: app.config-c#读写类'>app.config-c#读写类</a></li>
<li><a href='http://cq-cser.cn/2009/12/des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%87%bd%e6%95%b0-%e6%94%b6%e8%97%8f-c/' rel='bookmark' title='Permanent Link: DES加密解密函数 收藏 c#'>DES加密解密函数 收藏 c#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span style="COLOR: blue">图书馆对面的2小情侣给了我动力，终于搞定了课设，今晚又尝试了下MD5加解密文件系统密码，网上找了个MD5类如下，结果就悲剧了<span id="more-1163"></span></span></p>
<pre class="brush: plain;">using System;
using System.Text;
using System.IO;
using System.Globalization;
using System.Security.Cryptography;&lt;/code&gt;// 创建Key
public string GenerateKey()
{
DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
}
// 加密字符串
public string EncryptString(string sInputString, string sKey)
{
byte [] data = Encoding.UTF8.GetBytes(sInputString);
DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();
md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

namespace MyFileBrowser
{
public class MD5
{
///MD5加密
public string MD5Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, md5.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat(&quot;{0:X2}&quot;, b);
}
ret.ToString();
return ret.ToString();
}

///MD5解密
public string MD5Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x &amp;lt; pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}

md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, md5.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

return System.Text.Encoding.Default.GetString(ms.ToArray());
}

md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
ICryptoTransform desencrypt = md5.CreateEncryptor();
byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
return BitConverter.ToString(result);
}
// 解密字符串
public string DecryptString(string sInputString, string sKey)
{
string [] sInput = sInputString.Split(&quot;-&quot;.ToCharArray());
byte [] data = new byte[sInput.Length];
for(int i = 0; i &amp;lt; sInput.Length; i++)
{
data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
}
DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();
md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
ICryptoTransform desencrypt = md5.CreateDecryptor();
byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
return Encoding.UTF8.GetString(result);
}
}
    /*
  class Test
{
    static void Main()
    {
        bool sy = true;
        char a;
        MD5 md5 = new MD5();
        string key = md5.GenerateKey();
        string s0 = &quot; microsoft &quot;;
        string s1 = md5.EncryptString(s0, key);
        string s2 = md5.DecryptString(s1, key);
        Console.WriteLine(&quot;原串: [{0}]&quot;, s0);
        Console.WriteLine(&quot;加密: [{0}]&quot;, s1);
        Console.WriteLine(&quot;解密: [{0}]&quot;, s2);
        while (sy)
        {
            Console.WriteLine(&quot;是否输入字符串？ Y/N&quot;);
            a = Convert.ToChar(Console.ReadLine());
            if ( a == 'Y' || a == 'y')
            {
                sy = true;
                Console.WriteLine(&quot; 请输入所要验证的字符串 &quot;);
                s0 = Console.ReadLine();
                s1 = md5.EncryptString(s0, key);
                s2 = md5.DecryptString(s1, key);
                Console.WriteLine(&quot;原串: [{0}]&quot;, s0);
                Console.WriteLine(&quot;加密: [{0}]&quot;, s1);
                Console.WriteLine(&quot;解密: [{0}]&quot;, s2);
            }
            else
                if (a == 'N' || a == 'n')
                    sy = false;
                else
                    Console.WriteLine(&quot; 您一定输错了，请重新输入 ！&quot;);
        }
    }
}
    */
}

被我注销掉的是错误引用，悲剧就从这开始了，他调用了的是子函数，于是我试着在BYTE[]和STRING之间做各种转换，搞完了发现我就是把原函数简略的写了遍，下面是MSDN的例子和一些

&lt;span style=&quot;COLOR: blue&quot;&gt;byte&lt;/span&gt;[] bytes = { 0, 1, 14, 168, 255 };
&lt;span style=&quot;COLOR: blue&quot;&gt;foreach&lt;/span&gt; (&lt;span style=&quot;COLOR: blue&quot;&gt;byte&lt;/span&gt; byteValue &lt;span style=&quot;COLOR: blue&quot;&gt;in&lt;/span&gt; bytes)
   outputBlock.Text += byteValue + &lt;span style=&quot;COLOR: #a31515&quot;&gt;&quot;\n&quot;&lt;/span&gt;;
&lt;span style=&quot;COLOR: green&quot;&gt;// The example displays the following output if the current&lt;/span&gt;
&lt;span style=&quot;COLOR: green&quot;&gt;// culture is en-US:&lt;/span&gt;
&lt;span style=&quot;COLOR: green&quot;&gt;//       0&lt;/span&gt;
&lt;span style=&quot;COLOR: green&quot;&gt;//       1&lt;/span&gt;
&lt;span style=&quot;COLOR: green&quot;&gt;//       14&lt;/span&gt;
&lt;span style=&quot;COLOR: green&quot;&gt;//       168&lt;/span&gt;
&lt;span style=&quot;COLOR: green&quot;&gt;//       255&lt;/span&gt;

 #region BYTE转换STRING
      /*  static char[] hexDigits = {
        '0', '1', '2', '3', '4', '5', '6', '7',
        '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

        public static string ToHexString(byte[] bytes)
        {
            char[] chars = new char[bytes.Length * 2];
            for (int i = 0; i &amp;lt; bytes.Length; i++)
            {
                int b = bytes[i];
                chars[i * 2] = hexDigits[b &amp;gt;&amp;gt; 4];
                chars[i * 2 + 1] = hexDigits[b &amp;amp; 0xF];
            }
            return new string(chars);
        }*/
        #endregion

-----------------------------------------------------------------------------------------

最后上我的最终代码：

  #region 修改密码
        public void changepsw()
        {
            MD5 md6 = new MD5();
         // readoutkey = md5.GenerateKey();//调用产生函数
 //byte[] mykey = System.Text.Encoding.UTF8.GetBytes(readoutkey);
 //string finkey = ToHexString(mykey); //MD5公匙转换成HEXstring形式方便保存
  byte[] chang = HexToByte(readoutkey);//读出的HEXstring格式转换成BYTE
 string changs = System.Text.Encoding.Default.GetString(chang);// 转换成密匙格式
// password = md6.MD5Encrypt(&quot;123456&quot;, changs);

           temp  = md6.MD5Decrypt(password,changs);
            if (string.Compare(_txtInfo.Text,temp, true) == 0)
            {
                AboutBox1 MyDialog = new AboutBox1();
                MyDialog.Text = &quot;输入密码&quot;;
                if (MyDialog.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show(&quot;您输入的值是：&quot; + MyDialog.textBox1.Text, &quot;信息提示&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    password = MyDialog.textBox1.Text;
                    password = md6.MD5Encrypt(password,changs);
                    byte[] tem = System.Text.Encoding.UTF8.GetBytes(password);
                    string finpass= ToHexString(tem);
                    ConfigAppSettings.SetValue(&quot;DemoKey&quot;, finpass);
                   // ConfigAppSettings.SetValue(&quot;stry&quot;,readoutkey);已有密匙
                }
                else
                {
                    MessageBox.Show(&quot;操作被取消&quot;, &quot;信息提示&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                MyDialog.Dispose();
            }
            else MessageBox.Show(&quot;在下面文本框中输入正确密码&quot;);
          
        }
        #endregion&lt;php&gt;</pre>
<p>整个SLN，VS2010U版的</p>
<p><a href="http://cq-cser.cn/wp-content/plugins/downloads-manager/upload/MyFileBrowser.rar">http://cq-cser.cn/wp-content/plugins/downloads-manager/upload/MyFileBrowser.rar</a></p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/asp-net%e5%8a%a0%e5%af%86cookies/' rel='bookmark' title='Permanent Link: ASP.NET加密Cookies'>ASP.NET加密Cookies</a></li>
<li><a href='http://cq-cser.cn/2010/04/app-config-c%e8%af%bb%e5%86%99%e7%b1%bb/' rel='bookmark' title='Permanent Link: app.config-c#读写类'>app.config-c#读写类</a></li>
<li><a href='http://cq-cser.cn/2009/12/des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%87%bd%e6%95%b0-%e6%94%b6%e8%97%8f-c/' rel='bookmark' title='Permanent Link: DES加密解密函数 收藏 c#'>DES加密解密函数 收藏 c#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>string和byte[]的相互(C#)</title>
		<link>http://cq-cser.cn/2010/04/string%e5%92%8cbyte%e7%9a%84%e7%9b%b8%e4%ba%92c/</link>
		<comments>http://cq-cser.cn/2010/04/string%e5%92%8cbyte%e7%9a%84%e7%9b%b8%e4%ba%92c/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 11:56:43 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[byte[]]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1161</guid>
		<description><![CDATA[string类型转成byte[]： byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); 反过来，byte[]转成string： string str = System.Text.Encoding.Default.GetString ( byteArray ); 其它编码方式的，如System.Text.UTF8Encoding，System.Text.UnicodeEncoding class等；例如： string类型转成ASCII byte[]：（&#8221;01&#8243; 转成 byte[] = new byte[]{ 0&#215;30, 0&#215;31}）  byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str ); ASCII byte[] 转成string：（byte[] = new byte[]{ 0&#215;30, 0&#215;31} 转成 &#8220;01&#8243;） string str = System.Text.Encoding.ASCII.GetString ( byteArray ); 有时候还有这样一些需求： byte[] 转成原16进制格式的string，例如0xae00cf, 转换成 &#8220;ae00cf&#8221;；new byte[]{ 0&#215;30, 0&#215;31}转成&#8221;3031&#8243;:    public static string ToHexString(byte[] bytes) // 0xae00cf =&#62; &#8220;AE00CF &#8221;         {             string hexString = string.Empty;             if [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2009/12/des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%87%bd%e6%95%b0-%e6%94%b6%e8%97%8f-c/' rel='bookmark' title='Permanent Link: DES加密解密函数 收藏 c#'>DES加密解密函数 收藏 c#</a></li>
<li><a href='http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/' rel='bookmark' title='Permanent Link: 随笔-MD5悲剧-c#'>随笔-MD5悲剧-c#</a></li>
<li><a href='http://cq-cser.cn/2010/01/asp-net%e5%8a%a0%e5%af%86cookies/' rel='bookmark' title='Permanent Link: ASP.NET加密Cookies'>ASP.NET加密Cookies</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>s<span style="FONT-FAMILY: 宋体" lang="EN-US">tring</span><span style="FONT-FAMILY: 宋体">类型转成<span lang="EN-US">byte[]</span>：</span></p>
<p><span style="FONT-FAMILY: 宋体"><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] byteArray </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> System.Text.Encoding.Default.GetBytes ( str );</span></span></p>
<p><span style="FONT-FAMILY: 宋体"><span style="COLOR: #000000"><span style="FONT-FAMILY: 宋体">反过来，<span lang="EN-US">byte[]</span>转成<span lang="EN-US">string</span>：</span></span></span></p>
<p><span style="FONT-FAMILY: 宋体"><span style="COLOR: #000000"><span style="FONT-FAMILY: 宋体"><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> System.Text.Encoding.Default.GetString ( byteArray );<span id="more-1161"></span></span></span></span></span></p>
<p>其它编码方式的，如System.Text.UTF8Encoding，System.Text.UnicodeEncoding class等；例如：</p>
<p>string类型转成ASCII byte[]：（&#8221;01&#8243; 转成 byte[] = new byte[]{ 0&#215;30, 0&#215;31}）</p>
<p> <span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] byteArray </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> System.Text.Encoding.ASCII.GetBytes ( str );</span></p>
<p><span style="COLOR: #000000"><span style="FONT-FAMILY: 宋体" lang="EN-US">ASCII byte[] </span><span style="FONT-FAMILY: 宋体">转成<span lang="EN-US">string</span>：（<span lang="EN-US">byte[] = new byte[]{ 0&#215;30, 0&#215;31} </span>转成 <span lang="EN-US">&#8220;01&#8243;</span>）</span></span></p>
<p><span style="COLOR: #000000"><span style="FONT-FAMILY: 宋体"><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> str </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> System.Text.Encoding.ASCII.GetString ( byteArray );</span></span></span></p>
<p>有时候还有这样一些需求：</p>
<p>byte[] 转成原16进制格式的string，例如0xae00cf, 转换成 &#8220;ae00cf&#8221;；new byte[]{ 0&#215;30, 0&#215;31}转成&#8221;3031&#8243;:</p>
<p>   public static string ToHexString(byte[] bytes) // 0xae00cf =&gt; &#8220;AE00CF &#8221;<br />
        {<br />
            string hexString = string.Empty;<br />
            if (bytes != null)<br />
            {<br />
                StringBuilder strB = new StringBuilder();</p>
<p>                for (int i = 0; i &lt; bytes.Length; i++)<br />
                {<br />
                    strB.Append(bytes[i].ToString(&#8220;X2&#8243;));<br />
                }<br />
                hexString = strB.ToString();<br />
            }<br />
            return hexString;<br />
        }</p>
<p>反过来，<span lang="EN-US">16</span>进制格式的<span lang="EN-US">string </span>转成<span lang="EN-US">byte[]</span>，例如<span lang="EN-US">, &#8220;ae00cf&#8221;</span>转换成<span lang="EN-US">0xae00cf</span>，长度缩减一半；<span lang="EN-US">&#8220;3031&#8243; </span>转成<span lang="EN-US">new byte[]{ 0&#215;30, 0&#215;31}:</span></p>
<p><span lang="EN-US">private static byte[] HexToByte(string hexString)<br />
        {<br />
            byte[] returnBytes = new byte[hexString.Length / 2];<br />
            for (int i = 0; i &lt; returnBytes.Length; i++)<br />
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);<br />
            return returnBytes;<br />
        }</span></p>
<p><span lang="EN-US">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;邪恶的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p>public static byte[] GetBytes(string hexString, out int discarded)<br />
        {<br />
            discarded = 0;<br />
            string newString = &#8220;&#8221;;<br />
            char c;<br />
            // remove all none A-F, 0-9, characters<br />
            for (int i=0; i&lt;hexString.Length; i++)<br />
            {<br />
                c = hexString[i];<br />
                if (IsHexDigit(c))<br />
                    newString += c;<br />
                else<br />
                    discarded++;<br />
            }<br />
            // if odd number of characters, discard last character<br />
            if (newString.Length % 2 != 0)<br />
            {<br />
                discarded++;<br />
                newString = newString.Substring(0, newString.Length-1);<br />
            }</p>
<p>            int byteLength = newString.Length / 2;<br />
            byte[] bytes = new byte[byteLength];<br />
            string hex;<br />
            int j = 0;<br />
            for (int i=0; i&lt;bytes.Length; i++)<br />
            {<br />
                hex = new String(new Char[] {newString[j], newString[j+1]});<br />
                bytes[i] = HexToByte(hex);<br />
                j = j+2;<br />
            }<br />
            return bytes;<br />
        }</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2009/12/des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%87%bd%e6%95%b0-%e6%94%b6%e8%97%8f-c/' rel='bookmark' title='Permanent Link: DES加密解密函数 收藏 c#'>DES加密解密函数 收藏 c#</a></li>
<li><a href='http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/' rel='bookmark' title='Permanent Link: 随笔-MD5悲剧-c#'>随笔-MD5悲剧-c#</a></li>
<li><a href='http://cq-cser.cn/2010/01/asp-net%e5%8a%a0%e5%af%86cookies/' rel='bookmark' title='Permanent Link: ASP.NET加密Cookies'>ASP.NET加密Cookies</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/04/string%e5%92%8cbyte%e7%9a%84%e7%9b%b8%e4%ba%92c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>app.config-c#读写类</title>
		<link>http://cq-cser.cn/2010/04/app-config-c%e8%af%bb%e5%86%99%e7%b1%bb/</link>
		<comments>http://cq-cser.cn/2010/04/app-config-c%e8%af%bb%e5%86%99%e7%b1%bb/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 04:48:49 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[app.config]]></category>
		<category><![CDATA[MD5]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1155</guid>
		<description><![CDATA[一个APP.CONFIG读写类，2个MD5类 读配置很简单，可以用ConfigurationManager.AppSettings[key] 来读出，可是写配置文件时，如果写成这样 ConfigurationManager.AppSettings[key] = &#8220;111&#8243;; 总是提示只读，那么该怎么办呢？ using System; using System.Collections.Generic; using System.Text; using System.Configuration; namespace BQKJ.Common {     /// &#60;summary&#62;     /// 对exe.Config文件中的appSettings段进行读写配置操作     /// 注意：调试时，写操作将写在vhost.exe.config文件中     /// &#60;/summary&#62;     public class ConfigAppSettings     {         /// &#60;summary&#62;         /// 写入值         /// &#60;/summary&#62;         /// &#60;param name=&#8221;key&#8221;&#62;&#60;/param&#62;         /// &#60;param name=&#8221;value&#8221;&#62;&#60;/param&#62;         public [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/c%e8%8e%b7%e5%8f%96cpu%e7%9a%84%e5%88%a9%e7%94%a8%e7%8e%87%e4%bb%a3%e7%a0%81/' rel='bookmark' title='Permanent Link: C#获取CPU的利用率代码'>C#获取CPU的利用率代码</a></li>
<li><a href='http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/' rel='bookmark' title='Permanent Link: 随笔-MD5悲剧-c#'>随笔-MD5悲剧-c#</a></li>
<li><a href='http://cq-cser.cn/2010/01/asp-net%e5%8a%a0%e5%af%86cookies/' rel='bookmark' title='Permanent Link: ASP.NET加密Cookies'>ASP.NET加密Cookies</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>一个APP.CONFIG读写类，2个MD5类<span id="more-1155"></span></p>
<p>读配置很简单，可以用ConfigurationManager.AppSettings[key] 来读出，可是写配置文件时，如果写成这样</p>
<p>ConfigurationManager.AppSettings[key] = &#8220;111&#8243;;</p>
<p>总是提示只读，那么该怎么办呢？</p>
<p>using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using System.Configuration;</p>
<p>namespace BQKJ.Common<br />
{<br />
    /// &lt;summary&gt;<br />
    /// 对exe.Config文件中的appSettings段进行读写配置操作<br />
    /// 注意：调试时，写操作将写在vhost.exe.config文件中<br />
    /// &lt;/summary&gt;<br />
    public class ConfigAppSettings<br />
    {<br />
        /// &lt;summary&gt;<br />
        /// 写入值<br />
        /// &lt;/summary&gt;<br />
        /// &lt;param name=&#8221;key&#8221;&gt;&lt;/param&gt;<br />
        /// &lt;param name=&#8221;value&#8221;&gt;&lt;/param&gt;<br />
        public static void SetValue(string key, string value)<br />
        {<br />
            //增加的内容写在appSettings段下 &lt;add key=&#8221;RegCode&#8221; value=&#8221;0&#8243;/&gt;<br />
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);<br />
            if (config.AppSettings.Settings[key] == null)<br />
            {<br />
                config.AppSettings.Settings.Add(key, value);<br />
            }<br />
            else<br />
            {<br />
                config.AppSettings.Settings[key].Value = value;<br />
            }<br />
            config.Save(ConfigurationSaveMode.Modified);<br />
            ConfigurationManager.RefreshSection(&#8220;appSettings&#8221;);//重新加载新的配置文件<br />
        }</p>
<p>        /// &lt;summary&gt;<br />
        /// 读取指定key的值<br />
        /// &lt;/summary&gt;<br />
        /// &lt;param name=&#8221;key&#8221;&gt;&lt;/param&gt;<br />
        /// &lt;returns&gt;&lt;/returns&gt;<br />
        public static string GetValue(string key)<br />
        {<br />
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);<br />
            if (config.AppSettings.Settings[key] == null)<br />
                return &#8220;&#8221;;<br />
            else<br />
                return config.AppSettings.Settings[key].Value;<br />
        }</p>
<p>    }<br />
}</p>
<p>其实也很简单，用这两个封装过的方法就可以了。</p>
<p>需要注意的是，在IDE调试时，写入的配置文件其实是写在了.vshost.exe.config文件中，所以你在.exe.config中是看不到的。只有直接运行exe文件时，才会正确写入到.exe.config中。</p>
<p>另附2MD5类，</p>
<p>using System;<br />
using System.Collections;<br />
using System.IO;<br />
public class MD5 {<br />
//static state variables<br />
private static UInt32 A;<br />
private static UInt32 B;<br />
private static UInt32 C;<br />
private static UInt32 D;<br />
//number of bits to rotate in tranforming<br />
private const int S11 = 7;<br />
private const int S12 = 12;<br />
private const int S13 = 17;<br />
private const int S14 = 22;<br />
private const int S21 = 5;<br />
private const int S22 = 9;<br />
private const int S23 = 14;<br />
private const int S24 = 20;<br />
private const int S31 = 4;<br />
private const int S32 = 11;<br />
private const int S33 = 16;<br />
private const int S34 = 23;<br />
private const int S41 = 6;<br />
private const int S42 = 10;<br />
private const int S43 = 15;<br />
private const int S44 = 21;</p>
<p>/* F, G, H and I are basic MD5 functions.<br />
* 四个非线性函数:<br />
*<br />
* F(X,Y,Z) =(X&amp;Y)|((~X)&amp;Z)<br />
* G(X,Y,Z) =(X&amp;Z)|(Y&amp;(~Z))<br />
* H(X,Y,Z) =X^Y^Z<br />
* I(X,Y,Z)=Y^(X|(~Z))<br />
*<br />
* （&amp;与，|或，~非，^异或）<br />
*/<br />
private static UInt32 F(UInt32 x,UInt32 y,UInt32 z){<br />
return (x&amp;y)|((~x)&amp;z);<br />
}<br />
private static UInt32 G(UInt32 x,UInt32 y,UInt32 z){<br />
return (x&amp;z)|(y&amp;(~z));<br />
}<br />
private static UInt32 H(UInt32 x,UInt32 y,UInt32 z){<br />
return x^y^z;<br />
}<br />
private static UInt32 I(UInt32 x,UInt32 y,UInt32 z){<br />
return y^(x|(~z));<br />
}<br />
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.<br />
* Rotation is separate from addition to prevent recomputation.<br />
*/<br />
private static void FF(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){<br />
a = a + F(b,c,d) + mj + ti;<br />
a = a &lt;&lt; s | a &gt;&gt;(32-s);<br />
a += b;<br />
}<br />
private static void GG(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){<br />
a = a + G(b,c,d) + mj + ti;<br />
a = a &lt;&lt; s | a &gt;&gt;(32-s);<br />
a += b;<br />
}<br />
private static void HH(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){<br />
a = a + H(b,c,d) + mj + ti;<br />
a = a &lt;&lt; s | a &gt;&gt;(32-s);<br />
a += b;<br />
}<br />
private static void II(ref UInt32 a,UInt32 b,UInt32 c,UInt32 d,UInt32 mj,int s,UInt32 ti){<br />
a = a + I(b,c,d) + mj + ti;<br />
a = a &lt;&lt; s | a &gt;&gt;(32-s);<br />
a += b;<br />
}<br />
private static void MD5_Init(){<br />
A=0&#215;67452301; //in memory, this is 0&#215;01234567<br />
B=0xefcdab89; //in memory, this is 0x89abcdef<br />
C=0x98badcfe; //in memory, this is 0xfedcba98<br />
D=0&#215;10325476; //in memory, this is 0&#215;76543210<br />
}<br />
private static UInt32[] MD5_Append(byte[] input){<br />
int zeros=0;<br />
int ones =1;<br />
int size=0;<br />
int n = input.Length;<br />
int m = n%64;<br />
if( m &lt; 56 ){<br />
zeros = 55-m;<br />
size=n-m+64;<br />
}<br />
else if (m==56){<br />
zeros = 0;<br />
ones = 0;<br />
size=n+8;<br />
}<br />
else{<br />
zeros = 63-m+56;<br />
size=n+64-m+64;<br />
}<br />
ArrayList bs = new ArrayList(input);<br />
if(ones==1){<br />
bs.Add( (byte)0&#215;80 ); // 0&#215;80 = $10000000<br />
}<br />
for(int i=0;ibs.Add( (byte)0 );<br />
}<br />
UInt64 N = (UInt64) n * 8;<br />
byte h1=(byte)(N&amp;0xFF);<br />
byte h2=(byte)((N&gt;&gt;8)&amp;0xFF);<br />
byte h3=(byte)((N&gt;&gt;16)&amp;0xFF);<br />
byte h4=(byte)((N&gt;&gt;24)&amp;0xFF);<br />
byte h5=(byte)((N&gt;&gt;32)&amp;0xFF);<br />
byte h6=(byte)((N&gt;&gt;40)&amp;0xFF);<br />
byte h7=(byte)((N&gt;&gt;48)&amp;0xFF);<br />
byte h8=(byte)(N&gt;&gt;56);<br />
bs.Add(h1);<br />
bs.Add(h2);<br />
bs.Add(h3);<br />
bs.Add(h4);<br />
bs.Add(h5);<br />
bs.Add(h6);<br />
bs.Add(h7);<br />
bs.Add(h8);<br />
byte[] ts=(byte[])bs.ToArray(typeof(byte));<br />
/* Decodes input (byte[]) into output (UInt32[]). Assumes len is<br />
* a multiple of 4.<br />
*/<br />
UInt32[] output = new UInt32[size/4];<br />
for(Int64 i=0,j=0;ioutput[j]=(UInt32)(ts[i] | ts[i+1]&lt;&lt;8 | ts[i+2]&lt;&lt;16 | ts[i+3]&lt;&lt;24);<br />
}<br />
return output;<br />
}<br />
private static UInt32[] MD5_Trasform(UInt32[] x){<br />
UInt32 a,b,c,d;<br />
for(int k=0;ka=A;<br />
b=B;<br />
c=C;<br />
d=D;</p>
<p>/* Round 1 */<br />
FF (ref a, b, c, d, x[k+ 0], S11, 0xd76aa478); /* 1 */<br />
FF (ref d, a, b, c, x[k+ 1], S12, 0xe8c7b756); /* 2 */<br />
FF (ref c, d, a, b, x[k+ 2], S13, 0x242070db); /* 3 */<br />
FF (ref b, c, d, a, x[k+ 3], S14, 0xc1bdceee); /* 4 */<br />
FF (ref a, b, c, d, x[k+ 4], S11, 0xf57c0faf); /* 5 */<br />
FF (ref d, a, b, c, x[k+ 5], S12, 0x4787c62a); /* 6 */<br />
FF (ref c, d, a, b, x[k+ 6], S13, 0xa8304613); /* 7 */<br />
FF (ref b, c, d, a, x[k+ 7], S14, 0xfd469501); /* 8 */<br />
FF (ref a, b, c, d, x[k+ 8], S11, 0x698098d8); /* 9 */<br />
FF (ref d, a, b, c, x[k+ 9], S12, 0x8b44f7af); /* 10 */<br />
FF (ref c, d, a, b, x[k+10], S13, 0xffff5bb1); /* 11 */<br />
FF (ref b, c, d, a, x[k+11], S14, 0x895cd7be); /* 12 */<br />
FF (ref a, b, c, d, x[k+12], S11, 0x6b901122); /* 13 */<br />
FF (ref d, a, b, c, x[k+13], S12, 0xfd987193); /* 14 */<br />
FF (ref c, d, a, b, x[k+14], S13, 0xa679438e); /* 15 */<br />
FF (ref b, c, d, a, x[k+15], S14, 0x49b40821); /* 16 */<br />
/* Round 2 */<br />
GG (ref a, b, c, d, x[k+ 1], S21, 0xf61e2562); /* 17 */<br />
GG (ref d, a, b, c, x[k+ 6], S22, 0xc040b340); /* 18 */<br />
GG (ref c, d, a, b, x[k+11], S23, 0x265e5a51); /* 19 */<br />
GG (ref b, c, d, a, x[k+ 0], S24, 0xe9b6c7aa); /* 20 */<br />
GG (ref a, b, c, d, x[k+ 5], S21, 0xd62f105d); /* 21 */<br />
GG (ref d, a, b, c, x[k+10], S22, 0&#215;2441453); /* 22 */<br />
GG (ref c, d, a, b, x[k+15], S23, 0xd8a1e681); /* 23 */<br />
GG (ref b, c, d, a, x[k+ 4], S24, 0xe7d3fbc8); /* 24 */<br />
GG (ref a, b, c, d, x[k+ 9], S21, 0x21e1cde6); /* 25 */<br />
GG (ref d, a, b, c, x[k+14], S22, 0xc33707d6); /* 26 */<br />
GG (ref c, d, a, b, x[k+ 3], S23, 0xf4d50d87); /* 27 */<br />
GG (ref b, c, d, a, x[k+ 8], S24, 0x455a14ed); /* 28 */<br />
GG (ref a, b, c, d, x[k+13], S21, 0xa9e3e905); /* 29 */<br />
GG (ref d, a, b, c, x[k+ 2], S22, 0xfcefa3f8); /* 30 */<br />
GG (ref c, d, a, b, x[k+ 7], S23, 0x676f02d9); /* 31 */<br />
GG (ref b, c, d, a, x[k+12], S24, 0x8d2a4c8a); /* 32 */<br />
/* Round 3 */<br />
HH (ref a, b, c, d, x[k+ 5], S31, 0xfffa3942); /* 33 */<br />
HH (ref d, a, b, c, x[k+ 8], S32, 0x8771f681); /* 34 */<br />
HH (ref c, d, a, b, x[k+11], S33, 0x6d9d6122); /* 35 */<br />
HH (ref b, c, d, a, x[k+14], S34, 0xfde5380c); /* 36 */<br />
HH (ref a, b, c, d, x[k+ 1], S31, 0xa4beea44); /* 37 */<br />
HH (ref d, a, b, c, x[k+ 4], S32, 0x4bdecfa9); /* 38 */<br />
HH (ref c, d, a, b, x[k+ 7], S33, 0xf6bb4b60); /* 39 */<br />
HH (ref b, c, d, a, x[k+10], S34, 0xbebfbc70); /* 40 */<br />
HH (ref a, b, c, d, x[k+13], S31, 0x289b7ec6); /* 41 */<br />
HH (ref d, a, b, c, x[k+ 0], S32, 0xeaa127fa); /* 42 */<br />
HH (ref c, d, a, b, x[k+ 3], S33, 0xd4ef3085); /* 43 */<br />
HH (ref b, c, d, a, x[k+ 6], S34, 0x4881d05); /* 44 */<br />
HH (ref a, b, c, d, x[k+ 9], S31, 0xd9d4d039); /* 45 */<br />
HH (ref d, a, b, c, x[k+12], S32, 0xe6db99e5); /* 46 */<br />
HH (ref c, d, a, b, x[k+15], S33, 0x1fa27cf8); /* 47 */<br />
HH (ref b, c, d, a, x[k+ 2], S34, 0xc4ac5665); /* 48 */<br />
/* Round 4 */<br />
II (ref a, b, c, d, x[k+ 0], S41, 0xf4292244); /* 49 */<br />
II (ref d, a, b, c, x[k+ 7], S42, 0x432aff97); /* 50 */<br />
II (ref c, d, a, b, x[k+14], S43, 0xab9423a7); /* 51 */<br />
II (ref b, c, d, a, x[k+ 5], S44, 0xfc93a039); /* 52 */<br />
II (ref a, b, c, d, x[k+12], S41, 0x655b59c3); /* 53 */<br />
II (ref d, a, b, c, x[k+ 3], S42, 0x8f0ccc92); /* 54 */<br />
II (ref c, d, a, b, x[k+10], S43, 0xffeff47d); /* 55 */<br />
II (ref b, c, d, a, x[k+ 1], S44, 0x85845dd1); /* 56 */<br />
II (ref a, b, c, d, x[k+ 8], S41, 0x6fa87e4f); /* 57 */<br />
II (ref d, a, b, c, x[k+15], S42, 0xfe2ce6e0); /* 58 */<br />
II (ref c, d, a, b, x[k+ 6], S43, 0xa3014314); /* 59 */<br />
II (ref b, c, d, a, x[k+13], S44, 0x4e0811a1); /* 60 */<br />
II (ref a, b, c, d, x[k+ 4], S41, 0xf7537e82); /* 61 */<br />
II (ref d, a, b, c, x[k+11], S42, 0xbd3af235); /* 62 */<br />
II (ref c, d, a, b, x[k+ 2], S43, 0x2ad7d2bb); /* 63 */<br />
II (ref b, c, d, a, x[k+ 9], S44, 0xeb86d391); /* 64 */<br />
A+=a;<br />
B+=b;<br />
C+=c;<br />
D+=d;<br />
}<br />
return new UInt32[]{A,B,C,D};<br />
}<br />
public static byte[] MD5Array(byte[] input){<br />
MD5_Init();<br />
UInt32[] block = MD5_Append(input);<br />
UInt32[] bits = MD5_Trasform(block);<br />
/* Encodes bits (UInt32[]) into output (byte[]). Assumes len is<br />
* a multiple of 4.<br />
*/<br />
byte[] output=new byte[bits.Length*4];<br />
for(int i=0,j=0;ioutput[j] = (byte)(bits[i] &amp; 0xff);<br />
output[j+1] = (byte)((bits[i] &gt;&gt;8) &amp; 0xff);<br />
output[j+2] = (byte)((bits[i] &gt;&gt;16) &amp; 0xff);<br />
output[j+3] = (byte)((bits[i] &gt;&gt;24) &amp; 0xff);<br />
}<br />
return output;<br />
}<br />
public static string ArrayToHexString(byte[] array,bool uppercase){<br />
string hexString=&#8221;";<br />
string format=&#8221;x2&#8243;;<br />
if(uppercase){<br />
format=&#8221;X2&#8243;;<br />
}<br />
foreach(byte b in array){<br />
hexString += b.ToString(format);<br />
}<br />
return hexString;<br />
}<br />
public static string MDString(string message){<br />
char[] c = message.ToCharArray();<br />
byte[] b = new byte;<br />
for(int i=0;ib[i]=(byte)c[i];<br />
}<br />
byte[] digest = MD5Array(b);<br />
return ArrayToHexString(digest,false);<br />
}<br />
public static string MDFile(string fileName){<br />
FileStream fs=File.Open(fileName,FileMode.Open,FileAccess.Read);<br />
byte[] array=new byte[fs.Length];<br />
fs.Read(array,0,(int)fs.Length);<br />
byte[] digest = MD5Array(array);<br />
fs.Close();<br />
return ArrayToHexString(digest,false);<br />
}<br />
public static string Test(string message){<br />
return &#8220;rnMD5 (&#8220;&#8221;+message+&#8221;") = &#8221; + MD5.MDString(message);<br />
}<br />
public static string TestSuite(){<br />
string s = &#8220;&#8221;;<br />
s+=Test(&#8220;&#8221;);<br />
s+=Test(&#8220;a&#8221;);<br />
s+=Test(&#8220;abc&#8221;);<br />
s+=Test(&#8220;message digest&#8221;);<br />
s+=Test(&#8220;abcdefghijklmnopqrstuvwxyz&#8221;);<br />
s+=Test(&#8220;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789&#8243;);<br />
s+=Test(&#8220;12345678901234567890123456789012345678901234567890123456789012345678901234567890&#8243;);<br />
return s;<br />
}<br />
}<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>using System;<br />
using System.Text;<br />
using System.IO;<br />
using System.Globalization;<br />
using System.Security.Cryptography;<br />
class MD5<br />
{<br />
    ///MD5加密<br />
    public string MD5Encrypt(string pToEncrypt, string sKey)<br />
    {<br />
        DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();<br />
        byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);<br />
        md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
        md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
        MemoryStream ms = new MemoryStream();<br />
        CryptoStream cs = new CryptoStream(ms, md5.CreateEncryptor(), CryptoStreamMode.Write);<br />
        cs.Write(inputByteArray, 0, inputByteArray.Length);<br />
        cs.FlushFinalBlock();<br />
        StringBuilder ret = new StringBuilder();<br />
        foreach (byte b in ms.ToArray())<br />
        {<br />
            ret.AppendFormat(&#8220;{0:X2}&#8221;, b);<br />
        }<br />
        ret.ToString();<br />
        return ret.ToString();<br />
    }</p>
<p>    ///MD5解密<br />
    public string MD5Decrypt(string pToDecrypt, string sKey)<br />
    {<br />
        DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();</p>
<p>        byte[] inputByteArray = new byte[pToDecrypt.Length / 2];<br />
        for (int x = 0; x &lt; pToDecrypt.Length / 2; x++)<br />
        {<br />
            int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));<br />
            inputByteArray[x] = (byte)i;<br />
        }</p>
<p>        md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
        md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
        MemoryStream ms = new MemoryStream();<br />
        CryptoStream cs = new CryptoStream(ms, md5.CreateDecryptor(), CryptoStreamMode.Write);<br />
        cs.Write(inputByteArray, 0, inputByteArray.Length);<br />
        cs.FlushFinalBlock();</p>
<p>        StringBuilder ret = new StringBuilder();</p>
<p>        return System.Text.Encoding.Default.GetString(ms.ToArray());<br />
    }</p>
<p>// 创建Key<br />
public string GenerateKey()<br />
{<br />
DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();<br />
return ASCIIEncoding.ASCII.GetString(desCrypto.Key);<br />
}<br />
// 加密字符串<br />
public string EncryptString(string sInputString, string sKey)<br />
{<br />
byte [] data = Encoding.UTF8.GetBytes(sInputString);<br />
DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();<br />
md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
ICryptoTransform desencrypt = md5.CreateEncryptor();<br />
byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);<br />
return BitConverter.ToString(result);<br />
}<br />
// 解密字符串<br />
public string DecryptString(string sInputString, string sKey)<br />
{<br />
string [] sInput = sInputString.Split(&#8220;-&#8221;.ToCharArray());<br />
byte [] data = new byte[sInput.Length];<br />
for(int i = 0; i &lt; sInput.Length; i++)<br />
{<br />
data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);<br />
}<br />
DESCryptoServiceProvider md5 = new DESCryptoServiceProvider();<br />
md5.Key = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
md5.IV = ASCIIEncoding.ASCII.GetBytes(sKey);<br />
ICryptoTransform desencrypt = md5.CreateDecryptor();<br />
byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);<br />
return Encoding.UTF8.GetString(result);<br />
}<br />
}<br />
class Test<br />
{<br />
    static void Main()<br />
    {<br />
        bool sy = true;<br />
        char a;<br />
        MD5 md5 = new MD5();<br />
        string key = md5.GenerateKey();<br />
        string s0 = &#8221; microsoft &#8220;;<br />
        string s1 = md5.EncryptString(s0, key);<br />
        string s2 = md5.DecryptString(s1, key);<br />
        Console.WriteLine(&#8220;原串: [{0}]&#8220;, s0);<br />
        Console.WriteLine(&#8220;加密: [{0}]&#8220;, s1);<br />
        Console.WriteLine(&#8220;解密: [{0}]&#8220;, s2);<br />
        while (sy)<br />
        {<br />
            Console.WriteLine(&#8220;是否输入字符串？ Y/N&#8221;);<br />
            a = Convert.ToChar(Console.ReadLine());<br />
            if ( a == &#8216;Y&#8217; || a == &#8216;y&#8217;)<br />
            {<br />
                sy = true;<br />
                Console.WriteLine(&#8221; 请输入所要验证的字符串 &#8220;);<br />
                s0 = Console.ReadLine();<br />
                s1 = md5.EncryptString(s0, key);<br />
                s2 = md5.DecryptString(s1, key);<br />
                Console.WriteLine(&#8220;原串: [{0}]&#8220;, s0);<br />
                Console.WriteLine(&#8220;加密: [{0}]&#8220;, s1);<br />
                Console.WriteLine(&#8220;解密: [{0}]&#8220;, s2);<br />
            }<br />
            else<br />
                if (a == &#8216;N&#8217; || a == &#8216;n&#8217;)<br />
                    sy = false;<br />
                else<br />
                    Console.WriteLine(&#8221; 您一定输错了，请重新输入 ！&#8221;);<br />
        }<br />
    }<br />
}</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/c%e8%8e%b7%e5%8f%96cpu%e7%9a%84%e5%88%a9%e7%94%a8%e7%8e%87%e4%bb%a3%e7%a0%81/' rel='bookmark' title='Permanent Link: C#获取CPU的利用率代码'>C#获取CPU的利用率代码</a></li>
<li><a href='http://cq-cser.cn/2010/04/%e9%9a%8f%e7%ac%94-md5%e6%82%b2%e5%89%a7/' rel='bookmark' title='Permanent Link: 随笔-MD5悲剧-c#'>随笔-MD5悲剧-c#</a></li>
<li><a href='http://cq-cser.cn/2010/01/asp-net%e5%8a%a0%e5%af%86cookies/' rel='bookmark' title='Permanent Link: ASP.NET加密Cookies'>ASP.NET加密Cookies</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/04/app-config-c%e8%af%bb%e5%86%99%e7%b1%bb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VISUAL C#系列</title>
		<link>http://cq-cser.cn/2010/04/visual-c%e7%b3%bb%e5%88%97/</link>
		<comments>http://cq-cser.cn/2010/04/visual-c%e7%b3%bb%e5%88%97/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 05:21:30 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1135</guid>
		<description><![CDATA[  private void button2_Click(object sender, EventArgs e)         {//获取Cmd命令行窗口中显示的内容             Process MyProcess = new Process();             //设定程序名             MyProcess.StartInfo.FileName = &#8220;cmd.exe&#8221;;             //关闭Shell的使用             MyProcess.StartInfo.UseShellExecute = false;             //重定向标准输入             MyProcess.StartInfo.RedirectStandardInput = true;             //重定向标准输出             MyProcess.StartInfo.RedirectStandardOutput = true;             //重定向错误输出             MyProcess.StartInfo.RedirectStandardError = true;             //设置不显示窗口             MyProcess.StartInfo.CreateNoWindow = true;             //执行DOS命令             MyProcess.Start(); [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e5%90%af%e5%8a%a8%e6%8e%a7%e5%88%b6%e9%9d%a2%e6%9d%bf%e5%90%84%e9%80%89%e9%a1%b9c/' rel='bookmark' title='Permanent Link: 启动控制面板各选项:c#'>启动控制面板各选项:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/' rel='bookmark' title='Permanent Link: wmi查询管理:c#'>wmi查询管理:c#</a></li>
<li><a href='http://cq-cser.cn/2009/12/asp-net%e7%9a%84%e5%87%a0%e7%a7%8d%e9%a1%b5%e9%9d%a2%e4%bc%a0%e5%80%bc%e6%96%b9%e6%b3%95/' rel='bookmark' title='Permanent Link: asp.net的几种页面传值方法'>asp.net的几种页面传值方法</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>  private void button2_Click(object sender, EventArgs e)<br />
        {//获取Cmd命令行窗口中显示的内容<br />
            Process MyProcess = new Process();<br />
            //设定程序名<br />
            MyProcess.StartInfo.FileName = &#8220;cmd.exe&#8221;;<br />
            //关闭Shell的使用<br />
            MyProcess.StartInfo.UseShellExecute = false;<br />
            //重定向标准输入<br />
            MyProcess.StartInfo.RedirectStandardInput = true;<br />
            //重定向标准输出<br />
            MyProcess.StartInfo.RedirectStandardOutput = true;<br />
            //重定向错误输出<br />
            MyProcess.StartInfo.RedirectStandardError = true;<br />
            //设置不显示窗口<br />
            MyProcess.StartInfo.CreateNoWindow = true;<br />
            //执行DOS命令<br />
            MyProcess.Start();<br />
            MyProcess.StandardInput.WriteLine(&#8220;Dir C:\\&#8221;);<br />
            MyProcess.StandardInput.WriteLine(&#8220;exit&#8221;);<br />
            //从输出流获取命令执行结果，<br />
            string MyInfo = MyProcess.StandardOutput.ReadToEnd();<br />
            MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
        }</p>
<p><span id="more-1135"></span>        private void button3_Click(object sender, EventArgs e)<br />
        {//同步加载并播放声音文件<br />
            SoundPlayer MyPlayer= new SoundPlayer();<br />
            string MyFileName = Application.StartupPath + &#8220;<a href="file://\\WindowsXPStart.wav">\\WindowsXPStart.wav</a>&#8220;;<br />
            MyPlayer.SoundLocation = MyFileName;<br />
            MyPlayer.Load();<br />
            MyPlayer.PlaySync();       <br />
        }</p>
<p>        private void button4_Click(object sender, EventArgs e)<br />
        {//异步加载并播放声音文件<br />
            SoundPlayer MyPlayer = new SoundPlayer();<br />
            string MyFileName = Application.StartupPath + &#8220;<a href="file://\\WindowsXPStart.wav">\\WindowsXPStart.wav</a>&#8220;;<br />
            MyPlayer.SoundLocation = MyFileName;<br />
           MyPlayer.LoadAsync();<br />
            MyPlayer.Play();<br />
        }</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e5%90%af%e5%8a%a8%e6%8e%a7%e5%88%b6%e9%9d%a2%e6%9d%bf%e5%90%84%e9%80%89%e9%a1%b9c/' rel='bookmark' title='Permanent Link: 启动控制面板各选项:c#'>启动控制面板各选项:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/' rel='bookmark' title='Permanent Link: wmi查询管理:c#'>wmi查询管理:c#</a></li>
<li><a href='http://cq-cser.cn/2009/12/asp-net%e7%9a%84%e5%87%a0%e7%a7%8d%e9%a1%b5%e9%9d%a2%e4%bc%a0%e5%80%bc%e6%96%b9%e6%b3%95/' rel='bookmark' title='Permanent Link: asp.net的几种页面传值方法'>asp.net的几种页面传值方法</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/04/visual-c%e7%b3%bb%e5%88%97/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CrossThreadDemo跨线程安全编程/ORZ</title>
		<link>http://cq-cser.cn/2010/04/crossthreaddemo%e8%b7%a8%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e7%bc%96%e7%a8%8borz/</link>
		<comments>http://cq-cser.cn/2010/04/crossthreaddemo%e8%b7%a8%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e7%bc%96%e7%a8%8borz/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 10:51:48 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[WEB]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Thread]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1133</guid>
		<description><![CDATA[using System; using System.ComponentModel; using System.Threading; using System.Windows.Forms; namespace CrossThreadDemo {     public class Form1 : Form     {         // This delegate enables asynchronous calls for setting         // the text property on a TextBox control.         delegate void SetTextCallback(string text);         // This thread is used to demonstrate both thread-safe and         // [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/c%e8%8e%b7%e5%8f%96cpu%e7%9a%84%e5%88%a9%e7%94%a8%e7%8e%87%e4%bb%a3%e7%a0%81/' rel='bookmark' title='Permanent Link: C#获取CPU的利用率代码'>C#获取CPU的利用率代码</a></li>
<li><a href='http://cq-cser.cn/2010/01/%e5%9c%a8webform%e4%b8%8a%e8%bf%9b%e8%a1%8c%e6%8b%96%e6%8b%bd/' rel='bookmark' title='Permanent Link: 在WebForm上进行拖拽'>在WebForm上进行拖拽</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/' rel='bookmark' title='Permanent Link: 调用rundll32等实现各种功能:c#'>调用rundll32等实现各种功能:c#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>using System;<br />
using System.ComponentModel;<br />
using System.Threading;<br />
using System.Windows.Forms;</p>
<p>namespace CrossThreadDemo<span id="more-1133"></span><br />
{<br />
    public class Form1 : Form<br />
    {<br />
        // This delegate enables asynchronous calls for setting<br />
        // the text property on a TextBox control.<br />
        delegate void SetTextCallback(string text);</p>
<p>        // This thread is used to demonstrate both thread-safe and<br />
        // unsafe ways to call a Windows Forms control.<br />
        private Thread demoThread = null;</p>
<p>        // This BackgroundWorker is used to demonstrate the<br />
        // preferred way of performing asynchronous operations.<br />
        private BackgroundWorker backgroundWorker1;</p>
<p>        private TextBox textBox1;<br />
        private Button setTextUnsafeBtn;<br />
        private Button setTextSafeBtn;<br />
        private Button setTextBackgroundWorkerBtn;</p>
<p>        private System.ComponentModel.IContainer components = null;</p>
<p>        public Form1()<br />
        {<br />
            InitializeComponent();<br />
        }</p>
<p>        protected override void Dispose(bool disposing)<br />
        {<br />
            if (disposing &amp;&amp; (components != null))<br />
            {<br />
                components.Dispose();<br />
            }<br />
            base.Dispose(disposing);<br />
        }</p>
<p>        // This event handler creates a thread that calls a<br />
        // Windows Forms control in an unsafe way.<br />
        private void setTextUnsafeBtn_Click(<br />
            object sender,<br />
            EventArgs e)<br />
        {<br />
            this.demoThread =<br />
                new Thread(new ThreadStart(this.ThreadProcUnsafe));</p>
<p>            this.demoThread.Start();<br />
        }</p>
<p>        // This method is executed on the worker thread and makes<br />
        // an unsafe call on the TextBox control.<br />
        private void ThreadProcUnsafe()<br />
        {<br />
            this.textBox1.Text = &#8220;This text was set unsafely.&#8221;;<br />
        }</p>
<p>        // This event handler creates a thread that calls a<br />
        // Windows Forms control in a thread-safe way.<br />
        private void setTextSafeBtn_Click(<br />
            object sender,<br />
            EventArgs e)<br />
        {<br />
            this.demoThread =<br />
                new Thread(new ThreadStart(this.ThreadProcSafe));</p>
<p>            this.demoThread.Start();<br />
        }</p>
<p>        // This method is executed on the worker thread and makes<br />
        // a thread-safe call on the TextBox control.<br />
        private void ThreadProcSafe()<br />
        {<br />
            this.SetText(&#8220;This text was set safely.&#8221;);<br />
        }</p>
<p>        // This method demonstrates a pattern for making thread-safe<br />
        // calls on a Windows Forms control.<br />
        //<br />
        // If the calling thread is different from the thread that<br />
        // created the TextBox control, this method creates a<br />
        // SetTextCallback and calls itself asynchronously using the<br />
        // Invoke method.<br />
        //<br />
        // If the calling thread is the same as the thread that created<br />
        // the TextBox control, the Text property is set directly.</p>
<p>        private void SetText(string text)<br />
        {<br />
            // InvokeRequired required compares the thread ID of the<br />
            // calling thread to the thread ID of the creating thread.<br />
            // If these threads are different, it returns true.<br />
            if (this.textBox1.InvokeRequired)<br />
            {<br />
                SetTextCallback d = new SetTextCallback(SetText);<br />
                this.Invoke(d, new object[] { text });<br />
            }<br />
            else<br />
            {<br />
                this.textBox1.Text = text;<br />
            }<br />
        }</p>
<p>        // This event handler starts the form&#8217;s<br />
        // BackgroundWorker by calling RunWorkerAsync.<br />
        //<br />
        // The Text property of the TextBox control is set<br />
        // when the BackgroundWorker raises the RunWorkerCompleted<br />
        // event.<br />
        private void setTextBackgroundWorkerBtn_Click(<br />
            object sender,<br />
            EventArgs e)<br />
        {<br />
            this.backgroundWorker1.RunWorkerAsync();<br />
        }</p>
<p>        // This event handler sets the Text property of the TextBox<br />
        // control. It is called on the thread that created the<br />
        // TextBox control, so the call is thread-safe.<br />
        //<br />
        // BackgroundWorker is the preferred way to perform asynchronous<br />
        // operations.</p>
<p>        private void backgroundWorker1_RunWorkerCompleted(<br />
            object sender,<br />
            RunWorkerCompletedEventArgs e)<br />
        {<br />
            this.textBox1.Text =<br />
                &#8220;This text was set safely by BackgroundWorker.&#8221;;<br />
        }</p>
<p>        #region Windows Form Designer generated code</p>
<p>        private void InitializeComponent()<br />
        {<br />
            this.textBox1 = new System.Windows.Forms.TextBox();<br />
            this.setTextUnsafeBtn = new System.Windows.Forms.Button();<br />
            this.setTextSafeBtn = new System.Windows.Forms.Button();<br />
            this.setTextBackgroundWorkerBtn = new System.Windows.Forms.Button();<br />
            this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();<br />
            this.SuspendLayout();<br />
            //<br />
            // textBox1<br />
            //<br />
            this.textBox1.Location = new System.Drawing.Point(12, 12);<br />
            this.textBox1.Name = &#8220;textBox1&#8243;;<br />
            this.textBox1.Size = new System.Drawing.Size(240, 20);<br />
            this.textBox1.TabIndex = 0;<br />
            //<br />
            // setTextUnsafeBtn<br />
            //<br />
            this.setTextUnsafeBtn.Location = new System.Drawing.Point(15, 55);<br />
            this.setTextUnsafeBtn.Name = &#8220;setTextUnsafeBtn&#8221;;<br />
            this.setTextUnsafeBtn.TabIndex = 1;<br />
            this.setTextUnsafeBtn.Text = &#8220;Unsafe Call&#8221;;<br />
            this.setTextUnsafeBtn.Click += new System.EventHandler(this.setTextUnsafeBtn_Click);<br />
            //<br />
            // setTextSafeBtn<br />
            //<br />
            this.setTextSafeBtn.Location = new System.Drawing.Point(96, 55);<br />
            this.setTextSafeBtn.Name = &#8220;setTextSafeBtn&#8221;;<br />
            this.setTextSafeBtn.TabIndex = 2;<br />
            this.setTextSafeBtn.Text = &#8220;Safe Call&#8221;;<br />
            this.setTextSafeBtn.Click += new System.EventHandler(this.setTextSafeBtn_Click);<br />
            //<br />
            // setTextBackgroundWorkerBtn<br />
            //<br />
            this.setTextBackgroundWorkerBtn.Location = new System.Drawing.Point(177, 55);<br />
            this.setTextBackgroundWorkerBtn.Name = &#8220;setTextBackgroundWorkerBtn&#8221;;<br />
            this.setTextBackgroundWorkerBtn.TabIndex = 3;<br />
            this.setTextBackgroundWorkerBtn.Text = &#8220;Safe BW Call&#8221;;<br />
            this.setTextBackgroundWorkerBtn.Click += new System.EventHandler(this.setTextBackgroundWorkerBtn_Click);<br />
            //<br />
            // backgroundWorker1<br />
            //<br />
            this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);<br />
            //<br />
            // Form1<br />
            //<br />
            this.ClientSize = new System.Drawing.Size(268, 96);<br />
            this.Controls.Add(this.setTextBackgroundWorkerBtn);<br />
            this.Controls.Add(this.setTextSafeBtn);<br />
            this.Controls.Add(this.setTextUnsafeBtn);<br />
            this.Controls.Add(this.textBox1);<br />
            this.Name = &#8220;Form1&#8243;;<br />
            this.Text = &#8220;Form1&#8243;;<br />
            this.ResumeLayout(false);<br />
            this.PerformLayout();</p>
<p>        }</p>
<p>        #endregion<br />
        [STAThread]<br />
        static void Main()<br />
        {<br />
            Application.EnableVisualStyles();<br />
            Application.Run(new Form1());<br />
        }</p>
<p>    }<br />
}</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/01/c%e8%8e%b7%e5%8f%96cpu%e7%9a%84%e5%88%a9%e7%94%a8%e7%8e%87%e4%bb%a3%e7%a0%81/' rel='bookmark' title='Permanent Link: C#获取CPU的利用率代码'>C#获取CPU的利用率代码</a></li>
<li><a href='http://cq-cser.cn/2010/01/%e5%9c%a8webform%e4%b8%8a%e8%bf%9b%e8%a1%8c%e6%8b%96%e6%8b%bd/' rel='bookmark' title='Permanent Link: 在WebForm上进行拖拽'>在WebForm上进行拖拽</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/' rel='bookmark' title='Permanent Link: 调用rundll32等实现各种功能:c#'>调用rundll32等实现各种功能:c#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/04/crossthreaddemo%e8%b7%a8%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e7%bc%96%e7%a8%8borz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>微软企业库DAAB4.1试用</title>
		<link>http://cq-cser.cn/2010/03/%e5%be%ae%e8%bd%af%e4%bc%81%e4%b8%9a%e5%ba%93daab4-1%e8%af%95%e7%94%a8/</link>
		<comments>http://cq-cser.cn/2010/03/%e5%be%ae%e8%bd%af%e4%bc%81%e4%b8%9a%e5%ba%93daab4-1%e8%af%95%e7%94%a8/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 14:35:57 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[MVC]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[4.1]]></category>
		<category><![CDATA[DAAB]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1098</guid>
		<description><![CDATA[下面2个系列讲的都不错 http://www.cnblogs.com/Terrylee/archive/2006/07/03/enterprise_library2_1.html http://www.cnblogs.com/HCOONa/category/172235.html 下面是MSDN的大牛 http://blogs.msdn.com/tomholl/archive/tags/Enterprise+Library/default.aspx 按他的说法搞了到最后也没用起来Enterprise Library Configuration，反倒是直接reference和using了OK using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using Microsoft.Practices.EnterpriseLibrary.Configuration; using Microsoft.Practices.EnterpriseLibrary.Common; using Microsoft.Practices.EnterpriseLibrary.Data; using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling; using System.Text; using System.Data.Common; namespace WebApplication1 { public partial class ListSection : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {  [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/%e5%88%86%e9%a1%b5%e6%8e%a7%e4%bb%b6%e5%88%86%e9%a1%b5%e7%b1%bb/' rel='bookmark' title='Permanent Link: 分页控件/分页类'>分页控件/分页类</a></li>
<li><a href='http://cq-cser.cn/2009/12/one-windows%e5%90%8e%e5%8f%b0%e6%9c%8d%e5%8a%a1-net%e7%9a%84c%e7%89%88/' rel='bookmark' title='Permanent Link: one Windows后台服务(.Net的C#版)'>one Windows后台服务(.Net的C#版)</a></li>
<li><a href='http://cq-cser.cn/2010/01/c%e5%88%9b%e5%bb%baexcel%e6%96%87%e4%bb%b6/' rel='bookmark' title='Permanent Link: C#创建Excel文件'>C#创建Excel文件</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>下面2个系列讲的都不错</p>
<p>http://www.cnblogs.com/Terrylee/archive/2006/07/03/enterprise_library2_1.html</p>
<p>http://www.cnblogs.com/HCOONa/category/172235.html</p>
<p>下面是MSDN的大牛</p>
<p>http://blogs.msdn.com/tomholl/archive/tags/Enterprise+Library/default.aspx</p>
<p>按他的说法搞了到最后也没用起来Enterprise Library Configuration，反倒是直接reference和using了OK</p>
<p><a href="http://cq-cser.cn/wp-content/uploads/2010/03/123.png"><img class="alignnone size-full wp-image-1099" title="123" src="http://cq-cser.cn/wp-content/uploads/2010/03/123.png" alt="123" width="380" height="84" /></a></p>
<p><span id="more-1098"></span>using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Web;<br />
using System.Web.UI;<br />
using System.Web.UI.WebControls;<br />
using System.Data.SqlClient;<br />
using System.Data;<br />
using Microsoft.Practices.EnterpriseLibrary.Configuration;<br />
using Microsoft.Practices.EnterpriseLibrary.Common;<br />
using Microsoft.Practices.EnterpriseLibrary.Data;<br />
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;<br />
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;<br />
using System.Text;<br />
using System.Data.Common;<br />
namespace WebApplication1<br />
{<br />
public partial class ListSection : System.Web.UI.Page<br />
{<br />
protected void Page_Load(object sender, EventArgs e)<br />
{  //Database db = DatabaseFactory.CreateDatabase();<br />
///创建数据库实例<br />
Database db = DatabaseFactory.CreateDatabase(&#8220;NorthWind&#8221;);<br />
string sqlcommand = &#8220;SELECT id,name,[order] FROM section ORDER BY [ORDER]&#8220;;<br />
DbCommand dbcommand = db.GetSqlStringCommand(sqlcommand);<br />
//  string sConnectionString = @&#8221;server=(local)\SQLEXPRESS;datebase=Forum;Trusted_Connection=Ture&#8221;;<br />
StringBuilder readData = new StringBuilder();<br />
using (IDataReader datareader=db.ExecuteReader(dbcommand))<br />
{<br />
readData.Append(&#8220;&lt;ul id=\&#8221;section_list\&#8221;&gt;&#8221;);<br />
while(datareader.Read())<br />
{<br />
readData.Append(&#8220;&lt;li id=\&#8221;");<br />
readData.Append(&#8220;li_&#8221;+datareader["id"]);<br />
readData.Append(&#8220;\&#8221;&gt;&#8221;);<br />
readData.Append(datareader["name"]);<br />
readData.Append(&#8220;&lt;/li&gt;&#8221;);<br />
}<br />
readData.Append(&#8220;&lt;/ul&gt;&#8221;);<br />
}<br />
Response.Write(readData.ToString());<br />
}<br />
}<br />
}</p>
<div><img src="file:///C:/Users/ADMINI%7E1/AppData/Local/Temp/L@UX@E6JP_OG30%5B_P067F2S.jpg" alt="" /></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<div><img src="file:///C:/Users/ADMINI%7E1/AppData/Local/Temp/L@UX@E6JP_OG30%5B_P067F2S.jpg" alt="" /></div>
</div>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/02/%e5%88%86%e9%a1%b5%e6%8e%a7%e4%bb%b6%e5%88%86%e9%a1%b5%e7%b1%bb/' rel='bookmark' title='Permanent Link: 分页控件/分页类'>分页控件/分页类</a></li>
<li><a href='http://cq-cser.cn/2009/12/one-windows%e5%90%8e%e5%8f%b0%e6%9c%8d%e5%8a%a1-net%e7%9a%84c%e7%89%88/' rel='bookmark' title='Permanent Link: one Windows后台服务(.Net的C#版)'>one Windows后台服务(.Net的C#版)</a></li>
<li><a href='http://cq-cser.cn/2010/01/c%e5%88%9b%e5%bb%baexcel%e6%96%87%e4%bb%b6/' rel='bookmark' title='Permanent Link: C#创建Excel文件'>C#创建Excel文件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/%e5%be%ae%e8%bd%af%e4%bc%81%e4%b8%9a%e5%ba%93daab4-1%e8%af%95%e7%94%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wmi查询管理:c#</title>
		<link>http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/</link>
		<comments>http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 13:14:00 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[wmi]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1088</guid>
		<description><![CDATA[namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) {//获取包含关于WMI方法的信息,添加&#8221;System.Management&#8221;引用 ManagementClass MyClass=new  ManagementClass(&#8220;Win32_Printer&#8221;); //ManagementClass MyClass = new ManagementClass(&#8220;Win32_VideoController&#8221;); String  MyInfo= &#8220;&#8221;; foreach(MethodData MyMethod in MyClass.Methods) { MyInfo += &#8220;\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221;; MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;**** &#8221; + MyMethod.Name + &#8221; ****&#8221;); MyInfo += &#8220;\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221;; MyInfo [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e8%af%bb%e5%86%99win-ini%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6c/' rel='bookmark' title='Permanent Link: 读写WIN.INI配置文件:c#'>读写WIN.INI配置文件:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e7%b3%bb%e7%bb%9f%e5%90%84%e5%8f%82%e6%95%b0/' rel='bookmark' title='Permanent Link: c#调用系统各参数'>c#调用系统各参数</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/' rel='bookmark' title='Permanent Link: 调用rundll32等实现各种功能:c#'>调用rundll32等实现各种功能:c#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span id="more-1088"></span></p>
<p>namespace WindowsApplication1<br />
{<br />
public partial class Form1 : Form<br />
{<br />
public Form1()<br />
{<br />
InitializeComponent();<br />
}</p>
<p>private void button1_Click(object sender, EventArgs e)<br />
{//获取包含关于WMI方法的信息,添加&#8221;System.Management&#8221;引用<br />
ManagementClass MyClass=new  ManagementClass(&#8220;Win32_Printer&#8221;);<br />
//ManagementClass MyClass = new ManagementClass(&#8220;Win32_VideoController&#8221;);<br />
String  MyInfo= &#8220;&#8221;;<br />
foreach(MethodData MyMethod in MyClass.Methods)<br />
{<br />
MyInfo += &#8220;\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221;;<br />
MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;**** &#8221; + MyMethod.Name + &#8221; ****&#8221;);<br />
MyInfo += &#8220;\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221;;<br />
MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;管理类的名称: &#8220;+ MyMethod.Origin);<br />
ManagementBaseObject MyInParams ;<br />
MyInParams = MyMethod.InParameters;<br />
if(!(MyInParams ==null))<br />
{<br />
foreach( PropertyData MyPropData in MyInParams.Properties)<br />
{<br />
MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;输入参数名称: &#8220;+ MyPropData.Name);<br />
MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;输入参数类型: &#8221; +MyPropData.Type.ToString());;<br />
}<br />
}</p>
<p>ManagementBaseObject MyOutParams = MyMethod.OutParameters;<br />
if(!(MyOutParams==null))<br />
{<br />
foreach (PropertyData MyPropData in MyOutParams.Properties)<br />
{<br />
MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;输出参数名称: &#8220;+MyPropData.Name);<br />
MyInfo += &#8220;\n&#8221;+ String.Format(&#8220;输出参数类型: &#8221; +MyPropData.Type.ToString());;<br />
}<br />
}<br />
}<br />
MessageBox.Show(MyInfo,&#8221;信息提示&#8221;,MessageBoxButtons.OK,MessageBoxIcon.Information);<br />
}</p>
<p>private void button2_Click(object sender, EventArgs e)<br />
{//获取打印队列信息，测试时启动一个打印操作<br />
String  Query= &#8220;SELECT * FROM Win32_PrintJob&#8221;;<br />
ManagementObjectSearcher JobQuery=new  ManagementObjectSearcher(Query);<br />
ManagementObjectCollection Jobs = JobQuery.Get();<br />
//显示打印队列中的操作信息<br />
String  MyInfo = &#8220;&#8221;;<br />
foreach(ManagementObject Job in Jobs)<br />
{<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;标题: &#8221; + Job["Caption"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;数据类型: &#8221; + Job["DataType"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;描述: &#8221; + Job["Description"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;文档: &#8221; + Job["Document"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;驱动名称: &#8221; + Job["DriverName"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;已打印时间: &#8221; + Job["ElapsedTime"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;主打印队列: &#8221; + Job["HostPrintQueue"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;安装日期: &#8221; + Job["InstallDate"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;作业Id: &#8221; + Job["JobId"].ToString());<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;作业状态: &#8221; + Job["JobStatus"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;名称: &#8221; + Job["Name"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;通知: &#8221; + Job["Notify"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;所有者: &#8221; + Job["Owner"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;已打印页数: &#8220;+ Job["PagesPrinted"].ToString());<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;参数: &#8221; + Job["Parameters"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;打印处理器: &#8221; + Job["PrintProcessor"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;打印队列: &#8221; + Job["Priority"].ToString());<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;大小: &#8221; + Job["Size"].ToString());<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;开始时间: &#8221; + Job["StartTime"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;状态: &#8221; + Job["Status"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;状态掩码: &#8221; + Job["StatusMask"].ToString());<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;提交时间: &#8221; + Job["TimeSubmitted"]);<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;总页数: &#8221; + Job["TotalPages"].ToString());<br />
MyInfo +=&#8221;\n&#8221;+ String.Format(&#8220;结束时间: &#8221; + Job["UntilTime"]);<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button3_Click(object sender, EventArgs e)<br />
{//使用WMI启动记事本程序<br />
ManagementClass MyProcess =new ManagementClass(&#8220;Win32_Process&#8221;);<br />
object[] MyArgs = { &#8220;notepad.exe&#8221;, null, null, 0 };<br />
MyProcess.InvokeMethod( &#8220;Create&#8221;, MyArgs);<br />
}</p>
<p>private void button4_Click(object sender, EventArgs e)<br />
{//获取Windows用户帐户和组信息<br />
String MyInfo  = &#8220;&#8221;;<br />
String UserQuery = &#8220;SELECT * FROM Win32_UserAccount &#8221; ;<br />
ManagementObjectSearcher Query=new ManagementObjectSearcher(UserQuery);<br />
MyInfo += &#8220;\n&#8221; + String.Format(new String(&#8216;*&#8217;, 60));<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8221; 用户&#8221;);<br />
MyInfo += &#8220;\n&#8221; + String.Format(new String(&#8216;*&#8217;, 60));<br />
foreach(ManagementObject User in Query.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;用户名称: &#8220;+User["Name"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;用户全名: &#8220;+User["FullName"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;安全ID: &#8220;+User["SID"].ToString());<br />
}<br />
String GroupQuery= &#8220;SELECT * FROM Win32_Group &#8220;;<br />
Query =new ManagementObjectSearcher(GroupQuery);<br />
MyInfo += &#8220;\n&#8221; + String.Format(new String(&#8216;*&#8217;, 60));<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8221; 组&#8221;);<br />
MyInfo += &#8220;\n&#8221; + String.Format(new String(&#8216;*&#8217;, 60));<br />
foreach(ManagementObject Group in Query.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;组名称: &#8221; +Group["Name"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;组描述: &#8221; + Group["Description"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;安全ID: &#8220;+ Group["SID"].ToString());<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button5_Click(object sender, EventArgs e)<br />
{//获取CPU编号<br />
ManagementClass MyClass= new ManagementClass(&#8220;Win32_Processor&#8221;);<br />
ManagementObjectCollection MyCollection= MyClass.GetInstances();<br />
String MyInfo=&#8221;当前系统CPU编号是：&#8221;;<br />
string MyCPUID = &#8220;&#8221;;<br />
foreach (ManagementObject MyObject in MyCollection)<br />
{<br />
MyCPUID= MyObject.Properties["ProcessorId"].Value.ToString();<br />
break;<br />
}<br />
MyInfo += MyCPUID;<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button6_Click(object sender, EventArgs e)<br />
{//获取第一块硬盘编号<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_PhysicalMedia&#8221;);<br />
String MyInfo = &#8220;第一块硬盘编号是：&#8221;;<br />
String MyHardDiskID = &#8220;&#8221;;<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyHardDiskID = MyObject["SerialNumber"].ToString().Trim();<br />
break;<br />
}<br />
MyInfo += MyHardDiskID;<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button7_Click(object sender, EventArgs e)<br />
{//获取系统已经停止的服务<br />
String MyInfo = &#8220;当前系统已经停止的服务包括：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_Service WHERE State= &#8216;Stopped&#8217;&#8221;);<br />
foreach(ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;State: &#8221; + MyObject["State"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;StartName: &#8221; + MyObject["StartName"].ToString());<br />
MyInfo+=&#8221;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button8_Click(object sender, EventArgs e)<br />
{//获取系统正在运行的服务<br />
String MyInfo = &#8220;当前系统正在运行的服务包括：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_Service WHERE State= &#8216;Running&#8217;&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;State: &#8221; + MyObject["State"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;StartName: &#8221; + MyObject["StartName"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button9_Click(object sender, EventArgs e)<br />
{//获取服务所属的程序名称<br />
String MyInfo = &#8220;系统注册服务的程序名称如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_Service&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
try<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;PathName: &#8221; + MyObject["PathName"].ToString());<br />
}<br />
catch<br />
{<br />
}<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button10_Click(object sender, EventArgs e)<br />
{//获取系统服务的描述信息<br />
String MyInfo = &#8220;系统注册服务的描述信息如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_Service&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
try<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Description: &#8221; + MyObject["Description"].ToString());<br />
}<br />
catch<br />
{<br />
}<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button11_Click(object sender, EventArgs e)<br />
{//获取系统服务的所有信息<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_Service&#8221;);<br />
FileStream MyStream = new FileStream(&#8220;C:\\MyText.txt&#8221;, FileMode.Create);<br />
StreamWriter MyWriter = new StreamWriter(MyStream, Encoding.Default);<br />
MyWriter.WriteLine( &#8220;系统注册服务的描述信息如下：&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyWriter.WriteLine(MyObject.GetText(TextFormat.WmiDtd20));<br />
MyWriter.WriteLine(&#8220;\n===========================================================&#8221;);<br />
}<br />
MyWriter.Flush();<br />
MyWriter.Close();<br />
MyStream.Close();<br />
MessageBox.Show(&#8220;请查看C:\\MyText.txt文件中的系统服务信息。&#8221;, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button12_Click(object sender, EventArgs e)<br />
{//获取系统显示设备颜色值<br />
String MyInfo = &#8220;系统显示设备的当前颜色值是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;CurrentNumberOfColors: &#8221; + MyObject["CurrentNumberOfColors"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button13_Click(object sender, EventArgs e)<br />
{//获取当前显示的垂直分辨率<br />
String MyInfo = &#8220;系统当前显示设备的垂直分辨率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;CurrentVerticalResolution: &#8221; + MyObject["CurrentVerticalResolution"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button14_Click(object sender, EventArgs e)<br />
{//获取当前显示的水平分辨率<br />
String MyInfo = &#8220;系统当前显示设备的水平分辨率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;CurrentHorizontalResolution: &#8221; + MyObject["CurrentHorizontalResolution"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button15_Click(object sender, EventArgs e)<br />
{//获取显示设备的当前显示模式<br />
String MyInfo = &#8220;系统显示设备的当前显示模式是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;VideoModeDescription: &#8221; + MyObject["VideoModeDescription"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button16_Click(object sender, EventArgs e)<br />
{//获取显示设备的显示处理器<br />
String MyInfo = &#8220;系统显示设备的显示处理器名称是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;VideoProcessor: &#8221; + MyObject["VideoProcessor"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button17_Click(object sender, EventArgs e)<br />
{//获取当前显示设备的刷新速率<br />
String MyInfo = &#8220;系统显示设备的当前刷新速率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;CurrentRefreshRate: &#8221; + MyObject["CurrentRefreshRate"].ToString())+&#8221;赫兹&#8221;;<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button18_Click(object sender, EventArgs e)<br />
{//获取显示设备的驱动版本号<br />
String MyInfo = &#8220;系统显示设备的驱动程序版本号是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;DriverVersion: &#8221; + MyObject["DriverVersion"].ToString()) ;<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button19_Click(object sender, EventArgs e)<br />
{//获取显示设备的驱动程序文件<br />
String MyInfo = &#8220;系统显示设备的驱动程序文件是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;InstalledDisplayDrivers: &#8221; + MyObject["InstalledDisplayDrivers"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button20_Click(object sender, EventArgs e)<br />
{//获取显示设备的最大刷新速率<br />
String MyInfo = &#8220;系统显示设备的最大刷新速率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;MaxRefreshRate: &#8221; + MyObject["MaxRefreshRate"].ToString()) + &#8220;赫兹&#8221;;<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button21_Click(object sender, EventArgs e)<br />
{//获取显示设备的最小刷新速率<br />
String MyInfo = &#8220;系统显示设备的最小刷新速率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;MinRefreshRate: &#8221; + MyObject["MinRefreshRate"].ToString()) + &#8220;赫兹&#8221;;<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button22_Click(object sender, EventArgs e)<br />
{//获取系统显示设备的名称<br />
String MyInfo = &#8220;系统显示设备的名称是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button23_Click(object sender, EventArgs e)<br />
{//获取显示设备的PNPDeviceID<br />
String MyInfo = &#8220;系统显示设备的PNPDeviceID是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_VideoController&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;PNPDeviceID: &#8221; + MyObject["PNPDeviceID"].ToString());<br />
MyInfo += &#8220;\n================================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}<br />
}<br />
}</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System.Windows.Forms;</p>
<p>using  System.Management;<br />
using System.IO;</p>
<p>namespace WindowsApplication1<br />
{<br />
public partial class Form1 : Form<br />
{<br />
public Form1()<br />
{<br />
InitializeComponent();<br />
}</p>
<p>private void button1_Click(object sender, EventArgs e)<br />
{//获取声音设备的产品名称<br />
String MyInfo = &#8220;系统声音设备的产品名称是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_SoundDevice&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;ProductName: &#8221; + MyObject["ProductName"].ToString());<br />
MyInfo += &#8220;\n=======================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button2_Click(object sender, EventArgs e)<br />
{//获取声音设备的PNPDeviceID<br />
String MyInfo = &#8220;系统声音设备的PNPDeviceID是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_SoundDevice&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;PNPDeviceID: &#8221; + MyObject["PNPDeviceID"].ToString());<br />
MyInfo += &#8220;\n=======================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button3_Click(object sender, EventArgs e)<br />
{//获取声音设备的制造商名称<br />
String MyInfo = &#8220;系统声音设备的制造商是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_SoundDevice&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Manufacturer: &#8221; + MyObject["Manufacturer"].ToString());<br />
MyInfo += &#8220;\n=======================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button4_Click(object sender, EventArgs e)<br />
{//获取SQL Server服务信息<br />
String MyInfo = &#8220;当前SQL Server服务信息是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_Service WHERE DisplayName=&#8217;SQL Server (SQLEXPRESS)&#8217;&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo+=&#8221;\n&#8221;+MyObject.GetText(TextFormat.Mof);<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button5_Click(object sender, EventArgs e)<br />
{//获取驱动程序所属的程序文件<br />
String MyInfo = &#8220;系统注册驱动程序的程序文件如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_SystemDriver&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
try<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;PathName: &#8221; + MyObject["PathName"].ToString());<br />
}<br />
catch<br />
{<br />
}<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button6_Click(object sender, EventArgs e)<br />
{//获取系统已经停止的驱动程序<br />
String MyInfo = &#8220;当前系统已经停止的驱动程序包括：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_SystemDriver WHERE State= &#8216;Stopped&#8217;&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;State: &#8221; + MyObject["State"].ToString());<br />
MyInfo += &#8220;\n============================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button7_Click(object sender, EventArgs e)<br />
{//获取系统驱动程序的所有信息<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_SystemDriver&#8221;);<br />
FileStream MyStream = new FileStream(&#8220;C:\\MyDriver.txt&#8221;, FileMode.Create);<br />
StreamWriter MyWriter = new StreamWriter(MyStream, Encoding.Default);<br />
MyWriter.WriteLine(&#8220;系统注册驱动程序的信息如下：&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyWriter.WriteLine(MyObject.GetText(TextFormat.Mof));<br />
MyWriter.WriteLine(&#8220;\n================================================&#8221;);<br />
}<br />
MyWriter.Flush();<br />
MyWriter.Close();<br />
MyStream.Close();<br />
MessageBox.Show(&#8220;请查看C:\\MyDriver.txt文件中的系统驱动程序信息。&#8221;, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button8_Click(object sender, EventArgs e)<br />
{//获取系统驱动程序的描述信息<br />
String MyInfo = &#8220;系统注册驱动程序的描述信息如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_SystemDriver&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
try<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Description: &#8221; + MyObject["Description"].ToString());<br />
}<br />
catch<br />
{<br />
}<br />
MyInfo += &#8220;\n========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button9_Click(object sender, EventArgs e)<br />
{//获取系统正在运行的驱动程序<br />
String MyInfo = &#8220;当前系统正在运行的驱动程序包括：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_SystemDriver WHERE State= &#8216;Running&#8217;&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name: &#8221; + MyObject["Name"].ToString());<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;State: &#8221; + MyObject["State"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button10_Click(object sender, EventArgs e)<br />
{//获取磁盘驱动器驱动程序信息<br />
String MyInfo = &#8220;系统磁盘驱动器驱动程序的信息如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_SystemDriver WHERE DisplayName=&#8217;磁盘驱动器&#8217;&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + MyObject.GetText(TextFormat.Mof);<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button11_Click(object sender, EventArgs e)<br />
{//获取系统非内核驱动程序信息<br />
String MyInfo = &#8220;系统非内核驱动程序的信息如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * From Win32_SystemDriver WHERE ServiceType &lt;&gt; &#8216;Kernel Driver&#8217;&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + MyObject.GetText(TextFormat.Mof);<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button12_Click(object sender, EventArgs e)<br />
{//获取串行通信端口信息<br />
String MyInfo = &#8220;当前系统串行通信端口信息如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;root\\CIMV2&#8243;,&#8221;SELECT * FROM Win32_SerialPort&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + MyObject.GetText(TextFormat.Mof);<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button13_Click(object sender, EventArgs e)<br />
{//获取计算机的CPU地址宽度<br />
String MyInfo = &#8220;当前计算机的CPU地址宽度是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;AddressWidth: &#8221; + MyObject["AddressWidth"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button14_Click(object sender, EventArgs e)<br />
{//获取计算机的CPU数据宽度<br />
String MyInfo = &#8220;当前计算机的CPU数据宽度是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;DataWidth : &#8221; + MyObject["DataWidth"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button15_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的当前时钟频率<br />
String MyInfo = &#8220;计算机CPU的当前时钟频率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;CurrentClockSpeed : &#8221; + MyObject["CurrentClockSpeed"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button16_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的最大时钟频率<br />
String MyInfo = &#8220;计算机CPU的最大时钟频率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;MaxClockSpeed : &#8221; + MyObject["MaxClockSpeed"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button17_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的当前电压<br />
String MyInfo = &#8220;计算机CPU的当前电压是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;CurrentVoltage : &#8221; + MyObject["CurrentVoltage"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button18_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的外部频率<br />
String MyInfo = &#8220;计算机CPU的外部频率是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;ExtClock : &#8221; + MyObject["ExtClock"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button19_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的二级缓存<br />
String MyInfo = &#8220;计算机CPU的二级缓存尺寸是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;L2CacheSize: &#8221; + MyObject["L2CacheSize"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button20_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的当前使用百分比<br />
String MyInfo = &#8220;计算机CPU的当前使用百分比是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;LoadPercentage : &#8221; + MyObject["LoadPercentage"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button21_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的制造商名称<br />
String MyInfo = &#8220;计算机CPU的制造商名称是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Manufacturer : &#8221; + MyObject["Manufacturer"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button22_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的产品名称<br />
String MyInfo = &#8220;计算机CPU的产品名称是：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Name : &#8221; + MyObject["Name"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button23_Click(object sender, EventArgs e)<br />
{//获取计算机CPU的版本信息<br />
String MyInfo = &#8220;计算机CPU的版本信息如下：&#8221;;<br />
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher(&#8220;SELECT * FROM Win32_Processor&#8221;);<br />
foreach (ManagementObject MyObject in MySearcher.Get())<br />
{<br />
MyInfo += &#8220;\n&#8221; + String.Format(&#8220;Version: &#8221; + MyObject["Version"].ToString());<br />
MyInfo += &#8220;\n=========================================================&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}<br />
}<br />
}</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e8%af%bb%e5%86%99win-ini%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6c/' rel='bookmark' title='Permanent Link: 读写WIN.INI配置文件:c#'>读写WIN.INI配置文件:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e7%b3%bb%e7%bb%9f%e5%90%84%e5%8f%82%e6%95%b0/' rel='bookmark' title='Permanent Link: c#调用系统各参数'>c#调用系统各参数</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/' rel='bookmark' title='Permanent Link: 调用rundll32等实现各种功能:c#'>调用rundll32等实现各种功能:c#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>调用rundll32等实现各种功能:c#</title>
		<link>http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/</link>
		<comments>http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 11:18:21 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[DLL]]></category>
		<category><![CDATA[rundll32]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1085</guid>
		<description><![CDATA[using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private int iClose = 0; private const int WM_SYSCOMMAND = 0&#215;0112; protected override void WndProc(ref Message SystemMessage) {//处理系统消息 switch (SystemMessage.Msg) { case [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e8%af%bb%e5%86%99win-ini%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6c/' rel='bookmark' title='Permanent Link: 读写WIN.INI配置文件:c#'>读写WIN.INI配置文件:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e7%b3%bb%e7%bb%9f%e5%90%84%e5%8f%82%e6%95%b0/' rel='bookmark' title='Permanent Link: c#调用系统各参数'>c#调用系统各参数</a></li>
<li><a href='http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/' rel='bookmark' title='Permanent Link: wmi查询管理:c#'>wmi查询管理:c#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span id="more-1085"></span>using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System.Windows.Forms;</p>
<p>using System.Runtime.InteropServices;<br />
using System.IO;</p>
<p>namespace WindowsApplication1<br />
{<br />
public partial class Form1 : Form<br />
{<br />
public Form1()<br />
{<br />
InitializeComponent();<br />
}<br />
private int iClose = 0;<br />
private const int WM_SYSCOMMAND = 0&#215;0112;<br />
protected override void WndProc(ref Message SystemMessage)<br />
{//处理系统消息<br />
switch (SystemMessage.Msg)<br />
{<br />
case WM_SYSCOMMAND:<br />
if (iClose == 0)<br />
base.WndProc(ref SystemMessage);<br />
break;<br />
default:<br />
base.WndProc(ref SystemMessage);<br />
break;<br />
}<br />
}<br />
private void button1_Click(object sender, EventArgs e)<br />
{//禁止运行系统菜单按钮命令<br />
this.iClose = 1;<br />
MessageBox.Show(&#8220;已经禁止运行系统菜单按钮命令！&#8221;, &#8220;信息提示&#8221;,MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button2_Click(object sender, EventArgs e)<br />
{//允许运行系统菜单按钮命令<br />
this.iClose = 0;<br />
MessageBox.Show(&#8220;已经允许运行系统菜单按钮命令！&#8221;, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button3_Click(object sender, EventArgs e)<br />
{//获取当前计算机上的处理器数<br />
string MyInfo = &#8220;当前计算机上的处理器数是：&#8221;;<br />
MyInfo+=Environment.ProcessorCount.ToString();<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>[DllImport("USER32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Ansi)]<br />
private static extern int ShowWindow(int hWnd, int  nCmdShow);<br />
[DllImport("USER32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Ansi)]<br />
private static extern int FindWindow(string  lpClassName,string lpWindowName);<br />
private const int SW_HIDE=0;<br />
//private const int SW_SHOW = 5;<br />
private void button4_Click(object sender, EventArgs e)<br />
{//禁止显示操作系统任务栏<br />
ShowWindow(FindWindow(&#8220;Shell_TrayWnd&#8221;,null ),SW_HIDE);<br />
}<br />
private void button5_Click(object sender, EventArgs e)<br />
{//允许显示操作系统任务栏<br />
ShowWindow(FindWindow(&#8220;Shell_TrayWnd&#8221;, null), SW_SHOW);<br />
}</p>
<p>[DllImport("USER32.dll", EntryPoint = "FindWindowEx", CharSet = CharSet.Ansi)]<br />
private static extern int FindWindowEx(int hwndParent, int hwndChildAfter, string lpszClass, string lpszWindow);<br />
private void button6_Click(object sender, EventArgs e)<br />
{//禁止显示操作系统开始按钮<br />
ShowWindow(FindWindowEx(FindWindow(&#8220;Shell_TrayWnd&#8221;, &#8220;&#8221;), 0, &#8220;Button&#8221;, null), SW_HIDE);<br />
}<br />
private void button7_Click(object sender, EventArgs e)<br />
{//允许显示操作系统开始按钮<br />
ShowWindow(FindWindowEx(FindWindow(&#8220;Shell_TrayWnd&#8221;,&#8221;"),0,&#8221;Button&#8221;,null),SW_SHOW);<br />
}</p>
<p>//[DllImport("shell32.dll", EntryPoint = "ShellExecute")]<br />
//private static extern int ShellExecute(int hwnd, String lpOperation, String lpFile, String lpParameters, String lpDirectory, int nShowCmd);<br />
private void button8_Click(object sender, EventArgs e)<br />
{//启动操作系统的搜索对话框<br />
try<br />
{<br />
ShellExecute(0,&#8221;find&#8221;,&#8221;",&#8221;",&#8221;",0);<br />
}<br />
catch(Exception ex)<br />
{<br />
MessageBox.Show(ex.Message ,&#8221;信息提示&#8221;,MessageBoxButtons.OK,MessageBoxIcon.Information);<br />
}<br />
}</p>
<p>private void button9_Click(object sender, EventArgs e)<br />
{//启动操作系统的注册表编辑器<br />
System.Diagnostics.Process.Start(&#8220;RegEdit.exe&#8221;);<br />
}</p>
<p>[DllImport("shell32.dll", EntryPoint = "ShellExecute")]<br />
private static extern int ShellExecute(int hwnd, String lpOperation, String lpFile, String lpParameters, String lpDirectory, int nShowCmd);<br />
private const int SW_SHOW = 5;<br />
private void button10_Click(object sender, EventArgs e)<br />
{//启动操作系统的邮件发送程序<br />
try<br />
{<br />
//ShellExecute(this.Handle.ToInt32(), &#8220;open&#8221;, &#8220;notepad.exe&#8221;, &#8220;c:\\boot.ini&#8221;, &#8220;&#8221;, SW_SHOW);<br />
//ShellExecute(this.Handle.ToInt32(), &#8220;print&#8221;, &#8220;c:\\boot.ini&#8221;, &#8220;&#8221;, &#8220;&#8221;, SW_HIDE);<br />
ShellExecute(0, &#8220;open&#8221;, &#8220;mailto:&#8221;, &#8220;&#8221;, &#8220;&#8221;, SW_SHOW);<br />
}<br />
catch (Exception ex)<br />
{<br />
MessageBox.Show(ex.Message, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}<br />
}<br />
[DllImport("kernel32.dll")]<br />
private static extern int WinExec(String CmdLine, int uCmdShow);<br />
private void button11_Click(object sender, EventArgs e)<br />
{//启动Internet选项的指定选项卡<br />
//启动系统Internet属性\常规对话框<br />
//WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0 &#8220;, 0);<br />
//启动系统Internet属性\安全对话框<br />
//WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,1 &#8220;, 0);<br />
//启动系统Internet属性\隐私对话框<br />
//WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,2 &#8220;, 0);<br />
//启动系统Internet属性\内容对话框<br />
//WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,3 &#8220;,0);<br />
//启动系统Internet属性\连接对话框<br />
//WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,4 &#8220;,0);<br />
//启动系统Internet属性\程序对话框<br />
//WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,5 &#8220;,0);<br />
//启动系统Internet属性\高级对话框<br />
WinExec(&#8220;rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,6 &#8220;,0);<br />
}</p>
<p>private void button12_Click(object sender, EventArgs e)<br />
{//将网址加入Internet收藏夹<br />
string MyFavoriteFolder= System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites) ;<br />
string MyTitle=&#8221;中国门户网：网易&#8221;;<br />
string MyURL = &#8220;Http://www.163.com&#8221;;<br />
StreamWriter MyWriter = File.CreateText(MyFavoriteFolder+&#8221;\\&#8221;+ MyTitle +&#8221;.url&#8221;) ;<br />
MyWriter.WriteLine(&#8220;[InternetShortcut]&#8220;);<br />
MyWriter.WriteLine(&#8220;URL=&#8221;+MyURL);<br />
MyWriter.Close();<br />
}</p>
<p>}<br />
}</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System.Windows.Forms;</p>
<p>using System.Runtime.InteropServices;<br />
using System.Diagnostics;</p>
<p>//#define SW_HIDE             0<br />
//#define SW_SHOWNORMAL       1<br />
//#define SW_NORMAL           1<br />
//#define SW_SHOWMINIMIZED    2<br />
//#define SW_SHOWMAXIMIZED    3<br />
//#define SW_MAXIMIZE         3<br />
//#define SW_SHOWNOACTIVATE   4<br />
//#define SW_SHOW             5<br />
//#define SW_MINIMIZE         6<br />
//#define SW_SHOWMINNOACTIVE  7<br />
//#define SW_SHOWNA           8<br />
//#define SW_RESTORE          9<br />
//#define SW_SHOWDEFAULT      10<br />
//#define SW_FORCEMINIMIZE    11<br />
//#define SW_MAX              11</p>
<p>namespace WindowsApplication1<br />
{<br />
public partial class Form1 : Form<br />
{<br />
public Form1()<br />
{<br />
InitializeComponent();<br />
}<br />
[DllImport("USER32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Ansi)]<br />
private static extern int ShowWindow(int hWnd, int nCmdShow);<br />
[DllImport("USER32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Ansi)]<br />
private static extern int FindWindow(string lpClassName, string lpWindowName);<br />
private void button1_Click(object sender, EventArgs e)<br />
{//禁止显示操作系统桌面图标<br />
ShowWindow(FindWindow(&#8220;Progman&#8221;, null), 0);<br />
}<br />
private void button2_Click(object sender, EventArgs e)<br />
{//允许显示操作系统桌面图标<br />
ShowWindow(FindWindow(&#8220;Progman&#8221;, null), 5);<br />
}<br />
[DllImport("TAPI32.dll")]<br />
public static extern int tapiRequestMakeCall(string DestAddress, string AppName, string CalledParty, string Comment);<br />
private void button3_Click(object sender, EventArgs e)<br />
{//启动电话拨号程序<br />
string MyPhone = &#8220;40405690&#8243;;<br />
string MyInfo = &#8220;&#8221;;<br />
int MyReturn = tapiRequestMakeCall(MyPhone, &#8220;我的电话拨号&#8221;, &#8220;&#8221;, &#8220;&#8221;);<br />
switch (MyReturn)<br />
{<br />
case 0:<br />
MyInfo += &#8220;\n拨号已连接&#8221;;<br />
break;<br />
case -4:<br />
MyInfo += &#8220;\n错误的目的地址&#8221;;<br />
break;<br />
case -2:<br />
MyInfo += &#8220;\n没有电话接口程序运行&#8221;;<br />
break;<br />
case -16:<br />
MyInfo += &#8220;\n拨号请求由于未知原因失败&#8221;;<br />
break;<br />
case -11:<br />
MyInfo += &#8220;\n对方电话正忙&#8221;;<br />
break;<br />
case -15:<br />
MyInfo += &#8220;\n没有这个电话号码&#8221;;<br />
break;<br />
case -1:<br />
MyInfo += &#8220;\n对方已挂断&#8221;;<br />
break;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}<br />
[DllImport("user32.dll")]<br />
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);<br />
private const int WM_SYSCOMMAND = 0&#215;0112;<br />
private const int SC_SCREENSAVE = 0xf140;<br />
private void button4_Click(object sender, EventArgs e)<br />
{//启动屏幕保护程序<br />
SendMessage(this.Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);<br />
}</p>
<p>private void button5_Click(object sender, EventArgs e)<br />
{//获取公共语言运行库的版本号<br />
Version MyVer = Environment.Version;<br />
string MyInfo = &#8220;公共语言运行库的版本号信息如下：&#8221;;<br />
MyInfo += &#8220;\n主版本号：&#8221; + MyVer.Major;<br />
MyInfo += &#8220;\n次版本号：&#8221; + MyVer.Minor;<br />
MyInfo += &#8220;\n内部版本号：&#8221; + MyVer.Build;<br />
MyInfo += &#8220;\n修订号：&#8221; + MyVer.Revision;<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button6_Click(object sender, EventArgs e)<br />
{//获取性能计数器类别<br />
PerformanceCounterCategory[] MyCategories = PerformanceCounterCategory.GetCategories();<br />
string MyInfo = &#8220;本地计算机上注册的性能计数器类别包括：\n&#8221;;<br />
foreach (PerformanceCounterCategory MyCategory in MyCategories)<br />
{<br />
MyInfo += MyCategory.CategoryName + &#8220;、&#8221;;<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>private void button7_Click(object sender, EventArgs e)<br />
{//获取性能计数器名称<br />
try<br />
{<br />
string MyCategory = &#8220;Processor&#8221;;<br />
System.Diagnostics.PerformanceCounterCategory MyKind =<br />
new System.Diagnostics.PerformanceCounterCategory(MyCategory);<br />
string[] MyInstanceNames = MyKind.GetInstanceNames();<br />
string MyInfo = MyCategory+&#8221;类型的计数器包括：&#8221;;<br />
if (MyInstanceNames.Length == 0)<br />
{<br />
foreach( PerformanceCounter MyCounter in MyKind.GetCounters())<br />
{<br />
MyInfo+=MyCounter.CounterName+&#8221;、&#8221;;<br />
}<br />
}<br />
else<br />
{<br />
for (int i = 0; i &lt; MyInstanceNames.Length; i++)<br />
{<br />
foreach(PerformanceCounter MyCounter in MyKind.GetCounters(MyInstanceNames[i]))<br />
{<br />
MyInfo += MyCounter.CounterName + &#8220;、&#8221;;<br />
}<br />
}<br />
}<br />
MessageBox.Show(MyInfo, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}<br />
catch (Exception Ex)<br />
{<br />
}<br />
}</p>
<p>private int iClose = 0;<br />
private const int WM_QUERYENDSESSION = 0&#215;0011;<br />
protected override void WndProc(ref Message SystemMessage)<br />
{//处理系统消息问询<br />
switch (SystemMessage.Msg)<br />
{<br />
case WM_QUERYENDSESSION:<br />
SystemMessage.Result = (IntPtr)iClose;<br />
break;<br />
default:<br />
base.WndProc(ref SystemMessage);<br />
break;<br />
}<br />
}<br />
private void button8_Click(object sender, EventArgs e)<br />
{//禁止关闭操作系统<br />
this.iClose = 0;<br />
MessageBox.Show(&#8220;请选择“开始\\关闭计算机”菜单测试一下效果！&#8221;, &#8220;信息提示&#8221;,MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}<br />
private void button9_Click(object sender, EventArgs e)<br />
{//允许关闭操作系统<br />
this.iClose = 1;<br />
MessageBox.Show(&#8220;请选择“开始\\关闭计算机”菜单测试一下效果！&#8221;, &#8220;信息提示&#8221;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</p>
<p>}<br />
}</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/%e8%af%bb%e5%86%99win-ini%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6c/' rel='bookmark' title='Permanent Link: 读写WIN.INI配置文件:c#'>读写WIN.INI配置文件:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e7%b3%bb%e7%bb%9f%e5%90%84%e5%8f%82%e6%95%b0/' rel='bookmark' title='Permanent Link: c#调用系统各参数'>c#调用系统各参数</a></li>
<li><a href='http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/' rel='bookmark' title='Permanent Link: wmi查询管理:c#'>wmi查询管理:c#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/%e8%b0%83%e7%94%a8rundll32%e7%ad%89%e5%ae%9e%e7%8e%b0%e5%90%84%e7%a7%8d%e5%8a%9f%e8%83%bdc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#调用打印机信息</title>
		<link>http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e6%89%93%e5%8d%b0%e6%9c%ba%e4%bf%a1%e6%81%af/</link>
		<comments>http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e6%89%93%e5%8d%b0%e6%9c%ba%e4%bf%a1%e6%81%af/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:31:40 +0000</pubDate>
		<dc:creator>cq</dc:creator>
				<category><![CDATA[c#]]></category>

		<guid isPermaLink="false">http://cq-cser.cn/?p=1079</guid>
		<description><![CDATA[private void button1_Click(object sender, EventArgs e)//richTextBox看来很好用啊 {//获取系统已经安装的打印机信息 String MyInfo=&#8221;"; foreach (string MyPrinterName in System.Drawing.Printing.PrinterSettings.InstalledPrinters) { //显示打印机名称 MyInfo+=&#8221;打印机： &#8220;+MyPrinterName+&#8221;\n&#8221;; //获取打印机设置信息 System.Drawing.Printing.PrinterSettings MyPrinter = new System.Drawing.Printing.PrinterSettings(); MyPrinter.PrinterName = MyPrinterName; if (MyPrinter.IsValid) { MyInfo+=&#8221;支持的分辨率：&#8221;+&#8221;\n&#8221;; foreach (System.Drawing.Printing.PrinterResolution resolution in MyPrinter.PrinterResolutions) { MyInfo+=resolution.ToString()+&#8221;\n&#8221;; } MyInfo += &#8220;支持的打印页尺寸：&#8221; + &#8220;\n&#8221;; foreach (System.Drawing.Printing.PaperSize size in MyPrinter.PaperSizes) { if (Enum.IsDefined(size.Kind.GetType(), size.Kind)) { MyInfo+=size.ToString()+&#8221;\n&#8221;; [...]


Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/' rel='bookmark' title='Permanent Link: wmi查询管理:c#'>wmi查询管理:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e8%af%bb%e5%86%99win-ini%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6c/' rel='bookmark' title='Permanent Link: 读写WIN.INI配置文件:c#'>读写WIN.INI配置文件:c#</a></li>
<li><a href='http://cq-cser.cn/2009/12/des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%87%bd%e6%95%b0-%e6%94%b6%e8%97%8f-c/' rel='bookmark' title='Permanent Link: DES加密解密函数 收藏 c#'>DES加密解密函数 收藏 c#</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>private void button1_Click(object sender, EventArgs e)//richTextBox看来很好用啊<span id="more-1079"></span><br />
{//获取系统已经安装的打印机信息<br />
String MyInfo=&#8221;";<br />
foreach (string MyPrinterName in System.Drawing.Printing.PrinterSettings.InstalledPrinters)<br />
{<br />
//显示打印机名称<br />
MyInfo+=&#8221;打印机： &#8220;+MyPrinterName+&#8221;\n&#8221;;<br />
//获取打印机设置信息<br />
System.Drawing.Printing.PrinterSettings MyPrinter = new System.Drawing.Printing.PrinterSettings();<br />
MyPrinter.PrinterName = MyPrinterName;<br />
if (MyPrinter.IsValid)<br />
{<br />
MyInfo+=&#8221;支持的分辨率：&#8221;+&#8221;\n&#8221;;<br />
foreach (System.Drawing.Printing.PrinterResolution resolution in MyPrinter.PrinterResolutions)<br />
{<br />
MyInfo+=resolution.ToString()+&#8221;\n&#8221;;<br />
}<br />
MyInfo += &#8220;支持的打印页尺寸：&#8221; + &#8220;\n&#8221;;<br />
foreach (System.Drawing.Printing.PaperSize size in MyPrinter.PaperSizes)<br />
{<br />
if (Enum.IsDefined(size.Kind.GetType(), size.Kind))<br />
{<br />
MyInfo+=size.ToString()+&#8221;\n&#8221;;<br />
}<br />
}<br />
MyInfo += &#8220;\n&#8221;;<br />
}<br />
}<br />
this.richTextBox1.Text = MyInfo;<br />
}</p>


<p>Related posts:<ol><li><a href='http://cq-cser.cn/2010/03/wmi%e6%9f%a5%e8%af%a2%e7%ae%a1%e7%90%86c/' rel='bookmark' title='Permanent Link: wmi查询管理:c#'>wmi查询管理:c#</a></li>
<li><a href='http://cq-cser.cn/2010/03/%e8%af%bb%e5%86%99win-ini%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6c/' rel='bookmark' title='Permanent Link: 读写WIN.INI配置文件:c#'>读写WIN.INI配置文件:c#</a></li>
<li><a href='http://cq-cser.cn/2009/12/des%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%87%bd%e6%95%b0-%e6%94%b6%e8%97%8f-c/' rel='bookmark' title='Permanent Link: DES加密解密函数 收藏 c#'>DES加密解密函数 收藏 c#</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cq-cser.cn/2010/03/c%e8%b0%83%e7%94%a8%e6%89%93%e5%8d%b0%e6%9c%ba%e4%bf%a1%e6%81%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

