随笔分类 - c#
摘要:要用C#反射技术的话,首先得引入System.Reflection 命名空间,这个命名空间里的类,具有动态加载程序集、类型,动态调用方法、设置和取得属性和字段的值、可以获取类型和方法的信息的功能。要想对一个类型实例的属性或字段进行动态赋值或取值,首先得得到这个实例或类型的Type,微软已经为我们提供了足够多的方法。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Code highlighting produced by Actipro Cod
阅读全文
摘要:VS2010版快捷键Ctrl+E,D ----格式化全部代码Ctrl+E,F ----格式化选中的代码CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CTRL + ALT + J对象浏览CTRL + ALT + F1帮助目录CTRL + F1 动态帮助F1 帮助SHIFT + F1当前窗口帮助CTRL + ALT + F
阅读全文
摘要:通过查找资料,发现C#获取文件路径的方法有以下几种://获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。 string str5=Application.StartupPath;//可获得当前执行的exe的文件名。 string str1 =Process.GetCurrentProcess().MainModule.FileName;// 获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。 备注 按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:\”)。如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动
阅读全文
摘要:摘要:文件操作是程序中非常基础和重要的内容,而路径、文件、目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题, 尽量提供一些解决方案,即使没有你想要的答案,也希望能提供给你一点有益的思路,如果你有好的建议,恳请能够留言,使这些内容更加完善。 主要内容:一、路径的相关操作, 如判断路径是否合法,路径类型,路径的特定部分,合并路径,系统文件夹路径等内容;二、相关通用文件对话框,这些对话框可以帮助我们操作文件系统中的文件和目录;三、文件、目录、驱动器的操作,如获取它们的基本信息,获取和设置文件和目录的属性,文件的版本信息,搜索文件和目录,文件判等,复制、移动、
阅读全文
摘要:前言 在谈谈VS中的模板中,我介绍了如何创建项目/项模板,这种方式可以在创建项目时省却不少重复性的工作,从而提高开发效率。在创建好了项目和文件后,就得开始具体的编码了,这时又有了新的重复性工作,就是需要经常编写一些类似或者说雷同的代码,我们需要一种方法将这些代码管理起来,减少重复输入。一个常见的例子,在使用for语句结构时,可能会有这样的代码:CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->int[] array = { 1, 2,
阅读全文
摘要:HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://www.moreyun.com/2012/shangxiabangao_0805/144.html"); HttpWebResponse myRes = (HttpWebResponse)myReq.GetResponse(); WebHeaderCollection header = myRes.Headers; string lastmodify = header["Las...
阅读全文
摘要:公司每天都要平凡登录几个特定网站,每次输帐号密码,很是不爽. 利用C# webBrowser 想自动填表提交登录. 结果发现其中有被登录网站表单中的登录按扭没有name名字 表单如下所示:C# code<form id="f_login" name="f_login" target="_top" method="post" onsubmit="return checkInput();"> <input type="text" name="ID&qu
阅读全文
摘要:PropertyInfo[] propertys = new myClass().GetType().GetProperties(); 即可获得对象myClass的所有属性组成的集合 propertys
阅读全文
摘要:这方面的文章多得很,我这里把一些细节说一下。1. 选用C#中的HttpWebRequest、HttpWebResponse和CookieContainer类。HttpWebRequest是用来提交web请求的,包括post和get;HttpWebResponse是用来接收服务器对本次请求的回复;CookieContainer是用来存放Cookie的集合,有些页面只有登录用户才能查看。这个时候就需要保存Cookie,以便使登录时建立的session保存下来这样服务器就会认为我们一直是登录状态了。2. 在浏览器中正常登录一次,查看登录时的post信息。我推荐使用FireFox浏览器+HttpFox
阅读全文
摘要:C# HttpWebRequest提交数据方式学习之前我们先来看看什么是HttpWebRequest,它是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过HTTP协议和服务器交互。C# HttpWebRequest的作用:HttpWebRequest对HTTP协议进行了完整的封装,对HTTP协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序。C# HttpWebRequest提交数据方式:程序使用HTTP协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST
阅读全文
摘要://抓取数据并做分析(保存到数据库)public partial class Form1 : Form { DataTable dt = new DataTable(); public Form1() { InitializeComponent(); label.Visible = false; progressBar1.Visible = false; } public void Bind() { // string...
阅读全文
摘要:网络通信一般都是通过Socket进行的,称为进程通信机制,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。先学习一下socket基本原理:socket原理: 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
阅读全文
摘要:网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser、WebClient、HttpWebRequest这三个。以下就分别用这三种方法来实现: 1、WebBrowser是个"迷你"浏览器,其特点是Post时不用关心Cookie、内置JS等问题 WebBrowser是VS2005新提供的组件(其实就是封装了IE接口),实现POST功能一般在webBrowser的DocumentCompleted中分析HtmlDocument 来实现,代码如下:View Code HtmlElement
阅读全文
摘要:我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员的关键性的一步。有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象的分层架构或者说是复杂的设计模式均是建立在这些基础之上的,比如我们要进行模块化、组件化开发,要严格的消除模块之间的耦合,要进行动态接口调用。这样的强大而灵活的系统开发,必须要用反射才行;任何技术都有它存在的价值和意义,只要我们把它用在合适的位置就能发挥出惊人的力量;能尽可能的减少我们编写的代码,更能是我们的代码便的清晰简洁;下面我们就来学习C#中的反射的概念以及怎么使用它,用它能为我们提供什么样的好
阅读全文
摘要:最近写了几个网站的验证码图片自动识别程序,尽管每个网站的验证码图片都不相同,识别的方法有所差别。但写得多了,也总结出不少相同之处。今天抽空封装出一个基础类来,发现可以很好地重复利用,编写不同的验证码识别程序,效率提高了不少。好东东不能独享,现放出来供大家共同研究,请网友们妥善用之。 封装后的类使用很简单,针对不同的验证码,相应继承修改某些方法,即可简单几句代码就可以实现图片识别了:GrayByPixels(); //灰度处理 GetPicValidByValue(128, 4); //得到有效空间 Bitmap[] pics = GetSplitP...
阅读全文
摘要:在工作中遇到了这样的问题,那就是要判断WebBrowser浏览器网页是否加载完成,通过搜索发现网友们解决这一问题的几种方法,但都不能解决实际问题,现在我们就来看看网友们是如何解决这一问题的。一、通过DocumentCompleted 事件 每一次网页完成之后都后发送DocumentCompleted 事件,但是拥有多个frame时,浏览器就会发送多个DocumentCompleted事件,所以到最后也无法最终判断网页最终什么时候加载完成。二、通过webBrowser.ReadyState 通过每一次读取webBrowser.ReadyState,如同上前面所列的一样,每一次DocumentCo
阅读全文
摘要:当递交数据后有alert 弹出框的时候 可以用这样的方法屏蔽掉 直接跳转到后续页面 虽然也是从网上找来的 但是也是找了好久 试了好久 对于向我一样的初学者 想做自动发帖功能的人 可能会少走冤枉路 添加 com 引用 microsoft html object library using mshtml;private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { IHTMLWindow2 win = (IHTMLWindow2)webBrowser1.Document.Window.D...
阅读全文
摘要:关于webbrowser的刷新在C#中有提供方便的方法:webbrowser.refresh();但是有时候会发现,不给力啊那怎么办?还有一招:webBrowser1.Document.ExecCommand("Refresh",false,null);//真正意义上的F5刷新要记住啊 哈哈
阅读全文
摘要:数组是大学里经常拿来做算法练习的对象。一些经典算法非常有价值,考试、装逼、面试都十分有用。但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上。下面以数组为例,展示一些常用LINQ操作。static void Main(string[] args) { int[] a = { 1, 2, 3, 4, 5, 6, 7 }; int[] b = { 4, 5, 6, 7, 8, 9, 10 }; int[] c = { 1, 2, 3, 3, 4, 1, 2, 4, 6, 1, 6, 5 }; // 交集 var...
阅读全文
摘要:StreamReader sr = new StreamReader(webBrowser1.DocumentStream, ("Encoding.GetEncodinggb2312")); textBox1.Text = sr.ReadToEnd(); 这样OK了!
阅读全文