※天道酬勤※

§水至清则无鱼,人至察则无徒§
posts - 65, comments - 11, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

A good begining is half done/Well begun is half done 良好的开始是成功的一半.

检测驱动器中是否有盘的最简单的方法是用_access()函数访问该驱动器,如果驱动器中没有盘或盘没有格式化,Windows就会显示错误信息.

我们可以避免Windows的错误信息显示,改用自己的程序来通知用户.避免Windows显示错误信息可以API函数SetErrorMode,使用参数SEM_FALLCRITICALERRORS,而使用函数GetLastError来获取错误代码.

_access()函数的申明如下:int _access(const char* path,int mode)
path是文件或驱动器名,mode是访问方式,有以下几种:
00 检测是否存在
02 写允许
04 读允许
06 读写允许

另:GetLogicalDrives()和GetDriveTyp()可以动态获取驱动器信息.
注意函数:SendDlgItemMesage();

posted @ 2006-07-27 20:50 五指魅力 阅读(117) | 评论 (0)编辑 收藏

Example is the best precept 榜样是最好的箴言

获取计算机名使用函数BOOL GetComputerName(LPTSTR lpBuffer,LPDWORD lpnSize),参数lpBuffer存放计算机名的缓冲区,参数lpnSize是lpBuffer所指向缓冲区的大小.调节成功就返回非零值.

获取Windows版本信息使用的是函数BOOL GetVersionEx(LPOSVERSIONINFO plVersionInfo), 参数plVersionInfo是一个指向OSVERSIONINFO结构指针,OSVERSIONINFO结构中存放着和Windows相关的版本信息,

获取处理器型号是用GetSystemInfo(LPSYSTEM_INFO lpSystmInfo),lpSystemInfo是一个指向SYSTEM_INFO结构的指针,SYSTEM_INFO中就存放着处理器的相关信息.

获取内存的信息调用的是函数GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer),同前两个函数类似,用到了一个MEMORYSTATUS结构.该结构分为几个字段:dwTotalPhys是总的物理内存;dwAvailPhys是可用的物理内存;dwMemoryLoad是使用的物理内存占总物理内存的百分比;dwTotalVirtual是总的虚拟内存; dwAvailVirtual是可用的虚拟内存,此函数不返回值.

posted @ 2006-07-27 20:48 五指魅力 阅读(131) | 评论 (0)编辑 收藏

Two heads are better than one 三个臭皮匠,胜过一个诸葛亮

1:在菜单项里增加两个选项,ID为IDM_CHANGEICON1和IDM_CHANGEICON2
2:添加图标和光标资源,在资源管理器中添加两个图标资源和两个光标资源.
3:添加成员变量:为类CmainFrame添加两个成员变量
  HICON hIcon1 private
 HICON hIcon2 private
 CchangeCurIconView添加两个成员变量
  HCURSOR hCursor1 private
 HCURSOR hCursor2 private
4:为菜单项添加消息映射
5:代码为:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
 if(!CFrameWnd::PreCreateWindow(cs))
 return FALSE;
 cs.cx=300;
 cs.cy=300;
 return TRUE;
}

void CMainFrame::OnChangeicon1()
{
 hIcon1=AfxGetApp()->LoadIcon(IDI_ICON1);
 SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
}

void CMainFrame::OnChangeicon2()
{
 hIcon2=AfxGetApp()->LoadIcon(IDI_ICON2);
 SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)hIcon2);
}

void CChangeCurIcoView::OnMouseMove(UINT nFlags,CPoint point)
{
 if(point.x<=150)
 {
 hCursor1=AfxGetApp()->LoadCursor(IDC_CURSOR);
 ::SetCursor(hCursor1);
 }
 if(point.x>150)
 {
 hCursor2=AfxGetApp()->LoadCursor(IDC_CURSOR2);
 ::SetCursor(hCursor2);
 }
}

posted @ 2006-07-27 20:42 五指魅力 阅读(88) | 评论 (0)编辑 收藏

Asp.net在System.Web.Mail名称空间中有一个发送email的内建类,但这仅是cdosys的一个假象。开发者能使用一个替代的它smtp邮件服务。在这篇文章里面,我将会展示如何创建一个用于asp.net的功能齐全的smtp邮件服务。

  首先,我们创建一个继承命名空间System.Net.Sockets的TcpClient类的类。TcpClient类提供简单的方法用于连接,发送,接收网络的数据流。GetStream方法用于创建一个网络流(NetworkStream)。读和写网络流(NetworkStream)的方法用于发送数据给远程主机和从远程主机接收网络流。

public class ClientConnection : TcpClient
{
private NetworkStream _NetworkStream = null;
private StreamReader _StreamReader = null;
private StreamWriter _StreamWriter = null;
public void Initialise()
{
_NetworkStream = this.GetStream();
_StreamReader = new StreamReader(_NetworkStream,
System.Text.Encoding.Default, false, this.ReceiveBufferSize);
_StreamWriter = new StreamWriter(_NetworkStream,
System.Text.Encoding.Default, this.SendBufferSize);
}
public void Send(string s)
{
_StreamWriter.WriteLine(s);
_StreamWriter.Flush();
}
public string Read()
{
return _StreamReader.ReadLine();
}
}
   接下来,我们创建发送邮件出去的类,这个类有几个属性去设置关于被发送的邮件的一些信息。

public string MailServer = "127.0.0.1" ;
public string From = "" ;
public string To = "" ;
public string Body = "" ;
public string Subject = "" ;

  和一个发送邮件的方法。这个方法将会用服务器名和它的端口去创建一个连接。指令可以被发送到远程主机。

public void Send()
{
tcp = new ClientConnection();
tcp.Connect(MailServer,25);
tcp.Initialise();
SendCommandToServer("HELO " + System.Net.Dns.GetHostName());
SendCommandToServer("MAIL FROM: " + From + "\r\n");
SendCommandToServer("RCPT TO: " + To + "\r\n");
string StrHeaders = "";
StrHeaders += "From: " + From + "\r\n";
StrHeaders += "To: " + To + "\r\n";
StrHeaders += "Subject: " + Subject + "\r\n";
StrHeaders += "Content-type: text/plain; charset=\"ISO-8859-1\"" + "\r\n";
SendCommandToServer("DATA\r\n" + StrHeaders);
SendCommandToServer(Body + "\r\n.\r\n");
SendCommandToServer("QUIT\r\n");
}

  还有一个私有的送一个指令到本地服务器的方法。

private void SendCommandToServer(string cmd)
{
tcp.Send(cmd);
Response=tcp.Read();
System.Web.HttpContext.Current.Trace.Warn("Response",Response);
}

  现在,这个类基本完成了。开发者还可以建立错误回执和释放资源(用TcpClient类中的Close()方法)。同样,这几个属性可以被扩展到在邮件中包含更多的信息。

  最后,我们可以在aspx文件中写一些发送邮件的代码。在这个例子中,"localhost"是邮件服务器。你可以根据情况改变这个,或者可以看我的关于如何设置你的发送邮件的本地服务器的文章。

<%@ Import Namespace="MyComponents" %>
<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
if (IsPostBack)
{
Mail Mailer=new Mail();
Mailer.From=From.Text;
Mailer.To=To.Text;
Mailer.Subject=Subject.Text;
Mailer.Body=Body.Text;
Mailer.MailServer="localhost";
Mailer.Send();
}
}
</script>
   下面是完整的代码。

using System.IO;
using System.Net.Sockets;
namespace MyComponents
{
public class ClientConnection : TcpClient
{
private NetworkStream _NetworkStream = null;
private StreamReader _StreamReader = null;
private StreamWriter _StreamWriter = null;
public void Initialise()
{
_NetworkStream = this.GetStream();
_StreamReader = new StreamReader(_NetworkStream,
System.Text.Encoding.Default, false, this.ReceiveBufferSize);
_StreamWriter = new StreamWriter(_NetworkStream,
System.Text.Encoding.Default, this.SendBufferSize);
}
public void Send(string s)
{
_StreamWriter.WriteLine(s);
_StreamWriter.Flush();
}
public string Read()
{
return _StreamReader.ReadLine();
}
}
public class Mail
{
public string MailServer = "127.0.0.1" ;
public string From = "" ;
public string To = "" ;
public string Body = "" ;
public string Subject = "" ;
private ClientConnection tcp=null;
private string Response="";
public void Send()
{
tcp = new ClientConnection();
tcp.Connect(MailServer,25);
tcp.Initialise();
SendCommandToServer("HELO " + System.Net.Dns.GetHostName());
SendCommandToServer("MAIL FROM: " + From + "\r\n");
SendCommandToServer("RCPT TO: " + To + "\r\n");
string StrHeaders = "";
StrHeaders += "From: " + From + "\r\n";
StrHeaders += "To: " + To + "\r\n";
StrHeaders += "Subject: " + Subject + "\r\n";
StrHeaders += "Content-type: text/plain; charset=\"ISO-8859-1\"" + "\r\n";
SendCommandToServer("DATA\r\n" + StrHeaders);
SendCommandToServer(Body + "\r\n.\r\n");
SendCommandToServer("QUIT\r\n");
}
private void SendCommandToServer(string cmd)
{
tcp.Send(cmd);
Response=tcp.Read();
System.Web.HttpContext.Current.Trace.Warn("Response",Response);
}
}
}

posted @ 2006-07-26 18:14 五指魅力 阅读(102) | 评论 (0)编辑 收藏

     摘要: 摘要 :本教程阐释 ASP.NET 2.0 版中窗体身份验证的工作机制;阐释 IIS 和 ASP.NET 身份验证如何协作,以及 FormsAuthenticationModule 类的角色与操作。  本页内容 ...  阅读全文

posted @ 2006-07-26 17:54 五指魅力 阅读(544) | 评论 (1)编辑 收藏

仅列出标题
共7页: 1 2 3 4 5 6 7