[置顶]发布个人新软件《学生成绩输入宝v1》
posted @ 2006-06-19 11:16 顶好 阅读(423) 评论(2) 编辑
闲时研究些小程序,编编小软件,写点小心得,兴许对你有用,欢迎来坐坐。
置顶随笔 #
posted @ 2006-06-19 11:16 顶好 阅读(423) 评论(2) 编辑
2006年6月19日 #
软件名:学生成绩输入宝v1
推荐运行环境:Access 2003
作用:输入学生成绩、并导出excel表格。
特点:能快速定位学生,能通过拼音缩写定位学生。名单导入一次就可很方便地供全年级教师使用。
发布时间:2006.6.19
版本:v1.0
====================================顶好出品======================================
posted @ 2006-06-19 11:16 顶好 阅读(423) 评论(2) 编辑
2006年5月13日 #
.net对进程管理的封装非常好,通过System.Diagnostics.Process.GetProcesses()方法可以获得系统内各进程的数组,通过枚举可获得系统内的所有进程(比Windows自带的进程浏览器看到的还多)。
ProcessName属性获得的是文件名的前缀,即NotePad,不包含后面的.exe。
要获得更多的信息,需要取得Modules属性数组,但并不是每个进程都能获取Modules属性,所以必须要使用try..catch语句排除异常。该数组的第一个成员[ 0 ].FileName包含了执行程序的完整文件名,等同于ProcessModule;序号大于0的成员往往包含该程序调用的dll信息,得到的结果很有点像反木马程序。
Kill()方法用来杀进程,被杀的程序不会弹出类似保存文件的对话框,是个十足的冷血的快刀手。
StartInfo属性是用于启动新进程的,不适用于检索已运行的进程。
private void btnProcess_Click(object sender, System.EventArgs e)
{
System.Diagnostics.Process []myPs ;
myPs=System.Diagnostics.Process.GetProcesses();
this.richTextBox1.Clear();
foreach (System.Diagnostics.Process p in myPs)
{
if (p.Id!=0 )
{
string myS="进程名称"+p.ProcessName+" ID:"+p.Id.ToString();
try//由于进程不同,有的进程不包含Modules信息,所以要用try保护
{
if (p.Modules !=null)
if (p.Modules.Count>0)
{
System.Diagnostics.ProcessModule pm=p.Modules[0];
myS+="\n Modules[0].FileName:"+pm.FileName;
myS+="\n Modules[0].ModuleName:"+pm.ModuleName;
myS+="\n Modules[0].FileVersionInfo:\n"+pm.FileVersionInfo.ToString();
if (pm.FileName.ToLower()==this.textBox1.Text.Trim().ToLower())
p.Kill();
}
}
catch 
{}
finally
{
this.richTextBox1.Text += myS+"\n==========================\n";
}
}
}
程序的执行结果片段:
进程名称SearchNet ID:3092
Modules[0].FileName:C:\Program Files\SearchNet\SearchNet.exe
Modules[0].ModuleName:SearchNet.exe
Modules[0].FileVersionInfo:
File: C:\Program Files\SearchNet\SearchNet.exe
InternalName: SearchNet
OriginalFilename:
FileVersion: 1, 0, 2, 4
FileDescription: IE地址栏搜索程序
Product: 地址栏搜索
ProductVersion: 1, 0, 2, 4
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language 中文(中国)
==========================
进程名称svchost ID:1700
Modules[0].FileName:C:\WINDOWS\system32\svchost.exe
Modules[0].ModuleName:svchost.exe
Modules[0].FileVersionInfo:
File: C:\WINDOWS\system32\svchost.exe
InternalName: svchost.exe
OriginalFilename: svchost.exe
FileVersion: 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)
FileDescription: Generic Host Process for Win32 Services
Product: Microsoft® Windows® Operating System
ProductVersion: 5.1.2600.2180
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language 英语(美国)posted @ 2006-05-13 10:54 顶好 阅读(411) 评论(1) 编辑
2006年5月11日 #
FontStyle属于枚举类型,如果用文本来记录,可以调用其ToString()方法,结果类似“Bold, Italic, Underline”。
但如何把这个字符串转换回FontStyle呢?其实这就是字符类型转换成枚举类型的问题。
我发现了两个方法,与大家分享。
方法一:

/**////对于枚举类型FontStyle的从字符到枚举转换的赋值操作 方法一 EnumConverter.ConvertFrom
string myS="Bold,Italic,Underline";
System.ComponentModel.EnumConverter myC=new EnumConverter(typeof(System.Drawing.FontStyle)) ; //用FontStyle类型创建EnumConverter对象,注意typeof 转换为System.Type对象
System.Drawing.FontStyle myFS=(System.Drawing.FontStyle)myC.ConvertFromString(myS); // 转换[C#] 说明
public override object ConvertFrom(
ITypeDescriptorContext context, //类型
CultureInfo culture,
object value
);
将指定文本转换为对象。
[C#] public object ConvertFromString(string);
使用指定的上下文将给定的文本转换为对象。
public object ConvertFromString(ITypeDescriptorContext, string);
使用指定的上下文和区域性信息将给定的文本转换为对象。
[C#] public object ConvertFromString(ITypeDescriptorContext, CultureInfo, string);
方法二:
string myS="Bold,Underline";
System.Drawing.FontStyle myFS=(System.Drawing.FontStyle)Enum.Parse(typeof(System.Drawing.FontStyle),myS,false);
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
[C#] public static object Parse(Type, string);
将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。一个参数指定该操作是否区分大小写。
[C#] public static object Parse(Type, string, bool); bool表示是否区分大小写
posted @ 2006-05-11 21:08 顶好 阅读(800) 评论(4) 编辑
2004年10月22日 #
在论坛或留言板中选择表情的时候,用下拉列表是常用的方法,以下的代码演示了如何用c#实现。
HTML:
形象选择:<asp:dropdownlist id="PicList" onChange="document.images['face'].src=options[selectedIndex].value;"
<BR>
<IMG id="face" src="images\face\gg01.gif" runat="server">PicList在变化后执行的是客户端的javascript程序:将img的名字设为face,在js中必须用document.images['face']来引用,如果代码改成
<img id="face" name="face" src="images\face\gg01.gif">则可以用document.face来访问。
以下是C#代码,
if (!Page.IsPostBack)

{
this.PicList_Init();
}
private void PicList_Init()// FillPicList 填充图片列表框
{
this.PicList.Items.Clear();
string FileName,ImgDir;
System.IO.FileInfo Fi;
ImgDir="images\\face\\";
System.IO.DirectoryInfo Dir=new System.IO.DirectoryInfo(Server.MapPath("images\\face\\"));
foreach (System.IO.FileSystemInfo Fsi in Dir.GetFileSystemInfos())
{
if (Fsi is System.IO.FileInfo)
{
Fi=(System.IO.FileInfo) Fsi;
FileName = Fi.Name;
if (((Fi.Extension==".gif")||(Fi.Extension==".jpg"))&& (Fi.Name!="admin.gif"))
this.PicList.Items.Add(new ListItem(FileName, ImgDir+FileName));
}
this.PicList.SelectedIndex=0;
this.face.Src=this.PicList.SelectedValue;
} //end of foreach
}
第一次执行时,通过遍历image\face\文件夹下所有文件,将后缀名为.gif和.jpg的文件(除去管理员形象的admin.gif)加入PicList的列表。小菜菜们(我也是哦)要注意了,为了防止黑客,别忘了在接受返回数据的时候,服务器端也应该加入代码,谨防有人使用admin.gif将自己打扮成管理员模样,如:
try

{
.
if (this.PicList.SelectedValue.ToString().IndexOf("admin.gif")>-1)
throw (new System.Exception());
.
}posted @ 2004-10-22 23:45 顶好 阅读(1810) 评论(0) 编辑