<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[P2P/FMS/C#/Ajax/SEO/项目技术/健康营养]]></title>
  <subtitle type="html"><![CDATA[因为有梦，才会去学习飞翔]]></subtitle>
  <id>http://www.loverer.com/</id> 
  <link rel="alternate" type="text/html" href="http://www.loverer.com/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.loverer.com/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2009-07-01T12:44:47+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[【转】全屏截图和局部截图]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2009-07-01T12:44:47+08:00</updated>
	  <published>2009-07-01T12:44:47+08:00</published>
		  <summary type="html"><![CDATA[<br />程序功能：<br /><br />1.截取整个屏幕并保存<br />2.新开一个全屏窗口,将保存的屏幕作为背景<br />3.鼠标拖动改变截取范围,右键取消<br />4.双击截取,保存在粘贴板,全屏窗口关闭<br /><br />好了,下面的是代码部分<br /><br />首先新建一个项目ScreenCutter(VS2005),将窗体名改为MainForm,再新建一个窗体ScreenBody.<br />添加一个按钮btnCutter到ScreenCutter并添加按钮事件:<br />
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> btnCutter_Click(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, EventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image img </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Bitmap(Screen.AllScreens[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Bounds.Width, Screen.AllScreens[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Bounds.Height);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Graphics g </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Graphics.FromImage(img);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.CopyFromScreen(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Point(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">), </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Point(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">), Screen.AllScreens[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Bounds.Size);</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScreenBody body </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ScreenBody();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body.BackgroundImage </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> img;</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body.Show();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></div>
Screen.AllScreens[0]是获取当前所有设备窗口的第一个,我这里只有一个显示器,当然我就是第一个.<br />利用Graphics的CopyFromScreen函数获取当前屏幕.<br /><br />好了,现在按下按钮全屏窗口就会出来了.<br /><br />下面讲全屏窗口ScreenBody,首先设置窗体的FormBorderStyle为None,然后声明以下变量<br />
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Graphics MainPainter; //主画笔<br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Pen pen;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; //就是笔咯<br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> isDowned;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; //判断鼠标是否按下</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> RectReady;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; //矩形是否绘制完成</span><br /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Image baseImage;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //基本图形(原来的画面)<br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Rectangle Rect;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //就是要保存的矩形</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Point downPoint;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //鼠标按下的点</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> tmpx;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> tmpy;</span></div>
<br />之后就是窗体的鼠标函数了,里面很多代码都没有作出整理,看了一下,整理后的代码应该会更少更精简的<br /><br />
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px" dragover="true"><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ScreenBody_DoubleClick(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, EventArgs e)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (((MouseEventArgs)e).Button </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> MouseButtons.Left </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">Rect.Contains(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y))<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //保存的时候有很多种方法的......我这里只用了这种<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image memory </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Bitmap(Rect.Width, Rect.Height);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Graphics g </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Graphics.FromImage(memory);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.CopyFromScreen(Rect.X </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, Rect.Y </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, Rect.Size);</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Clipboard.SetImage(memory);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />}<br /><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ScreenBody_MouseDown(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, MouseEventArgs e)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (e.Button </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> MouseButtons.Left)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isDowned </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (RectReady </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rect.X </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> e.X;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rect.Y </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> e.Y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; downPoint </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Point(e.X, e.Y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (RectReady </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpx </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> e.X;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpy </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> e.Y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (e.Button </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> MouseButtons.Right)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (RectReady </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MainPainter.</span><span style="COLOR: #000000">DrawImage(baseImage, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RectReady </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />}<br /><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ScreenBody_MouseUp(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, MouseEventArgs e)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (e.Button </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> MouseButtons.Left)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isDowned </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RectReady </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />}<br /><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ScreenBody_MouseMove(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, MouseEventArgs e)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (RectReady </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (isDowned </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image New </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> DrawScreen((Image)baseImage.Clone(), e.X, e.Y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MainPainter.DrawImage(New, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; New.Dispose();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (RectReady </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (Rect.Contains(e.X, e.Y))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">this.Cursor = Cursors.Hand;</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (isDowned </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">和上一次的位置比较获取偏移量</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rect.X </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Rect.X </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> e.X </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> tmpx;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rect.Y </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Rect.Y </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> e.Y </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> tmpy;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">记录现在的位置</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpx </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> e.X;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpy </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> e.Y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MoveRect((Image)baseImage.Clone(), Rect);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ScreenBody_Load(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, EventArgs e)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.WindowState </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> FormWindowState.Maximized;<br />&nbsp;&nbsp;&nbsp;&nbsp; MainPainter </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.CreateGraphics();<br />&nbsp;&nbsp;&nbsp;&nbsp; pen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Pen(Brushes.Blue);<br />&nbsp;&nbsp;&nbsp;&nbsp; isDowned </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp; baseImage </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.BackgroundImage;<br />&nbsp;&nbsp;&nbsp;&nbsp; Rect </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Rectangle();<br />&nbsp;&nbsp;&nbsp;&nbsp; RectReady </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">}<br /><br /></span></div>
<br />辅助函数<br />本来应该写更多的辅助函数的,将窗体响应函数里面的代码放到里面来,不过本人很懒,就这样将就了.呵呵<br /><br />
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> DrawRect(Graphics Painter, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> Mouse_x, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> Mouse_y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> heigth </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (Mouse_y </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> Rect.Y)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rect.Y </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Mouse_y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; heigth </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> downPoint.Y </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> Mouse_y;<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; heigth </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Mouse_y </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> downPoint.Y;<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (Mouse_x </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> Rect.X)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rect.X </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Mouse_x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> downPoint.X </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> Mouse_x;<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Mouse_x </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> downPoint.X;<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; Rect.Size </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Size(width, heigth);<br />&nbsp;&nbsp;&nbsp;&nbsp; Painter.DrawRectangle(pen, Rect);<br />}<br /><br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Image DrawScreen(Image back, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> Mouse_x, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> Mouse_y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; Graphics Painter </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Graphics.FromImage(back);<br />&nbsp;&nbsp;&nbsp;&nbsp; DrawRect(Painter, Mouse_x, Mouse_y);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> back;<br />}<br /></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> MoveRect(Image image, Rectangle Rect)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; Graphics Painter </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Graphics.FromImage(image);<br />&nbsp;&nbsp;&nbsp;&nbsp; Painter.DrawRectangle(pen, Rect.X, Rect.Y, Rect.Width, Rect.Height);<br />&nbsp;&nbsp;&nbsp;&nbsp; DrawRects(Painter);<br />&nbsp;&nbsp;&nbsp;&nbsp; MainPainter.DrawImage(image, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp; image.Dispose();<br />}</span></div>
<br /><br />]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=447" /> 
	  <id>http://www.loverer.com/default.asp?id=447</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[北京市工商管理局简介和各分局地址及联系方式]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=6" label="其他杂记" /> 
	  <updated>2009-02-10T12:44:26+08:00</updated>
	  <published>2009-02-10T12:44:26+08:00</published>
		  <summary type="html"><![CDATA[北京市工商管理局职能简介：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局，是主管本市市场监督管理和行政执法工作的市政府直属机构，主要职能是：依法确认各类经营者的主体资格，监督管理或参与监督管理各类市场，依法规范市场交易行为，保护公平竞争，查处经济违法行为，取缔非法经营，保护正常的市场经济秩序。<br/>　　北京市工商行政管理局下设办公室、法制处、登记注册处、企业监督管理处（私营个体经济监督管理处）、外商投资企业管理处、市场监督管理处、合同监督管理处、商标监督管理处、广告监督管理处、消费者权益保护处、经济检查处（打击传销办公室）、特殊交易监督管理处、食品安全协调处、食品安全监察处、市场经济秩序综合处、宣传处、计划财务处、人事处等职能处室和机关党委（教育与基层建设处），纪检、监察机构按有关规定派驻。现有市局机关20个处室及执法检查大队，19个区县分局，6个专业分局，172个工商所、站、队，12个直属事业单位以及5个社会团体，共有干部6000余人。<br/><br/>北京工商行政管理局分局地址和联系电话：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局东城分局&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>　　　地址：东城区后永康胡同17号<br/>　　　邮编：100007<br/>　　　电话：64033742<br/>　　　传真：64012018<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局西城分局<br/>　　　地址：西城区金融街16号<br/>　　　邮编：100032<br/>　　　电话：88087657<br/>　　　传真：88087657<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局崇文分局<br/>　　　地址：崇文区法华南里一号楼<br/>　　　邮编：100061<br/>　　　电话：67136001<br/>　　　传真：67136001<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局宣武分局<br/>　　　地址：宣武区南菜园街51号<br/>　　　邮编：100054<br/>　　　电话：83975720<br/>　　　传真：83975720&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局朝阳分局<br/>　　　地址：朝阳区霄云路霄云里1号<br/>　　　邮编：100016<br/>　　　电话：51069009<br/>　　　传真：51069707<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局丰台分局<br/>　　　地址：北京市丰台区菜户营乙360号&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;邮编：100054<br/>　　　电话：63442600<br/>　　　传真：63442600<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局石景山分局<br/>　　　地址：石景山区八角北里<br/>　　　邮编：100043<br/>　　　电话：68863243<br/>　　　传真：68863243<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局海淀分局<br/>　　　地址：海淀区倒坐庙9号<br/>　　　邮编：100080<br/>　　　电话：82692011<br/>　　　传真：82692011<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局门头沟分局<br/>　　&nbsp;　地址：门头沟区滨河路70号<br/>　　　&nbsp;邮编：102300<br/>　　&nbsp;　电话：69842860<br/>　　&nbsp;　传真：69844939<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局昌平分局<br/>　　　地址：昌平县昌平镇五街煤市口胡同<br/>　　　邮编：102200<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电话：69742605<br/>　　　传真：69744579&nbsp;<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局顺义分局<br/>　　　地址：顺义县石园西路<br/>　　　邮编：101300<br/>　　　电话：69441930<br/>　　　传真：81491542<br/>　北京市工商行政管理局通州分局<br/>　　　地址：通州区新华大街110号<br/>　　　邮编：101100<br/>　　　电话：69542545<br/>　　　传真：69542545<br/>　北京市工商行政管理局大兴分局&nbsp;<br/>　　　地址：大兴区市场路东側<br/>　　　邮编：102600<br/>　　　电话：69253790<br/>　　　传真：69253790&nbsp;<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局房山分局<br/>　　　地址：北京市房山区良乡西路22号<br/>　　　邮编：102488<br/>　　　电话：69366848<br/>　　　传真：69366847<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局平谷分局<br/>　　　地址：平谷县平谷镇林荫街3号<br/>　　　邮编：101200<br/>　　　电话：69961347<br/>　　　传真：69961347<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局怀柔分局<br/>　　&nbsp;&nbsp;地址：怀柔区怀柔镇镇北大街14号<br/>　　&nbsp;&nbsp;邮编：101400<br/>　　&nbsp;&nbsp;电话：69644365<br/>　　&nbsp;&nbsp;传真：69621476<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局密云分局<br/>　　　地址：密云县新北路路北<br/>　　　邮编：101500<br/>　　　电话：69042280<br/>　　　传真：69044178<br/>&nbsp;&nbsp;&nbsp;&nbsp;北京市工商行政管理局延庆分局<br/>　　　地址：延庆县东外大街57号<br/>　　　邮编：102100<br/>　　　电话：69141535<br/>　　　传真：69141535&nbsp;<br/>&nbsp;&nbsp;&nbsp;北京市工商行政管理局燕山分局<br/>　　　　地址：燕山岗南路2巷3号<br/>　　　　邮编：102500<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电话：81348428<br/>　　　&nbsp;&nbsp;传真：69341047<br/><br/>工商局各科室联系方式：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（一）办公室<br/>&nbsp;&nbsp;&nbsp;&nbsp;负责本机关政务工作；负责公文处理、信息、议案、&nbsp;建议、提案和信访、档案、保密工作，以及重要会议&nbsp;的组织工作；负责重要文件和会议决定事项的督查工作；负责本系统&nbsp;重要工作的协调；负责协调本系统&nbsp;<br/>调查研究工作，承担综合性调研；负责组织研究拟订本系统的宣传规划，组织协调本系统的对外宣传工作。<br/>　　处长：姜兆会<br/>　　副处长：陶红、周志宇<br/>　　联系电话：82690904、82690900&nbsp;<br/><br/>（二）法制处<br/>&nbsp;&nbsp;&nbsp;&nbsp;组织起草有关工商行政管理方面的地方性法规、规章草案；对本部门制定的规范性文件进行合法性审核；组织、协调、参与工商行政管理法律、法规、规章的宣传和解释；组织开展工商行政管理执法监督工作；承办本机关的行政复议、行政赔偿案件和行政诉讼的应诉代理工作；组织行政处罚听证工作。<br/>　　处长：胡莉蓉<br/>　　副处长：陈军<br/>　　联系电话：82691222、82691224<br/><br/>（三）登记注册处<br/>　　负责研究草拟内资企业、个体工商户、有形市场的登记办法；核定注册单位名称，依法核准管辖范围内市场主体的各类登记，颁发有关证照；负责办理企业改组改制登记工作；核发广告经营单位《广告经营许可&nbsp;<br/>证》；发布内资企业法人公告。<br/>　　处长：贺庆财<br/>　　副处长：邵静民、武燕明、林树涛<br/>　　联系电话：82690302<br/><br/>（四）企业监督管理处（私营个体经济监察管理处）<br/>　　负责研究拟订企业、个体私营经济监督管理办法；负责在本机关登记注册的内资企业、外资企业、私营企业的年检和监督检查工作；负责对商品展销、展览活动的登记管理，并对交易行为进行监督；组织对企业&nbsp;<br/>非法经营行为进行专项治理．组织查处非法经济组织、企业违反登记管理注册事项等有关法的案件；协助&nbsp;<br/>关部门参与外来人口管理等工作。<br/>　　处长：<br/>　　副处长：孔江、王金、肖致和<br/>　　联系电话：82691223、82691211<br/><br/>（五）市场监督管理处<br/>　　负责研究拟订规范生活消费品和生产资料市场秩序的办法；开展对生产要素市场的研究，提出监督管理措施；依法监督管理各类市场交易行为，组织查处违法违章行为。<br/>　　处长：李异<br/>　　副处长：李晓梅<br/>　　联系电话：82691205、82691207<br/><br/>（六）合同监督管理处<br/>　　组织实施合同行政监督管理；组织查处利用合同进行的违法行为；组织对经纪人主体资格及经纪人、经纪机构经营行为的规范管理；组织管理动产抵押登记；组织监督管理拍卖行为。<br/>　　处长：王珊<br/>　　联系电话：82691006<br/><br/>（七）商标监督管理处<br/>　　负责研究拟订商标监督管理办法。负责对商标印刷单位的审批及监督管理；负责商标代理组织的审批核转工作；负责对企业使用商标、对商标代理组织、商标评估机构进行监督管理；负责驰名商标的核转和著名&nbsp;<br/>商标的认定及保护工作；组织查处商标侵权及假冒案件。<br/>　　处长：张国鸿<br/>　　副处长：刘燕华<br/>　　联系电话：82690806<br/><br/>（八）广告监督管理处<br/>　　负责拟订广告监督管理办法；负责审批广告发布单位的广告经营资格，审查中外合资。中外合作广告经营企业的广告立项；负责审批本市户外广告经营单位资质以及户外&nbsp;广告登记、内容审查和监督管理；负责&nbsp;<br/>广告活动的专项审批；组织实施对广告活动的监督管理；组织查处广告违法违章行为。<br/>　　处长：欧树芳<br/>　　副处长：任保利<br/>　　联系电话：82691106<br/><br/>（九）消费者权益保护处<br/>　　负责研究拟订消费者权益保护办法、规章制度及具体措施，并组织实施；受理、移送消费者的投诉、对经济违法行为和对工商行政管理部门以及工作人员违法违纪行为的举报，并对落实情况进行协调、督导、检&nbsp;<br/>查；调解处理消费者权益争议；组织查处商品（农业生产资料）消费和服务领域中侵害消费者合法权益的&nbsp;<br/>案件；组织查处市场管理中发现的经销掺假及假冒产品行为。<br/>　　处长：曹中生<br/>　　副处长：冯源<br/>　　联系电话：82691109<br/><br/>（十）经济检查处（打击传销办公室）<br/>　　负责研究拟订制止垄断和不正当竞争的办法并组织实施；组织查处市场交易中的垄断、不正当竞争、流通领域走私贩私、经济违法违章行为。<br/>　　处长：薄宗林<br/>　　副处长：任非石<br/>　　联系电话：82690805、82690825<br/><br/>（十一）特殊交易监督管理处<br/>　　负责研究拟订规范利用计算机网络等特殊渠道从事经营活动的具体措施和办法，并依法监督管理；组织查处特殊交易中的经济违法、违章案件；负责外国（地区）企业常驻代车机构的监督管理、联络沟通和宣传&nbsp;<br/>工作。<br/>　　处长：王靖<br/>　　副处长：陈建平<br/>　　联系电话：82690822<br/><br/>（十二）计划财务处<br/>　　研究制订本系统财务管理、国有资产管理及本机关财务收支管理办法，并组织实施；监督检查本系统财务预算、财务纪律和各种财务管理制度的落实情况；组织进行审计工作；负责拟订本系统基本建设规划；负&nbsp;<br/>责本机关固定资产、装备、房改的管理工作和安全保卫工作。<br/>　　处长：杨焕文<br/>　　副处长：徐金良、王国忠、姚余宝<br/>　　联系电话：82691011、82691009<br/><br/>（十三）人事处<br/>　　负责本系统干部队伍建设规划及部署的落实工作；负责本机关的人事管理工作；指导直属单位人事管理工作；承办本系统人员出国（境）的有关工作等。<br/>　　处长：张宝贵<br/>　　副处长：王燕庆、刁林春<br/>　　联系电话：82690809、82690811<br/><br/>（十四）机关党委（教育与基层建设处）<br/>　　负责本机关及直属单位的党群工作；负责本系统教育培训及基层建设工作。<br/>　　处长：王华<br/>　　联系电话：82691122、82691124<br/><br/>（十五）外商投资企业监督管理处<br/>　　研究外资准入政策，探索外资监管模式，为领导决策提供依据；指导各区县分局对外商投资企业的监督管理工作；负责外国（地区）企业常驻代表机构的监督管理、沟通联络及宣传工作；为中外投资者提供政策咨询服务；承办上级领导交办的其他事宜。<br/>　　处长：刘清<br/>　　副处长：黄阳生<br/>　　联系电话：82691105<br/><br/>（十六）食品安全协调处&nbsp;<br/>　　组织拟定本市食品安全管理的工作规划并监督实施；负责食品安全监督的组织协调、依法行使食品安全管理的综合监督；负责本市食品安全统一标准及食品安全检测、评价体系建设的有关协调工作，组织协调本&nbsp;<br/>市食品安全监督抽查工作；负责收集、汇总食品安全信息，分析、预测食品安全形势，评估、预防食品安&nbsp;<br/>全风险，综合食品安全信息并定期向社会发布。<br/>　　处长：唐云华<br/>　　联系电话：82691114<br/><br/>（十七）食品安全监察处&nbsp;<br/>　　组织协调有关部门健全本市食品安全事故报告系统；根据市政府授权，组织开展食品安全的专项执法监督检查活动；依法组织开展对食品重大安全事故、案件的查处；组织、协调和配合有关部门开展食品安全重&nbsp;<br/>大事故的应急救援工作。<br/>　　处长：冀玮<br/>　　联系电话：82691107<br/><br/>（十八）市场经济秩序综合处&nbsp;<br/>　　研究提出本市整顿和规范市场经济秩序的工作建议；协调有关部门开展专项整治活动；督促检查有关重大案件的查处工作。<br/>　　处长：张建设<br/>　　联系电话：82691206<br/><br/>（十九）宣传处&nbsp;<br/>　　制订本系统宣传规划、计划并组织实施，组织、指导区（县）工商分局的宣传工作。<br/>　　处长：王晓静<br/>　　联系电话：82690917<br/><br/>（二十）监察处<br/>　　北京市监察局派驻北京市工商局的机构，受市监察局和市工商局的双重领导。监察对象为北京市工商行政管理系统各级机关的国家公务员及所属单位的其他工作人员。主要工作职责：负责检察监察对象在遵守、&nbsp;<br/>执行法律、法规和政府决定、命令中的问题；负责本系统勤政廉政建设和反腐败工作；受理对监察对象违&nbsp;<br/>反行政纪律行为的控告、检举，调查处理监察对象违反行政纪律的行为；承担监督检查本局公务员勤政廉&nbsp;<br/>政状况工作，对其进行法律、法规和行政纪律的宣传教育；完成市监察局和市工商局领导交办的其他工作。<br/>　　处长：张鸿果<br/>　　副处长：冯玉萍<br/>　　联系电话：82691014<br/><br/>北京工商局直属机构：<br/><br/>（一）执法检查大队<br/>　　负责检查督导基层落实执法责任制情况及基层执法人员文明执法情况;查处侵害消费者权益案件；负责协调市属有关执法单位联合执法工作;完成市委、市政府和本局临时交办的有关市场管理的紧急勤务及其他&nbsp;工作。<br/>　　队长：贺林峰<br/>　　联系电话：63456050&nbsp;<br/><br/>（二）&nbsp;首都机场分局<br/>　　负责对辖区内各类企业登记注册的受理、初审和监督管理及其他经济组织的登记注册和监督管理工作；对辖区内市场进行监督管理；依法查处辖区内各类经济违法违章案件；完成市工商局交办的其他工作。&nbsp;<br/>　　局长：任穗英<br/><br/>（三）北京西站分局<br/>　　负责对辖区内各类企业登记注册的受理、初审和监督管理及其他经济组织的登记注册和监督管理工作；对辖区内市场进行监督管理；依法查处辖区内各类经济违法违章案件；完成市工商局交办的其他工作。<br/>　　局长：陈建成<br/><br/>（四）北京经济技术开发区分局<br/>　　负责对辖区内各类企业登记注册的受理、初审和监督管理及其他经济组织的登记注和监督管理工作；对辖区内市场进行监督管理；依法查处辖区内各类经济违法违章案件；完成市工商局交办的其他工作。<br/>　　局长：赵敏<br/><br/>（五）重要商品市场管理分局<br/>　　负责对商品标的特殊、管理层次较高、经营规模较大的国家实行重点管理的市场进行监督管理；对重要商品市场进行专项整治,查处重要商品市场内的经济违法违章行为,完成市局交办的其他工作。<br/>　　局长：周占柱<br/><br/>（六）机动车市场管理分局<br/>　　依法对机动车生产经营单位进行资格初审，依法对进入机动车交易市场双方资格进行审查；依法对机动车交易行为进行监督检查，对交易凭证验证盖章；监督管理与机动车相关产品市场，查处机动车交易活动中的经济违法违章活动；完成市工商局交办的其他工作。<br/>　　局长：孙建生<br/><br/>（七）天安门地区分局<br/>　　依法对辖区内各类企业和市场经营活动进行监督管理,保护合法经营、取缔非法经营,维护正常的经济秩序,完成市工商局交办的其他工作。<br/>　　局长：张承桂<br/><br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=446" /> 
	  <id>http://www.loverer.com/default.asp?id=446</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[国务院办公厅关于２００９年部分节假日安排的通知]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=6" label="其他杂记" /> 
	  <updated>2009-01-14T16:45:23+08:00</updated>
	  <published>2009-01-14T16:45:23+08:00</published>
		  <summary type="html"><![CDATA[<br/>中国政府网１０日刊登《国务院办公厅关于２００９年部分节假日安排的通知》。通知说，为便于各地区、各部门及早合理安排节假日旅游、交通运输、生产经营等有关工作，经国务院批准，现将２００９年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下：&nbsp;<br/><br/><br/>一、元旦：１月１日至３日放假，共３天。其中，１月１日（星期四、新年）为法定节假日，１月３日（星期六）为公休日。１月４日（星期日）公休日调至１月２日（星期五）。１月４日（星期日）上班。&nbsp;<br/><br/><br/>二、春节：１月２５日至３１日放假，共７天。其中，１月２５日（星期日、农历除夕）、１月２６日（星期一、农历正月初一）、１月２７日（星期二、农历正月初二）为法定节假日，１月３１日（星期六）照常公休；１月２５日（星期日）公休日调至１月２８日（星期三），１月２４日（星期六）、２月１日（星期日）两个公休日调至１月２９日（星期四）、１月３０日（星期五）。１月２４日（星期六）、２月１日（星期日）上班。&nbsp;<br/><br/><br/>三、清明节：４月４日至６日放假，共３天。其中，４月４日（星期六、农历清明当日）为法定节假日，４月５日（星期日）照常公休。４月４日（星期六）公休日调至４月６日（星期一）。&nbsp;<br/><br/><br/>四、劳动节：５月１日至３日放假，共３天。其中，５月１日（星期五、“五一”国际劳动节）为法定节假日，５月２日（星期六）、５月３日（星期日）照常公休。&nbsp;<br/><br/><br/>五、端午节：５月２８日至３０日放假，共３天。其中，５月２８日（星期四、农历端午当日）为法定节假日，５月３０日（星期六）照常公休；５月３１日（星期日）公休日调至５月２９日（星期五）。５月３１日（星期日）上班。&nbsp;<br/><br/><br/>六、国庆节、中秋节：１０月１日至８日放假，共８天。其中，１０月１日（星期四）、１０月２日（星期五）、１０月３日（星期六）为国庆节法定节假日，１０月４日（星期日）照常公休；１０月３日（星期六）公休日及中秋节分别调至１０月５日（星期一）、１０月６日（星期二），９月２７日（星期日）、１０月１０日（星期六）公休日调至１０月７日（星期三）、１０月８日（星期四）。９月２７日（星期日）、１０月１０日（星期六）上班。&nbsp;<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=445" /> 
	  <id>http://www.loverer.com/default.asp?id=445</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[用C#.net轻松制作不规则窗体]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-12-10T09:15:14+08:00</updated>
	  <published>2008-12-10T09:15:14+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;1.绘制不规则窗体位图&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;2.设置窗体基本属性<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;3.编写窗体相关代码&nbsp;&nbsp;（要实现窗口的关闭，移动等操作）&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;1.绘制不规则窗体位图&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以使用任意一种你喜欢的作图工具，制作一个有形状的位图，背景使用一种其他的颜色。这个颜色在编程中用得着，所以最好使用一种容易记忆的颜色。<br/><br/>如图下图，本例中使用的背景色为黄色（#ffff00/yellow）,文件名为bk.bmp<br/><br/>&nbsp;<br/><br/>&nbsp;&nbsp;2.创建windows窗体并设置窗体基本属性<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&gt;新建windows应用程序<br/><br/><br/>&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&gt;选中新建的窗体，设置其相应属性：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）。将&nbsp;FormBorderStyle&nbsp;属性设置为&nbsp;None。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）。将窗体的&nbsp;BackgroundImage&nbsp;属性设置为先前创建的位图文件。不必将文件添加到项目系统中；这将在指定该文件作为背景图像时自动完成。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）。将&nbsp;TransparencyKey&nbsp;属性设置为位图文件的背景色，本例中为黄色。（此属性告诉应用程序窗体中的哪些部分需要设置为透明。&nbsp;）<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这时你就可以按F5测试你的程序，可以看到如图所示的窗体。现在窗体还不能拖动，只能通过结束程序，或者alt+F4关闭。下面我们编写相应的代码来实现标题栏的相应功能。<br/><br/>&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;3.编写窗体相关代码<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（要实现窗口的关闭，移动等操作）<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）。实现窗口关闭<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从工具栏中拖进一个按钮，设置其按钮文字为“×”，设置其大小为合适大小。双击该按钮进入其触发时间函数。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写入如下代码：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭本窗体<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）。设置窗体的移动操作，我们要用到两个全局的变量<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Point&nbsp;mouseOffset;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//记录鼠标指针的坐标<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;bool&nbsp;isMouseDown&nbsp;=&nbsp;false;&nbsp;//记录鼠标按键是否按下<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建该窗体&nbsp;MouseDown事件的相应处理程序。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Form1_MouseDown(object&nbsp;sender,&nbsp;System.Windows.Forms.MouseEventArgs&nbsp;e)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;xOffset;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;yOffset;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.Button&nbsp;==&nbsp;MouseButtons.Left)&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xOffset&nbsp;=&nbsp;-e.X&nbsp;-&nbsp;SystemInformation.FrameBorderSize.Width;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yOffset&nbsp;=&nbsp;-e.Y&nbsp;-&nbsp;SystemInformation.CaptionHeight&nbsp;-&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemInformation.FrameBorderSize.Height;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouseOffset&nbsp;=&nbsp;new&nbsp;Point(xOffset,&nbsp;yOffset);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isMouseDown&nbsp;=&nbsp;true;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建该窗体的&nbsp;MouseMove事件的相应处理程序<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Form1_MouseMove(object&nbsp;sender,&nbsp;System.Windows.Forms.MouseEventArgs&nbsp;e)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isMouseDown)&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;mousePos&nbsp;=&nbsp;Control.MousePosition;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mousePos.Offset(mouseOffset.X,&nbsp;mouseOffset.Y);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location&nbsp;=&nbsp;mousePos;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建该窗体的MouseUp事件的相应处理程序<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Form1_MouseUp(object&nbsp;sender,&nbsp;System.Windows.Forms.MouseEventArgs&nbsp;e)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;修改鼠标状态isMouseDown的值<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;确保只有鼠标左键按下并移动时，才移动窗体<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.Button&nbsp;==&nbsp;MouseButtons.Left)&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isMouseDown&nbsp;=&nbsp;false;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）。加入相应的其他的控件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他的就是看你自己的需要，来添加控件，实现自己想要实现的功能。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本例中添加了一文本框，设置其背景为黄色，所以显示时也成了透明的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=444" /> 
	  <id>http://www.loverer.com/default.asp?id=444</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[c#窗体圆角透明效果]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-12-10T09:12:02+08:00</updated>
	  <published>2008-12-10T09:12:02+08:00</published>
		  <summary type="html"><![CDATA[using&nbsp;System;<br/>using&nbsp;System.Collections.Generic;<br/>using&nbsp;System.ComponentModel;<br/>using&nbsp;System.Data;<br/>using&nbsp;System.Drawing;<br/>using&nbsp;System.Text;<br/>using&nbsp;System.Windows.Forms;<br/>using&nbsp;System.Drawing.Drawing2D;<br/><br/>namespace&nbsp;yjct<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;partial&nbsp;class&nbsp;Form1&nbsp;:&nbsp;Form<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Form1()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Form1_Resize(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type(this,&nbsp;25,&nbsp;0.1);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Type(Control&nbsp;sender,&nbsp;int&nbsp;p_1,&nbsp;double&nbsp;p_2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GraphicsPath&nbsp;oPath&nbsp;=&nbsp;new&nbsp;GraphicsPath();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oPath.AddClosedCurve(new&nbsp;Point[]&nbsp;{&nbsp;new&nbsp;Point(0,&nbsp;sender.Height&nbsp;/&nbsp;p_1),&nbsp;new&nbsp;Point(sender.Width&nbsp;/&nbsp;p_1,&nbsp;0),&nbsp;new&nbsp;Point(sender.Width&nbsp;-&nbsp;sender.Width&nbsp;/&nbsp;p_1,&nbsp;0),&nbsp;new&nbsp;Point(sender.Width,&nbsp;sender.Height&nbsp;/&nbsp;p_1),&nbsp;new&nbsp;Point(sender.Width,&nbsp;sender.Height&nbsp;-&nbsp;sender.Height&nbsp;/&nbsp;p_1),&nbsp;new&nbsp;Point(sender.Width&nbsp;-&nbsp;sender.Width&nbsp;/&nbsp;p_1,&nbsp;sender.Height),&nbsp;new&nbsp;Point(sender.Width&nbsp;/&nbsp;p_1,&nbsp;sender.Height),&nbsp;new&nbsp;Point(0,&nbsp;sender.Height&nbsp;-&nbsp;sender.Height&nbsp;/&nbsp;p_1)&nbsp;},&nbsp;(float)p_2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sender.Region&nbsp;=&nbsp;new&nbsp;Region(oPath);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;Form1_Paint(object&nbsp;sender,&nbsp;PaintEventArgs&nbsp;e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type(this,&nbsp;25,&nbsp;0.1);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=443" /> 
	  <id>http://www.loverer.com/default.asp?id=443</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[App.Config文件的读写()]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-12-10T09:08:16+08:00</updated>
	  <published>2008-12-10T09:08:16+08:00</published>
		  <summary type="html"><![CDATA[using&nbsp;System;<br/>using&nbsp;System.Collections.Generic;<br/>using&nbsp;System.Text;<br/>using&nbsp;System.Configuration;<br/>using&nbsp;System.Collections;<br/><br/>namespace&nbsp;ServicesConfiguration<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;ConfigurationDispose<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ConfigurationDispose()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetConfigurationGetConfiguration#region&nbsp;GetConfiguration<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//**//**////&nbsp;&lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;取得appSettings里的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;key&#34;&gt;键&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;值&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;GetConfiguration(string&nbsp;key)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ConfigurationManager.AppSettings[key];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetConfigurationListGetConfigurationList#region&nbsp;GetConfigurationList<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//**//**////&nbsp;&lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;取得appSettings里的值列表<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;filePath&#34;&gt;配置文件路径&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;returns&gt;值列表&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;KeyValueConfigurationCollection&nbsp;GetConfigurationList(string&nbsp;filePath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppSettingsSection&nbsp;appSection&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//AppSection对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;configuration&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Configuration对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyValueConfigurationCollection&nbsp;k&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//返回的键值对类型<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configuration&nbsp;=&nbsp;ConfigurationManager.OpenExeConfiguration(filePath);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取得AppSettings节<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appSection&nbsp;=&nbsp;(AppSettingsSection)configuration.Sections[&#34;appSettings&#34;];<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取得AppSetting节的键值对<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;=&nbsp;appSection.Settings;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;k;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetConfigurationSetConfiguration#region&nbsp;SetConfiguration<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//**//**////&nbsp;&lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;设置appSetting的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;key&#34;&gt;键&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;value&#34;&gt;值&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;filePath&#34;&gt;App.config文件路径&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;SetConfiguration(string&nbsp;key,&nbsp;string&nbsp;value,string&nbsp;filePath)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;configuration&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Configuration对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppSettingsSection&nbsp;appSection&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//AppSection对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configuration&nbsp;=&nbsp;ConfigurationManager.OpenExeConfiguration(filePath);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取得AppSetting节<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appSection&nbsp;=&nbsp;configuration.AppSettings;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//赋值并保存<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appSection.Settings[key].Value&nbsp;=&nbsp;value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configuration.Save();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetConfigurationSetConfiguration#region&nbsp;SetConfiguration<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//**//**////&nbsp;&lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;设置appSetting的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;key&#34;&gt;键&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;param&nbsp;name=&#34;value&#34;&gt;值&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;SetConfiguration(string&nbsp;key,&nbsp;string&nbsp;value)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppSettingsSection&nbsp;appSection&nbsp;=&nbsp;null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//AppSection对象<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appSection&nbsp;=&nbsp;ConfigurationManager.GetSection(&#34;appSettings&#34;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appSection.Settings[key].Value&nbsp;=&nbsp;value;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>}&nbsp;<br/><br/>&nbsp;<br/><br/>自己做的小例子，很简单，就是一个读取其中配置信息<br/><br/>&nbsp;<br/><br/>App.Config&nbsp;<br/><br/><br/>&lt;?xml&nbsp;version=&#34;1.0&#34;&nbsp;encoding=&#34;utf-8&#34;&nbsp;?&gt;<br/>&lt;configuration&gt;<br/>&nbsp;&nbsp;&lt;appSettings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;add&nbsp;key=&#34;User&#34;&nbsp;value=&#34;Mgod&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&lt;/appSettings&gt;<br/><br/>&lt;/configuration&gt;<br/>&nbsp;<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=442" /> 
	  <id>http://www.loverer.com/default.asp?id=442</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[(zt)使用Reflactor反编译.Net程序的经验]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-12-03T09:35:13+08:00</updated>
	  <published>2008-12-03T09:35:13+08:00</published>
		  <summary type="html"><![CDATA[相信大多数.Net程序员都有使用Reflactor的经历。无论出于什么目的，当用Reflactor反编译托管程序后，还想对其代码加以修改，那么本文所列举的可能是一份有用的参考。<br/><br/><br/>用Reflactor的FileGenerator插件反编译代码后可以得到包括项目文件的源代码，但代码中存在各种问题，一般无法一次编译通过，以下将详谈这些问题：<br/><br/><br/>枚举问题<br/><br/><br/>为了代码可读，可能需要花点时间查阅metadata把int值修改回枚举值，尤其是想利用窗体设计器的，VS2008可能还不理解int值。<br/><br/><br/>属性问题<br/><br/><br/>比如一个叫Names的属性被反编译后，可能还原为的set_Names(names)，get_Names()方法，逐个替换可能很慢，可采用正则表达式整体替换。<br/>对于set_Xxx(xxx)方法，可替换<br/>set_{[a-z]*}\(<br/>为<br/>\1&nbsp;=&nbsp;(<br/>对于get_Xxx()方法，可替换<br/>get_{[a-z]*}\(\)<br/>为<br/>\1<br/>然后，再修复个别被误换的方法。<br/><br/><br/>委托和回调函数问题<br/><br/><br/>一般会被还原为add_Xxx(MethodsName)方法，需要改为&nbsp;+=&nbsp;MethodsName<br/><br/><br/>资源问题<br/><br/><br/>需要使用.Net&nbsp;Framework&nbsp;SDK&nbsp;下的&nbsp;resgen.exe&nbsp;工具，反编译嵌入资源文件*.resources为*.resx文件，<br/>语法为：ResGen.exe&nbsp;*.resources&nbsp;*.resx，然后将*.resx包含入项目，就会自动和同名的窗体文件*.cs关联，如果没有关联可采用先排除再添加大法，一一搞定。<br/><br/><br/>命名空间问题<br/><br/><br/>如果需要切换到IDE的窗体设计器，而不出错，则还需要在*.cs中添加比如System.Windows.Forms的命名空间前缀。<br/><br/><br/>窗体设计器识别问题<br/><br/><br/>需要把以下代码<br/>ComponentResourceManager&nbsp;manager&nbsp;=&nbsp;new&nbsp;ComponentResourceManager(typeof(ClassName));<br/>替换为<br/>System.ComponentModel.ComponentResourceManager&nbsp;resources&nbsp;=&nbsp;new&nbsp;System.ComponentModel.ComponentResourceManager(typeof(ClassName));<br/>窗体设计器才能正常识别。<br/><br/><br/>来源<br/><a href="http://www.cnblogs.com/likun/archive/2008/08/11/1265008.html" target="_blank">http://www.cnblogs.com/likun/archive/2008/08/11/1265008.html</a>&nbsp;<br/>(存档下，便于以后查阅）]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=441" /> 
	  <id>http://www.loverer.com/default.asp?id=441</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C#--警告～～已过时解决办法]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-08-11T13:26:41+08:00</updated>
	  <published>2008-08-11T13:26:41+08:00</published>
		  <summary type="html"><![CDATA[1“System.Configuration.ConfigurationSettings.GetConfig(string)”已过时<br/><br/>警告“System.Configuration.ConfigurationSettings.GetConfig(string)”已过时:“This&nbsp;method&nbsp;is&nbsp;obsolete,&nbsp;it&nbsp;has&nbsp;been&nbsp;replaced&nbsp;by&nbsp;System.Configuration!System.Configuration.ConfigurationManager.GetSection”<br/><br/>警告&nbsp;&nbsp;&nbsp;1&nbsp;“System.Configuration.ConfigurationSettings.AppSettings”已过时:“This&nbsp;method&nbsp;is&nbsp;obsolete,&nbsp;it&nbsp;has&nbsp;been&nbsp;replaced&nbsp;by&nbsp;System.Configuration!System.Configuration.ConfigurationManager.AppSettings”&nbsp;<br/><br/>注意:默认没有引用ConfigurationManager类，所以找不到System.Configuration命名空间的&nbsp;ConfigurationManager类.<br/><br/>解决:首先添加对System.Configuration.dll&nbsp;文件的引用;其次再将&#34;System.Configuration.ConfigurationSettings.GetConfig替换为System.Configuration.ConfigurationManager.GetSection<br/><br/>将“System.Configuration.ConfigurationSettings.AppSettings”替换为System.Configuration.ConfigurationManager.AppSettings”&nbsp;<br/><br/><br/>MS对这一点提示比较隐晦而已——<br/>This&nbsp;method&nbsp;is&nbsp;obsolete,&nbsp;it&nbsp;has&nbsp;been&nbsp;replaced&nbsp;by&nbsp;System.Configuration!System.Configuration.ConfigurationManager.AppSettings<br/>上面那段话多了System.Configuration!<br/><br/>2&nbsp;警告“System.Web.UI.Page.RegisterClientScriptBlock(string,&nbsp;string)”已过时<br/><br/>警告“System.Web.UI.Page.RegisterClientScriptBlock(string,&nbsp;string)”已过时:“The&nbsp;recommended&nbsp;alt&#101;rnative&nbsp;is&nbsp;ClientScript.RegisterClientScriptBlock(Type&nbsp;type,&nbsp;string&nbsp;key,&nbsp;string&nbsp;script).&nbsp;<a href="http://go.microsoft.com/fwlink/?linkid=14202" target="_blank">http://go.microsoft.com/fwlink/?linkid=14202</a>”<br/>如果出现类似的警告，则应该这样处理：<br/>如你的警告代码为：<br/>RegisterClientScriptBlock(&#34;&#34;,&nbsp;&#34;&lt;script&nbsp;language=javascript&gt;window.open(&#39;../Issue/IssueAllComment.aspx&#39;)&lt;/script&gt;&#34;);<br/>目的是要新弹出页面。<br/>可以改为：<br/>ClientScript.RegisterStartupScript(this.GetType(),&nbsp;&#34;&#34;,&nbsp;&#34;&lt;script&gt;window.open(&#39;../Issue/IssueAllComment.aspx&#39;);&lt;/script&gt;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.HyperLink_AmendDocument.NavigateUrl&nbsp;=&nbsp;&#34;AccessoriesAdd.aspx&#34;;<br/><br/><br/><br/>&lt;script&nbsp;type=&#34;text/javascript&#34;&gt;&nbsp;<br/>function&nbsp;mainThemeWordSel&#101;ct()&nbsp;<br/>{&nbsp;<br/>window.open(&#34;ThemeWordSel&#101;ct.aspx&#34;,&#34;_blank&#34;,&nbsp;&#34;toolbar=no,resizable=yes,scrollbars=yes&#34;);&nbsp;<br/>}&nbsp;<br/>&lt;/script&gt;&nbsp;<br/>想让服务器控件LinkButton被点击时执行这脚本，后台代码这样写的&nbsp;<br/>protected&nbsp;void&nbsp;lbMainTheme_Click(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)&nbsp;<br/>{&nbsp;<br/>Page.RegisterStartupScript(&#34;sds&#34;,&nbsp;&#34;&lt;script&nbsp;language=&#39;javascript&#39;&gt;mainThemeWordSel&#101;ct();&lt;&#34;&nbsp;+&nbsp;&#34;/script&gt;&#34;);&nbsp;<br/><br/>}&nbsp;<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=440" /> 
	  <id>http://www.loverer.com/default.asp?id=440</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[自定义身份验证Soap头 进行加密解密 ]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-07-07T17:41:18+08:00</updated>
	  <published>2008-07-07T17:41:18+08:00</published>
		  <summary type="html"><![CDATA[在上篇文章中我们了解了使用自定义SOAP头进行身份验证，使webService服务的身份验证变得灵活，简便。<br/>但是是以明文的方式在网上传输，不能保在传输的过程中被别人截取。所以，为了保证安全性我们必须对，Soap头进行加密，密文的方式传输。<br/>&nbsp;<br/>&nbsp;&nbsp;废话就不多说了，下面我们&nbsp;看看下面的简单的例子：<br/><br/>&nbsp;&nbsp;首先我们在客户端进行对数据的加密：这里我们使用的是64位DES加密算法。<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;设置密钥（Key）和初始值（IV）可放在配置文件中：<br/>&nbsp;&nbsp;&lt;appSettings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;add&nbsp;key=&#34;Key&#34;&nbsp;value=&#34;fdautoit&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;add&nbsp;key=&#34;IV&#34;&nbsp;value=&#34;FDAUTOIT&#34;/&gt;<br/>&nbsp;&nbsp;&lt;/appSettings&gt;<br/>*注：上面的值只有8个字节（64位）<br/>在.cs文件中获取“Key”和“IV”<br/>string&nbsp;Key,&nbsp;Iv;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;=&nbsp;ConfigurationManager.AppSettings[&#34;Key&#34;];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iv&nbsp;=&nbsp;ConfigurationManager.AppSettings[&#34;IV&#34;];<br/><br/>定义一个加密方法：<br/>private&nbsp;string&nbsp;Encrypt(string&nbsp;p_strEncrypt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Set&nbsp;the&nbsp;Key&nbsp;and&nbsp;the&nbsp;InitialVector&nbsp;for&nbsp;Encrypt<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;key&nbsp;=&nbsp;Encoding.UTF8.GetBytes(Key);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;iv&nbsp;=&nbsp;Encoding.UTF8.GetBytes(Iv);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Convent&nbsp;the&nbsp;string&nbsp;to&nbsp;byte[]&nbsp;of&nbsp;the&nbsp;Data<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;byteData=Encoding.UTF8.GetBytes(p_strEncrypt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Set&nbsp;Memory&nbsp;space&nbsp;for&nbsp;save&nbsp;the&nbsp;Data<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryStream&nbsp;memoryData&nbsp;=&nbsp;new&nbsp;MemoryStream();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//DES&nbsp;des&nbsp;=&nbsp;new&nbsp;DESCryptoServiceProvider();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RC2&nbsp;des&nbsp;=&nbsp;new&nbsp;RC2CryptoServiceProvider();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Rijndael&nbsp;des&nbsp;=&nbsp;new&nbsp;RijndaelManaged();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TripleDES&nbsp;des&nbsp;=&nbsp;new&nbsp;TripleDESCryptoServiceProvider();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.Key&nbsp;=&nbsp;key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.IV&nbsp;=&nbsp;iv;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.Mode&nbsp;=&nbsp;CipherMode.CBC;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Cr&#101;ate&nbsp;&nbsp;the&nbsp;Method&nbsp;with&nbsp;the&nbsp;Key&nbsp;and&nbsp;IV&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICryptoTransform&nbsp;transform&nbsp;=&nbsp;des.Cr&#101;ateEncryptor();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Cr&#101;ate&nbsp;the&nbsp;EnCrypt&nbsp;stream<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CryptoStream&nbsp;cryptostream&nbsp;=&nbsp;new&nbsp;CryptoStream(memoryData,&nbsp;transform,&nbsp;CryptoStreamMode.Write);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//write&nbsp;into&nbsp;the&nbsp;Memory&nbsp;stream<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptostream.Write(byteData,&nbsp;0,&nbsp;byteData.Length);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Exception(&#34;Encrypt&nbsp;Data&nbsp;wrong&nbsp;of&nbsp;the&nbsp;write&nbsp;to&nbsp;stream!&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptostream.FlushFinalBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptostream.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//return&nbsp;memoryData.ToString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Convert.ToBase64String(memoryData.ToArray());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}在这个方法返回的是一个加密后的数据。&nbsp;private&nbsp;void&nbsp;ValidServiceMethod()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Encrypt&nbsp;the&nbsp;username&nbsp;and&nbsp;password&nbsp;of&nbsp;SoapHeader<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;m_strName&nbsp;=&nbsp;Encrypt(&#34;admin&#34;,EncryptionAlgorithm.Des);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;m_strPwd&nbsp;=&nbsp;Encrypt(&#34;admin&#34;,EncryptionAlgorithm.Des);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//new&nbsp;a&nbsp;&nbsp;SoapHeader&nbsp;and&nbsp;a&nbsp;WebService<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySoapHeader&nbsp;myheader&nbsp;=&nbsp;new&nbsp;MySoapHeader&nbsp;();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyService&nbsp;myservice&nbsp;=&nbsp;new&nbsp;MyService();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myheader.UserName&nbsp;=&nbsp;m_strName;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myheader.PassWord&nbsp;=&nbsp;m_strPwd;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Set&nbsp;the&nbsp;SoapHeader&nbsp;validate&nbsp;to&nbsp;Service<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myservice.FDSoapHeaderValue&nbsp;=&nbsp;myheader&nbsp;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Call&nbsp;Method&nbsp;of&nbsp;webservice&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myservice.GetMoney();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/><br/><br/>&nbsp;&nbsp;这样就完成了加密的过程（用户名，密码，数据可以以参数的形式传入）<br/>在服务&nbsp;器端同样设置配置文件。这于客户端的是一模一样的。<br/>&lt;appSettings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;add&nbsp;key=&#34;Key&#34;&nbsp;value=&#34;fdautoit&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;add&nbsp;key=&#34;IV&#34;&nbsp;value=&#34;FDAUTOIT&#34;/&gt;<br/>&nbsp;&nbsp;&lt;/appSettings&gt;同样在代码文件中获取其值<br/>&nbsp;&nbsp;编写解密方法：<br/>&nbsp;private&nbsp;string&nbsp;Decrypt(string&nbsp;p_strDecrypt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;the&nbsp;Key&nbsp;and&nbsp;the&nbsp;InitialVector&nbsp;for&nbsp;Decrypt<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;key&nbsp;=&nbsp;Encoding.UTF8.GetBytes(Key);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;iv&nbsp;=&nbsp;Encoding.UTF8.GetBytes(Iv);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Covent&nbsp;the&nbsp;string&nbsp;to&nbsp;byte[]&nbsp;with&nbsp;the&nbsp;Encrypt&nbsp;Data<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//byte[]&nbsp;EncrypData&nbsp;=Encoding.UTF8.GetBytes(p_strDecrypt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;EncrypData=Convert.FromBase64String(p_strDecrypt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;the&nbsp;Memory&nbsp;stream&nbsp;Space&nbsp;for&nbsp;save&nbsp;data<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryStream&nbsp;memoryData&nbsp;=&nbsp;new&nbsp;MemoryStream();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Cr&#101;ate&nbsp;DES&nbsp;for&nbsp;Decrypt<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DESCryptoServiceProvider&nbsp;des&nbsp;=&nbsp;new&nbsp;DESCryptoServiceProvider();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.Key&nbsp;=&nbsp;key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.IV&nbsp;=&nbsp;iv;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.Mode&nbsp;=&nbsp;CipherMode.CBC;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Decrypt&nbsp;with&nbsp;the&nbsp;key&nbsp;and&nbsp;InitialVector<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICryptoTransform&nbsp;transform&nbsp;=&nbsp;des.Cr&#101;ateDecryptor();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Save&nbsp;to&nbsp;MemoryStream<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CryptoStream&nbsp;cryptostream&nbsp;=&nbsp;new&nbsp;CryptoStream(memoryData,&nbsp;transform,&nbsp;CryptoStreamMode.Write);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//output&nbsp;the&nbsp;data<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptostream.Write(EncrypData,&nbsp;0,&nbsp;EncrypData.Length);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception&nbsp;ex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;Exception(&#34;write&nbsp;to&nbsp;stream&nbsp;wrong!&#34;+ex.Message);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptostream.FlushFinalBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptostream.Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//output&nbsp;data<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Encoding.UTF8.GetString(memoryData.ToArray());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;<br/><br/>Soap头:<br/>&nbsp;public&nbsp;class&nbsp;MySoapHeader&nbsp;:&nbsp;SoapHeader<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;_name;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;_passWord;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;UserName&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;_name;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;_name&nbsp;=&nbsp;value;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;PassWord<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;_passWord;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;_passWord&nbsp;=&nbsp;value;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>更改上篇中的方法：<br/><br/>&nbsp;public&nbsp;bool&nbsp;ValiHeader(out&nbsp;string&nbsp;ReturnMsg)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySoapHeader&nbsp;myheader=new&nbsp;MySoapHeader();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;flag&nbsp;=&nbsp;false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;UserName=Decrypt(myheader.UserName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;PassWord=Decrypt(myheader.PassWord);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(UserName&nbsp;==&nbsp;&#34;admin&#34;&nbsp;&amp;&amp;&nbsp;PassWord&nbsp;==&nbsp;&#34;admin&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnMsg&nbsp;=&nbsp;&#34;You&nbsp;Are&nbsp;Successfully&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnMsg&nbsp;=&nbsp;&#34;You&nbsp;Are&nbsp;Failted&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;flag;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>[WebMethod]<br/>[SoapHeader(&#34;header&#34;,&nbsp;Direction&nbsp;=&nbsp;SoapHeaderDirection.In)]<br/>public&nbsp;string&nbsp;CheckHeader()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;ReturnMsg=&#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;IsTrue=ValiHeader(out&nbsp;&nbsp;ReturnMsg);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ReturnMsg;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>如果方法：“ValiHeader”返回的是true&nbsp;表示验证成功，如果返回的是false表示用户名和密码有误。<br/><br/><br/>有关SoapHeader验证头密码核心代码就&nbsp;是这样了。其中省略了很多代码。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=439" /> 
	  <id>http://www.loverer.com/default.asp?id=439</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[使用Soap头自定义身份验证 ]]></title>
	  <author>
		 <name>ym110</name>
		 <uri>http://www.loverer.com/</uri>
		 <email>ctv0071#hotmail.com</email>
	  </author>
	  <category term="" scheme="http://www.loverer.com/default.asp?cateID=3" label=".Net技术" /> 
	  <updated>2008-07-07T17:38:32+08:00</updated>
	  <published>2008-07-07T17:38:32+08:00</published>
		  <summary type="html"><![CDATA[&nbsp;&nbsp;在intranet场景下，Windows身份验证动作良好，并且开发人员可以在自身域中对用户进行身份验证。如果在Web.config文件中将WEB服务设置为WINDOWS身份验证模式，那么必须为每一个用户创建一个本地几户或域账户。对于拥有大量用户的应用程序来说，这不是一个实用的解决方案，美工豕对于Internet上的应用程序来说这是不可能实现的。对Internet而言，可能需要根据结构化查询语言（SQL）数据库来执行自定身份验证和授权。在这种情况下应该向WEB传递自定凭据（例如用户名或密码），并让WEB服务处理身份验证和授权。<br/>&nbsp;&nbsp;&nbsp;&nbsp;这时候我可以用一种比较简便的方法－－使用SOAP头。WEB服务消费者在SOAP头中添加用户ID和密码信息，WEB服务方法会检索这些信息，并使用这些信息来执行自定义的验证从而调用相应的服务&nbsp;。<br/><br/>下面是一个简单的例子：<br/><br/>服务器端：<br/>using&nbsp;System;<br/>using&nbsp;System.Web;<br/>using&nbsp;System.Web.Services;<br/>using&nbsp;System.Web.Services.Protocols;<br/><br/>using&nbsp;System.Security.Principal;<br/>namespace&nbsp;test2<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Summary&nbsp;description&nbsp;for&nbsp;Service1<br/>&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;[WebService(Namespace&nbsp;=&nbsp;&#34;<a href="http://tempuri.org/" target="_blank">http://tempuri.org/</a>&#34;)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;[WebServiceBinding(ConformsTo&nbsp;=&nbsp;WsiProfiles.BasicProfile1_1)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;[ToolboxItem(false)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;Service1&nbsp;:&nbsp;System.Web.Services.WebService<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;&nbsp;ValidateUser&nbsp;valiUser&nbsp;=&nbsp;new&nbsp;ValidateUser();／／一定要是public访问类型。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[SoapHeader(&#34;valiUser&#34;)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;GetAuthority()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;Msg=&#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valiUser.ValiHeader(out&nbsp;Msg);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Msg;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;ValidateUser:System.Web.Services.Protocols.SoapHeader<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//用户名和密码<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;username;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;password;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;UserName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;username;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;username&nbsp;=&nbsp;value;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;PassWord<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;{&nbsp;return&nbsp;password;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;{&nbsp;password&nbsp;=&nbsp;value;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;bool&nbsp;ValiHeader(out&nbsp;string&nbsp;ReturnMsg)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;flag&nbsp;=&nbsp;false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(UserName&nbsp;==&nbsp;&#34;admin&#34;&nbsp;&amp;&amp;&nbsp;PassWord&nbsp;==&nbsp;&#34;admin&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnMsg&nbsp;=&nbsp;&#34;You&nbsp;Are&nbsp;Successfully&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnMsg&nbsp;=&nbsp;&#34;You&nbsp;Are&nbsp;Failted&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;flag;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;客户端：（我是写在一个按钮下面，向浏览器输出）<br/>&nbsp;protected&nbsp;void&nbsp;Button2_Click(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Service1&nbsp;service&nbsp;=&nbsp;new&nbsp;Service1();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ValidateUser&nbsp;valiUser&nbsp;=&nbsp;new&nbsp;ValidateUser();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valiUser.UserName&nbsp;=&nbsp;&#34;admin&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valiUser.PassWord&nbsp;=&nbsp;&#34;admin&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.ValidateUserValue&nbsp;=&nbsp;valiUser;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(service.GetAuthority());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>输出为：“You&nbsp;Are&nbsp;Successfully”<br/>注意：要使用SOAP头实现一个自定义身份验证方案，还必须在WEB服务的web.config文件中禁用其他的身份验证类型，如下所示：<br/>&lt;configuration&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;system.web&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;authentication&nbsp;mode=&#34;None&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/system.web&gt;<br/>&lt;/configuration&gt;&nbsp;&nbsp;&nbsp;<br/><br/>当使用SOAP头传输凭据时，惟一必须解决的重要问题就是安全了，不过我们可以将SOAP头中身份信息进行强加密来解决这个问题。<br/>这将在我下一片文章中出现。<br/>&nbsp;&nbsp;<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.loverer.com/default.asp?id=438" /> 
	  <id>http://www.loverer.com/default.asp?id=438</id> 
  </entry>	
		
</feed>