- 博客(37)
- 收藏
- 关注
原创 ExcelMail
ExcelMailwww.dcsoft.cnV 2.42007-02-061、邮件正文改成3个段落,3个段落之间是换行。ExcelMailwww.dcsoft.cnV 2.22007-01-231、同一附件只编译一次,大量节省了时间和系统开销。2、使用多线程处理,程序更强壮。ExcelMailwww.dcsoft.cnV 2.02006-12-251、改变了程序架构,加大内存使
2006-12-21 10:32:00
2167
原创 C#的SMTP
.NET 2.0否决了原来的System.Web.Mail,而启用新的命名空间System.Net.Mail。注意要实现SMTP时,别忘了using System.Net;和using System.Net.Mail;下面看SMTP的核心代码public bool SendEmail(string strServerAddress,string strServerPort,string
2006-12-19 20:17:00
1874
原创 导航栏技术
1、网站都有导航栏,而导航栏代码基本上是每页重复的,那么每页都要重新写一遍导航栏代码吗?答案是否的,不论是制作过程,还是维护过程,都相当麻烦。2、不依赖于服务器端,实现代码复用。那就是js。先把导航栏的代码用html写出来,然后用Html-Js转换工具转成js代码,参考网站:http://tool.chinaz.com/Trans/Html_Js.asp ,然后把这段代码保存为*.js放到网站
2006-12-18 23:16:00
1820
1
原创 IIS6的SMTP
1、安装。Windows2003的IIS6集成了SMTP服务,非常好用,不过默认没有安装,请安装之。开始-〉设置-〉控制面板-〉添加或删除程序-〉添加/删除Windows组件-〉应用程序服务器-〉Internet信息服务(IIS)-〉SMTP Service,打勾,然后确定到底。2、配置SMTP服务器。开始-〉设置-〉控制面板-〉管理工具-〉Internet信息服务(IIS)管理器-〉展开本地
2006-12-18 22:46:00
5102
2
原创 C#范型入门
范型是Microsoft.NET 2.0里面一个新加的内容,它使得C#语言更加完美。鉴于范型这个概念炒作炒得太虚,而缺少实际例子,使得很多菜鸟搞不懂这个概念,所以我来详细说明1个例子程序,大家就能明白了。一、首先在VS2005环境里面新建一个控制台应用程序(Console)二、完成如下代码:static void Main(string[] args){ PrintInt(1);
2006-11-15 17:04:00
3743
2
原创 绕过复杂概念实现多线程
绕过复杂概念实现多线程比如说你要做UDP通讯,监听方法肯定是阻塞的,放到界面主线程肯定会死的。解决方法要么多线程,要么异步,说实话,代码确实够复杂的,菜鸟绝对做不来的。怎么办呢?Visual C# 2005 左边的工具栏里面有一个新东西:BackgroundWorker,下面我就告诉你怎么用这东西,通过简单的托拽,实现多线程。1、首先,拽过来一个BackgroundWorker2、双击Back
2006-11-10 11:46:00
1408
原创 简单UDP收发示例
一、UDP发送数据包IPAddress ip = IPAddress.Parse("192.168.1.255");//定义发送的目的IP地址,192.168.1.255表示广播,你也可以改成其他IPint port = 11000;//定义发送目的端口号,建议选用1024-65535之间没用过的端口UdpClient udp = new UdpClient();//定义UDP类IPEnd
2006-10-31 17:07:00
5509
原创 TSQL结果集的分页
如果你要做一系列物品的分页列表,就一定会用到“TSQL结果集的分页”或者相似的概念。比如一共有99个物品,一页显示9个,那么你在读取的时候要把99个全读出来吗?绝对不行!因为当前页只需要9个,其它的90个全是浪费,既浪费时间又消耗资源,傻子才会这么做!大家一定知道TSQL里面有个TOP函数,它能取结果集的前xx个,就用它,我们就能实现用多少取多少的目的。逻辑是这样的:第1页取1-9个数据;第2
2006-08-28 10:13:00
1612
原创 不用存储过程一样参数传递
用SQLServer的存储过程,一是可以提高访问效率,二是可以杜绝SQL注入攻击。但是如果要在SQLServer里面写入大量的存储过程、数据逻辑、甚至是业务逻辑,这就会给整个系统的移植、修改带来了大量麻烦。那么有什么办法可以既不是用存储过程,又可以杜绝SQL注入攻击呢?答案就是把“存储过程”写在程序里!废话少说,看代码:SqlConnection con = new SqlConnecti
2006-08-26 10:31:00
1256
原创 方便的制造连接字符串
在.NET中,推荐使用配置文件来存放数据库连接字符串,如Web.config或App.config。如下:configuration>appSettings> add key="SqlServerName" value="(local)"/> add key="SqlServerPort" value="1433"/> add key="SqlServerUID" val
2006-08-26 10:08:00
1818
原创 SQLXLS 4.4
SQLXLS 4.4DCSOFT2005年8月20日1、主要功能:SQLServer与Excel之间的数据转换2、运行环境要求:Microsoft.NET 1.1 + SQLServer2000 + Excel20033、安装:本软件为绿色软件,在WinXP SP2和Win2003系统下,不用安装,直接运行即可;其他系统下运行,需要先安装Microsoft.NET 1.1才能运行,之前安装
2006-08-21 21:23:00
1272
1
原创 Win闹钟
Win闹钟V1.0运行环境:Microsoft.NET 2.0跟普通闹钟一样,没啥特别的~ 安装步骤:1、下载并安装Microsoft.NET 2.0运行时,如果您以前安装过,则不必再次安装。http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/do
2006-08-21 21:22:00
1338
1
原创 Windows批量改名程序
Windows批量改名程序DCSOFTV1.02005年8月22日这个版本应该算是测试版,基本功能完成了,但是还有很多小地方需要修正。 安装步骤:1、下载并安装Microsoft.NET 1.1运行时,如果您以前安装过,则不必再次安装。http://download.microsoft.com/download/7/b/9/7b90644d-1af0-42b
2006-08-21 21:22:00
1548
原创 电猫连接者
电猫连接者V1.4PLCLinker V1.4(已经不使用中电飞华宽带,该软件停止更新)电猫-中电飞华宽带的拨号程序,使用方便。1.4版 加入了服务器IP地址,可用于不同地区的中电飞华用户使用。 安装步骤:1、下载并安装Microsoft.NET 2.0运行时,如果您以前安装过,则不必再次安装。http://download.microsoft.com/do
2006-08-21 21:20:00
1609
原创 电猫守护者
电猫守护者 V1.1PLCKeeper V1.1(已经不使用中电飞华宽带,该软件停止更新)与电猫连接者配套的程序,可以实现中电飞华宽带的断线自动重拨功能,无需人工干预。是中电飞华用户BT、电骡的必备软件。 安装步骤:1、下载并安装Microsoft.NET 2.0运行时,如果您以前安装过,则不必再次安装。http://download.microsoft.c
2006-08-21 21:20:00
1298
原创 随机密码生成器
随机密码生成器V2.42006年3月5日发布运行环境:Microsoft.NET 1.1这是一个生成随机乱码的软件,可以应用到很多领域,有很多用途。比如说,生成一个随机密码,防止暴力破解;生成一个随机邮箱地址,防止垃圾邮件……等等。 安装步骤:1、下载并安装Microsoft.NET 1.1运行时,如果您以前安装过,则不必再次安装。http://download.m
2006-08-21 21:18:00
1766
原创 启动用户实例的进程时出错
我相信很多人在使用ASP.NET 2.0 + SQL2005 + aspnetdb(MemberShip等功能)时出现这个问题:“由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。”,其英文版本的相同问题的错误信息是:“Failed to generate a user instance of SQL Server due to a failure in
2006-08-21 21:15:00
1270
原创 .NET的应用程序配置文件
WinForm有App.config,WebForm有Web.config,都是为了程序的灵活性而设计的,配置文件里面可以储存程序运行的参数,以xml的形式彻底代替了ini文件。不论是WinForm还是WebForm,.NET的配置文件写法和读取方式都是统一的:Web.config/App.config 读取配置文件先using System.Configuratio
2006-08-21 21:15:00
2217
原创 ASP.NET URL重定向技术
别看题目挺深奥,其实这项技术说白了就是:用虚拟路径代替URL参数来执行aspx页。URL参数大家都应该明白怎么回事吧,比如http://spaces.msn.com/blog.aspx?name=dcsoft, name就是参数,参数值是dcsoft,然后交给blog.aspx处理,blog.aspx能读取这些参数。虚拟路径是什么呢,博客大家都用过吧,比如http://spaces.msn.com
2006-08-21 21:14:00
4789
1
原创 全局变量与static
C#是没有全局变量的,C#设计者弄了一个叫Singleton的模式,用static可以当作全局变量来用。请看下面的类:class Class1{ public int intNum = 0; public static int intNum2 = 9;}众所周知,我们在主类里面要想引用这个类,必须先Class1 c1 = new Class1();要想c1.intNum
2006-08-21 21:13:00
1325
原创 C#与打印机的故事
作为输出设备,打印机的地位不亚于显示器。编个C#程序显示在显示器上,这是司空见惯的,但是编个C#程序,输出在打印机上,很多人就不会了,下面我来讲讲C#与打印机的故事。也许大家有看到,VS环境左边的工具栏有5个打印专用的控件,也许是因为控件太多了,弄不清哪个控件是干啥用的,找不到头绪,其实很简单~~听我的。你只需要记住2个控件,就可以很好的进行打印输出工作了。一、PrintDocument这是整个.
2006-08-21 21:12:00
2114
原创 C#遍历目录树的递归
众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对地址DirectoryInfo[] diA=di.GetDirectories();//获得了所有一级子目录FileInfo[] fiA=di.GetFiles();//获得了所有起始目录下的文件
2006-08-21 21:11:00
4663
原创 C#获得图片尺寸像素值
什么东西神通广大?能获得1个图片的尺寸像素值呢?这就是C#的System.Drawing.Image类。废话少说,看代码:Image pic=Image.FromFile(strFilePath);//strFilePath是该图片的绝对路径int intWidth=pic.Width;//长度像素值int intHeight=pic.Height;//高度像素值
2006-08-21 21:10:00
11108
6
原创 C#异步中级
异步回调,是异步操作里面的重要方法,也是异步操作较高级、较难的概念。下面听我细细道来:1、明确概念我们为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应了。异步方法很好的解决了这些问题,异步执行某个方法,程序立即开辟一个新线程去运行你的方法,主线程包
2006-08-21 21:09:00
2514
原创 C#异步初步
//首先准备好,要进行异步的方法(能异步的,最好不多线程)private string MethodName(int Num, out int Num2){ Num2 = Num; return "HelloWorld";} //定义与方法同签名的委托private delegate string DelegateName(int Num,out int Num2)
2006-08-21 21:08:00
3233
1
原创 TcpListener类获得客户连接的IP地址
用TcpListener类作为服务端,TcpClient类作为客户端,进行通讯的话,似乎很难获得客户端的IP地址,以下经验,是我经历千辛万苦得来的,请大家捧场~1、如果客户端先用Dns.GetHostName()获得计算机名,然后 Dns.GetHostAddresses(Dns.GetHostName())获得IP列表的话,是不容易得到真实IP的,原因是:IP列表里面肯定有127.0.0.1
2006-08-21 21:03:00
3183
原创 C#的TCP通信
.NET的UDP通信我死活玩不转,听说UDP库类有bug,所以我就不瞎折腾了,精力转向TCP。TCP是连接模型,如下:服务器连接 服务器断开 ↓ ↑服务器接收→服务器处理→服务器发送 ↑ ↓客户端发送←客户端
2006-08-21 21:02:00
5752
原创 C#的哈希
哈希算法是啥?哈希英文hash,是一种数学算法,它能把任意长度的值转换成固定长度的值,而且映射关系唯一并算法不可逆,理论上不拿到原值,是不可能得到对应的哈希值的,但是这都是历史了,中国科学院的王小云已经初步破解了基于哈希算法的MD5和SHA1算法,所以.NET库里面能够安全使用的估计只有SHA256Managed、SHA384Managed、SHA512Managed了,不过这些东西也只是基于SH
2006-08-21 21:01:00
1545
原创 .NET的编译保护与反编译
众所周知.NET编译到il中间语言,这就使得能看懂il中间语言的破解者,破解该软件,幸好VS2003提供了Dotfuscator用来混淆il代码,使得破解者很难反编译,具体原理就不说了,自己看帮助去吧。下面我们来试验:做一个.NET的exe程序,然后打开Dotfuscator,新建项目-〉触发器-〉浏览,选中这个exe生成选项卡-〉目标目录-〉浏览,选择一个目录来存放混乱后的exe-〉点击生成按钮
2006-08-21 21:00:00
1437
原创 .NET C# DES入门
DES加密应该是最基础的加密算法,为了搞清楚它在.NET C#里面的用法,我费了不少功夫,希望有心人能看到。DES一共就有4个参数参与运作:明文、密文、密钥、向量。为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量;明文=密文-密钥-向量。为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复,那么这个词加上密钥形成的密文,仍然会重复,这给破解者有机可乘,破解者可以根据重复的内
2006-08-21 20:59:00
2844
1
原创 string与byte[]之间的转换
在使用.NET加密类的时候,会经常用到string与byte[]之间的转换。首先引用System.Text命名空间,然后UnicodeEncoding unicode=new UnicodeEncoding();byte[] byteA; //byte[] -> stringbyteA=unicode.GetBytes(textBox1.Text); //strin
2006-08-21 20:58:00
2078
原创 数组如何作为方法的参数
数组作为方法的参数,一共有3种形式:1、public void Test(params int[] list){}最正宗的使用方法,也是最没用的使用方法。一旦使用params参数,此方法就不能再有其它参数了,并且只能有1个params参数。 2、public void Test(ref string[] strValueArr){}最常用的传址调用,使用此方
2006-08-21 20:57:00
1702
原创 C#三斜线的妙用
只要在方法名的上一行连续输入“///”,即可自动生成此方法的文档注释标记,把它填写完整,下次调用此方法的时候,就很方便了,如下所示:/// /// 写INI文件/// /// 文件名/// 文本行内容数组public void WriteINI(string strINIFileName, ref string[] strLineContentArr){ //获得行数 int
2006-08-21 20:56:00
4884
原创 如何感知“文件是否存在”?
首先要using System.IO;然后 FileInfo FI=new FileInfo("Config.ini");最后通过 FI.Exists.ToString(); 来判断是否存在,True是存在,False是不存在。
2006-08-21 20:54:00
1207
原创 如何用C#改文件名
文件处理,属于System.IO命名空间里面,一定要using一下。改名方法是File.Move(源文件名,目标文件名),可以包括路径。
2006-08-21 20:50:00
13401
原创 多线程只需要2行代码
System.Threading.Thread oThread=new System.Threading.Thread(new System.Threading.ThreadStart(MethodName));//定义要执行多线程的方法,注意,方法名没有参数oThread.Start();//包含该方法的线程启动 //注意,该线程如果完成操作,资源会由系统自动回收,你不用考虑
2006-08-21 20:48:00
1328
原创 最精简的委托示例
//最精简的委托示例delegate void dg1(string str1);private void button1_Click(object sender, EventArgs e){ dg1 dg2 = new dg1(Show); dg2("Successful");}private void Show(string strShow){ MessageBox.Sh
2006-08-21 20:19:00
1462
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人