心有多大,舞台就有多大!
存档 Archives : 二月, 2008

“.china”两大先天不足致其“胎死腹中”

<Category: 非常网摘> 发表评论

近日,互联网上一则关于中国十进制网络地址启用的消息引起争议,被指为闹剧,闹得沸沸扬扬。与十进制网络相关的机构更宣称,目前正在开发以 “.china”结尾的域名,用来分配给国内网站。对此,网民和业内人士纷纷质疑 ,并指出“.china”并非域名,且存在两大先天不足:在法律上既未获得信息产业部立法认可,技术上又与全球网络不兼容,违背互联网互联互通的基本精 神。而这两点恰恰是域名的两大必备条件。更有人士声称,这两大先天不足是其死穴,必导致“.china”胎死腹中,成为一场事先张扬的闹剧。

专家指出,所谓的“十进制”“.china”在技术上来说是荒谬的。互联网经过十多年飞速发展,能有今天的繁荣,与互联网“全球互联互通”的域名体系密不可分。一个顶级域要能用起来,必须到互联网根服务器进行登记,才能解析并融入现行的互联网体系,而国家与地区的顶级域早就根据ISO3106中各国的英文简称制定并获得全球认可。从目前“.china”的披露的信息看,使用“.china”域名的用户只能在一个封闭式的局域网里被访问,对于全球网民来说就是一个自我封闭的信息孤岛。“在全球化的今天,这种做法显然是一种历史倒退”,有网民评价说,“这样的伪域名谁会去用?”。

另据域名专家介绍,目前我国域名领域由信息产业部管理,按照目前最权威的两个法规,即2004年施行的《中国互联网络域名管理办法》和2006年《中华人民共和国信息产业部关于中国互联网络域名体系的公告》规定,我国互联网络域名体系至今为止只有:顶级域名.CN以及“中国”、“公司”和“”三个中文顶级域名。这些域名构成了我国互联网络域名体系,除此之外,任何以“中国”命名的域名都是不合法的域名。专家指出,由于“.china”域名不符合我国信息产业部的相关法规,扰乱国内域名体系,一旦正式推出就会被主管部门叫停。

与此同时,作为“.china”研发机构的身份已被多方质疑。据媒体和域名专家沈阳调查披露,公开宣传中的“中国十进制网络安全管理局”,并不在中央机构编制委员会所列出的国家机关和事业单位编制名单中。在信息产业部官方网站列出的机构设置栏目上,同样找不到这个管理局,并且信产部官方网站上也没有任何关于十进制网络投入使用的消息。分析人士认为,在运营机构自身的合法身份都备受质疑的情势下,“.china”域名推出背后的故事耐人寻味。

本文来自: “.china”两大先天不足致其“胎死腹中”

300座城市4个月内开建3G网

<Category: IT新闻记事> 发表评论

今年奥运会期间提供3G服务,信产部的这一承诺正在逐步实现.未来4个月内,TD-SCDMA(国产3G,以下简称“TD”)试验网络,有望从现有的十大城市扩展到其他300座城市.
记者昨日获悉,自去年9月秦皇岛试验网建设完成后,TD二期建网就已进入酝酿阶段,而具体计划最早将于今年3月底或4月初出台.按照程序,TD网络二期规划先由国家发改委和信产部协商确定总体规划即建网总规模,然后与运营商协商确定各自承建哪些城市的网络.

此前,主管部门一直在大力推进国产3G标准的产业化进程,但从目前的情况来看,最新电信重组方案随时可能出台.有分析人士指出,在这样一个关键敏感时期,为避免给将来没有TD牌照的运营商造成不必要的浪费,应先确定电信重组方案,再确定TD网络二期建设方案,但今年上半年开始TD二期网络建设应该没有问题.

  作为国产3G试验网建设的生力军,中国移动去年3月启动一期设备招标,共有10家厂商参与竞标,本土厂商中兴通讯和大唐移动成为了最大的赢家.按照中兴通讯的公告,该公司共向中国移动提供了总金额约23.7亿元的产品及工程服务,其中产品销售合同金额约占该类合同总额的90%.

  知情人士昨天透露,中兴通讯、大唐移动、中国普天和鼎桥四大厂商,已开始备战即将展开的TD网络设备二期招标.据悉,一期招标中已证明实力的大唐移动,将继续与“大唐系”中的新邮通、上海贝尔阿尔卡特和烽火通信合作,在二期招标中联合竞标.

  虽然TD服务尚未正式推出,但中国移动已在北京、上海等主要城市设置相关体验厅,用户可前往感受国产3G带来的新业务体验,此举也被业界视为TD即将实现商用的信号.

《北京商报》消息

本文来自: 300座城市4个月内开建3G网

Nlite后期处理技术小结

<Category: 技术回收站> 发表评论

用了一段时间的Nlite,同时也在网上收集了不少的经验,在自己做出最适合自己或帮人装机的XP后,也不想保留后期处理技术了,留给后来的Nlite使用者,免得走弯路,研究后期的大多都保留自己的技术吧,偶觉得没有意思,想想吧,如果以前雨浪不公布他的经典方法,现在不知道多少人还在走弯路。以后没有必要再研究这个东西了,偶还要集中精力研究平面三维和程序。

下面的文章部分引自雨浪,Tingpu,lyz0508等一些网友的发表的技术,特此感谢。如有技术上的错误,也许偶也没有研究到,请跟帖斧正。

Nlite精简后期处理总结:

Nlite使用当然不想多说了,网上教程很多,自己挑自己需要的Windows组件吧。
唯一想说的是:在勾选去除组件时,多看看组件说明,如移除Outlook,将会失去什么功能?

一、Nlite完成后,将I386文件夹中Win9xmig、Win9xupg、Drw目录删除掉,可以节约大量的空间。

二、实现Windows,Dos,光盘安装三种安装方式

要使你的XP能在Windows下安装,也就是调用Winnt32.exe不出错,需要保留Compdata目录下的Drvmain.inf,和Ntcompat.inf两个文件,以及Winntupg目录下的Netmap.inf和Netupgrd.dll两个文件即可,这个方法大概是Deepin找到的,或许是某个老外的方法也不一定。当然前题是精简时不能移除DOS安装。这样你的Windows XP也可以实现Windows,Dos,光盘安装三种安装方式。另外更激进点的作法是把这三个INF里除了小节名,键值全删光的作法,又节省了一点空间。

三、进一步压缩i386目录下的部分文件,如下表:

ntprint.cat
ntprint.inf
regedit.exe
dbghelp.dll
exts.dll
imagehlp.dll
dbgeng.dll
intl.inf (这个文件居然也可以压缩,而且都不用修改Txtsetup,真是太好了!)

提示:用Cabarc.exe(XP光盘support\tools目录下的Support.cab中)以21最大压缩可以得到最好的效果,偶认为可以集成进自己的XP中,因为一般大家精简时都删除了Support目录的,这个是MS的免费DD,怎能不要?有时间,偶会写个它的外壳程序,方便大家调用。另题外话一下,一直没有发现这个工具,以前一直以为是Winrar压缩率最高,结果有时候发现CAB居然比Winrar还厉害,该不是MS的秘密超强压缩算法吧?

给一个命令行格式吧:cabarc -m LZX:21 n %1 %2
存为cab.bat
调用示例:压缩上面表中第一个文件,当然,其它文件也可以如此压缩
cab ntprint.ca_ x:\winxp\i386\ntprint.cat x:为你光盘的位置

下面两个文件用Upx进行压缩

winnt32u.dll
winntbbu.dll

不要忘了把未压缩的文件删除掉,又节约了好多的空间呀!^_^

四、处理输入法(以保留了全拼,智能ABC为例)前题是在Nlite移除框中删除了输入法相关文件。

打开Hivesys.inf,查找Addreg,直到定位到最后一个,用分号注释掉或是删掉如下行:
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0020804","Layout File",0×00000000,"kbdus.dll"
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0020804","Layout Text",0×00000000,"%KLT_74%"
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0020804","IME File",0×00000000,"winsp.ime"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0030804","Layout File",0×00000000,"kbdus.dll"
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0030804","Layout Text",0×00000000,"%KLT_75%"
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0030804","IME File",0×00000000,"winzm.ime"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E00E0804","Layout File",0×00000000,"kbdus.dll"
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E00E0804","Layout Text",0×00000000,"%KLT_91%"
;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E00E0804","IME File",0×00000000,"pintlgnt.ime"

规律为每三行代表一个输入法,第一个三行是双拼,第二个三行是郑码,第三个三行是微软拼音,也就是在原输入法设置中点添加时看到的,注释掉后这里就不会出现了,现在只剩下内码和全拼

打开Hivedef.inf,查找Preload,这里将会看到几个,从字面上可以这么理解,就是预加载相应的输入法,也就是左点输入法看到的可以切换的输入法,这里我们将全拼设为不加载,将其置入添加输入法选项。用分号注释除下面两行外的Preload
HKCU,"Keyboard Layout\Preload","1",0×00000002,"00000804"(美国中文键盘)
HKCU,"Keyboard Layout\Preload","2",0×00000002,"E0040804"(智能ABC)

同时更改加载顺序为上面所示,HKCU,"Keyboard Layout\Preload","1"《————这个就是加载顺序
顺便注释掉Intl.inf里的Simsun.ttc,,,,,65535这行,我发现不注释这里,在家里安装正常,在单位的机器里会出现字体缺失现象。

五、处理声音
前提是Nlite移除开机声,但保留xperror.wav、xphdrem.wav、xphdinst.wav、xpstartu.wav、xpshutdn.wav五个常用声音

打开Hivedef.inf,定位到文件未尾,添加如下行:

WINDOWS_XP_STARTUP="Windows XP 启动.wav"
WINDOWS_XP_SHUTDOWN="Windows XP 关机.wav"
WINDOWS_XP_HARDWARE_Insert="Windows XP 硬件插入.wav"
WINDOWS_XP_HARDWARE_REMOVE="Windows XP 硬件删除.wav"
WINDOWS_XP_ERROR="Windows XP 错误.wav"

定位到文件开头有HKCU,"AppEvents\Schemes\Apps",,0×00000012这里的,将下面的行覆盖到相对应的声音默认项,因为Nlite过后后面的值全为空,所以进XP没声音了。

HKCU,"AppEvents\Schemes\Apps\.Default\DeviceConnect\.Current","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_Insert%"
HKCU,"AppEvents\Schemes\Apps\.Default\DeviceConnect\.Default","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_Insert%"

HKCU,"AppEvents\Schemes\Apps\.Default\DeviceDisconnect\.Current","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_REMOVE%"
HKCU,"AppEvents\Schemes\Apps\.Default\DeviceDisconnect\.Default","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_REMOVE%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_ERROR%"
HKCU,"AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Default","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_ERROR%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemExit\.Current","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_SHUTDOWN%"
HKCU,"AppEvents\Schemes\Apps\.Default\SystemExit\.Default","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_SHUTDOWN%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemStart\.Current","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_STARTUP%"
HKCU,"AppEvents\Schemes\Apps\.Default\SystemStart\.Default","",0×00020000,"%SystemRoot%\media\%WINDOWS_XP_STARTUP%"

聪明的你一定会留意到上面的DeviceConnect,DeviceDisconnect,SystemExit等关键字样,没错,中文意思就是硬件连接,断开,系统退出,系统启动等意思。

六、处理搜索助手(引用雨浪的)

一般人是直接在Nlite中移除搜索助手这个组件,但是我不推荐这样做,因为移除掉搜索助手后,在安装完成的系统中搜索的高级选项是不能保存的,需要你每次手动打开高级选项,否则搜索不到你要找的文件。这个问题以前很多朋友给我提过,经过多次测试之后,总 算找到一个算是完美的解决方法。保留搜索助手,只要删msgr3en.dll、nls302en.lex、courtney.acs、earl.acs、rover.acs这五个文件即可。这五个文件占用近5M空间,而整个搜索助手不过占用近6M空间而已 。 这个工作可以交给Nlite来做,也可以后期手动来删除,并修改DOSNET.INF和TXTSETUP.SIF。这里推荐由Nlite来做,因为可以减少手工修改DOSNET.INF和TXTSETUP.SIF的工作。只需要在Nlite的删除额外文件 框中分行输入这几个文件名。
删除这五个文件后,在安装过程中(安装组件时)会提示缺少文件,我们还需要修"srchasst.in_"文件来避免这个问题。解压srchasst.in_,得到srchasst.inf,分别删"msgr3en.dll,,,32"、"nls30 2en.lex,,,32"、"courtney.acs,,,32"、"earl.acs,,,32"、"rover.acs,,,32"这几行,或者用封号屏蔽它们。保存后再压缩回去,替换原文件即可。

偶再加两句吧,一般我是不会移去代理助手这个的,也就是那个叫Meilin.acs的文件,因为在进行Agent编程练习时要用到这个文件。上面所说的三个Acs文件去掉后,梅林先生会出现在你的搜索中,如果你去了它后,系统里点启动动画助手后,就回不到上个菜单了。可以保留这个文件,再用Office XP中有个很小的Acs文件对它进行替换,只有900多KB的,高兴了你还可以用瑞星的,金山的助手来替换。

七、处理桌面Luna主题,更改Administartor用户名,加强安全(引用Tingpu的)

早在二月时,研究集成Rolaye主题时发现的,也就是这里Bida后来发的一篇关于Luna主题修改的帖子的方法。雨浪在说明这个问题时好象是写漏了一点,在下面第八点所说的小节中,有Wallpaper.MUI=@themeui.dll,-2036这么一行字得注释掉,你才看得到兰天白云。当时我集成Rolaye主题是可以正确显示,Luna主题却不能,于是对比了一下两个主题的文件,发现Rolaye没有这行,于是注释掉Luna里的后,实验正常显示。

为了不让别人找到我们系统里的Administartor账号,进行Hacker行为,有必要修改这个系统默认账号,同理,Guest也可以改名的,参见Tingpu的原文,解压Defltwk.in_,打开Defltwk.inf
找到[System Access]小节,添加
NewAdministratorName = "Jasmine",这里Jamsine就是你第一次登录XP的管理员账号。
NewGuestName = "XXXX" 添加后可以更改Guest账号
改完后压缩,替换原文件。

八、手动添加Rolay主题并指定加载Rolay主题

偶下载得到的Rolay文件也许不全吧,有四个文件,这里当个示例。
首先将四个文件中带长文件名的改成8.3Dos标准的文件并压缩了放I386目录里,否则Dos安装时会不认的。
Royale.msstyles改成royale.mst
shellstyle.dll改成royaless.dll
Royale.theme改成Royale.the
再将Royale.bmp用Acdsee改成JPG格式的Royale.jpg,谁叫Jpg的省空间呢?嘿嘿

打开Royale.the,定位到[Control Panel\Desktop]小节,把Wallpaper=%WinDir%Resources\Themes\Royale\royale.bmp改成对应的JPG
当然,这里你还可以改成自己喜爱的桌面。

打开TXTSETUP.sif,用十五的方法,跳到自己的标示后面,添加如下行

royale.jpg = 1,,,,,,,306,0,0
royale.mst = 1,,,,,,,306,0,0,Royale.msstyles
royaless.dll = 1,,,,,,,307,0,0,shellstyle.dll
royale.the = 1,,,,,,,129,0,0,Royale.theme

然后定位到开头的[WinntDirectories]小节,在最后添加如下两行

306 = Resources\Themes\Royale
307 = Resources\Themes\Royale\Shell\NormalColor

然后打开Winnt.sif添加如下小节和键值以加载Rolay主题,改成luna.theme想必你也知道什么意思了吧?随意切换吧。
[Shell]
CustomDefaultThemeFile = "%WinDir%\Resources\Themes\Royale.theme"

哪天你不想集成这个主题了,把上面的修改一去掉,删除相应的文件就成了,免去了用集成包集成容易,去掉难的问题。
当然,你愿意用集成包偶也没有任何意见,青菜罗卜各有所爱嘛。

九、手动添加自己的驱动
暂时没有找到指定光驱路径的方法。不过偶想可以通过编程,读取HKLM\Software\Microsoft\Windows Nt键值Sourcepath得到原安装路径,
再通过Advanceinf install过程调用安装驱动也许是个完美的解决办法,XP的安装程序不用说,它当然是知道你从哪里安装XP的。
为什么不用Nlite集成?主要考虑以后驱动的升级,为了驱动升级,我们还得安装installer 3,.net 2,Nlite,拷贝XP原盘,运行Nlite重新
集成新驱动。。。这样的步子,时间慢长,还得保存当时的Lite配置。晕~

当自己Diy的时候,总是希望集成自己主板的,显卡的,声卡的驱动,免得安装时到处翻驱动盘,偶可不希望用别人集成了自己用不上的驱动的光盘,偶还想留点空间集成自己喜欢的软件呢,如果你有这样的想法话,OK,跟我来,手动集成自己的驱动,不过需要你有一点读懂Inf的基本知识,这点都做不到的话,我想你还是用Nlite集成算了。

以偶的Intel 945主板和Ati X550显卡为例,首先分析,打开Intel的主板驱动说明,看了一下,E文的,哦,原来如此,既带了95,98的驱动,又有2000,XP的驱动,不仅如此,还有其它Intel芯片的驱动,呵呵,既如此,我们安装的是XP呀,干嘛还要95,98的驱动?Ati X500的经过
分析后也是如此,看来现在的驱动程序基本都是做成一体化了,不象以前的Nvidia的还要分2000的,XP的,现在不管你哪个操作系统,都可以安装的。好,思路清楚了,驱动也要精简!问题是如何取得这些驱动?方法当然是有的,用驱动精灵,优化大师,可提取出来的驱动好象都是什么Oem02.inf之类的,某些软件还提取不到CAT文件,我可不想我的驱动安装后显示没有经过WHQL硬件测试的。反复实验后,我发现在安装主板驱动时,系统中的临时文件夹中有解开的驱动文件,再分析已安装好的驱动,我找到了如下10个文件和我的主板驱动相关,压缩后共才31KB,原文件是788KB,呵呵~~
945.cat
945.inf
dmi_pci.cat Dmi_pci相关的
dmi_pci.inf
ich7core.cat ICH7南桥相关的
ich7core.inf
ich7ide.cat ICH7南桥IDE相关的
ich7ide.inf
ich7usb.cat ICH7南桥USB相关
ich7usb.inf

Ati X550的驱动解开到是好,安装程序会帮你解开驱动的,目录下那个CX_30152.inf就是对应的XP的驱动,另一个是2000的。打开分析,呵呵,看了半天,前面部分基本没有什么,好容易分析到最后几个小段了,一眼看到[SourceDisksFiles]小节,呵呵,正是自己想要的呀,找到了!
[SourceDisksFiles]
ati2cqag.dll=1
ati2dvag.dll=1
ati2edxx.dll=1
ati2erec.dll=1
ati2evxx.dll=1
ati2evxx.exe=1
ati2mdxx.exe=1
ati2mtag.sys=1
ati3duag.dll=1
atiddc.dll=1
atidemgr.dll=1
atifglpf.xml=1
atiicdxx.dat=1
atiiiexx.dll=1
atikvmag.dll=1
atioglx1.dll=1
atioglxx.dll=1
atipdlxx.dll=1
atitvo32.dll=1
ativcaxx.cpa=1
ativcaxx.vp=1
ativckxx.vp=1
ativcoxx.dll=1
ativvaxx.dll=1
ativvpxx.vp=1
oemdspif.dll=1

一共是26个文件,将相应的文件拷到另一个目录下,再将CX_30152.inf,CX_30152.Cat一起拷过来,压缩,呵呵,得到了7.01MB的驱动文件,
而原驱动文件是11.7MB大,哈~真是爽呀。。

在Lang目录下建立Intel和Ati两个目录,分别把各自的文件拷到这两个目录下。
同理,打开Txtsetup.sif,在[SourceDisksNames.x86]小节后添加两个源路径
20 = %cdname%,%cdtagfilei%,,\i386\lang\ati
21 = %cdname%,%cdtagfilei%,,\i386\lang\intel

在[WinntDirectories]小节后面添加
308 = Temp\B_30397

跳到标志符后(这里多次使用标志符,你终于明白为什么要这么做了吧?)添加

;here is my added (意思是从这里开始是偶自己添加的)
ati2cqag.dll = 20,,,,,,,308,0,0
ati2dvag.dll = 20,,,,,,,308,0,0
ati2edxx.dll = 20,,,,,,,308,0,0
ati2erec.dll = 20,,,,,,,308,0,0
ati2evxx.dll = 20,,,,,,,308,0,0
ati2evxx.exe = 20,,,,,,,308,0,0
ati2mdxx.exe = 20,,,,,,,308,0,0
ati2mtag.sys = 20,,,,,,,308,0,0
ati3duag.dll = 20,,,,,,,308,0,0
atiddc.dll = 20,,,,,,,308,0,0
atidemgr.dll = 20,,,,,,,308,0,0
atifglpf.xml = 20,,,,,,,308,0,0
atiicdxx.dat = 20,,,,,,,308,0,0
atiiiexx.dll = 20,,,,,,,308,0,0
atikvmag.dll = 20,,,,,,,308,0,0
atioglx1.dll = 20,,,,,,,308,0,0
atioglxx.dll = 20,,,,,,,308,0,0
atipdlxx.dll = 20,,,,,,,308,0,0
atitvo32.dll = 20,,,,,,,308,0,0
ativcaxx.cpa = 20,,,,,,,308,0,0
ativcaxx.vp = 20,,,,,,,308,0,0
ativckxx.vp = 20,,,,,,,308,0,0
ativcoxx.dll = 20,,,,,,,308,0,0
ativvaxx.dll = 20,,,,,,,308,0,0
ativvpxx.vp = 20,,,,,,,308,0,0
oemdspif.dll = 20,,,,,,,308,0,0
cx_30152.inf = 20,,,,,,,45,0,0
cx_30152.cat = 20,,,,,,,45,0,0
《—–空行分开,使我以后一看也知道上面是显卡的,下面是主板的驱动
dmi_pci.inf = 21,,,,,,,45,0,0
945.inf = 21,,,,,,,45,0,0
ich7core.inf= 21,,,,,,,45,0,0
ich7ide.inf = 21,,,,,,,45,0,0
ich7usb.inf = 21,,,,,,,45,0,0
dmi_pci.cat = 21,,,,,,,45,0,0
945.cat = 21,,,,,,,45,0,0
ich7core.cat= 21,,,,,,,45,0,0
ich7ide.cat = 21,,,,,,,45,0,0
ich7usb.cat = 21,,,,,,,45,0,0
;[drv of end]

打开Hivesft.sif,查找DevicePath。找到后改为下面的
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","DevicePath",0×00020002,"%systemRoot%\Temp;%SystemRoot%\inf"

至此驱动已集成进去了,不用修改Dosnet.inf,当然,你还可以用十一的方法在进系统后进行最后的处理,删除Temp中的临时文件。
在进行安装的过程中,你可以留意到在Gui图型安装过程的T35到T34分钟左右(就是我们看到的安装还剩多少分钟数),屏幕会闪两下,意味着什么呢?安装程序找到了我的新驱动并自动安装上去了,驱动集成成功了!安装完后,打开设备管理器看看,是不是主板和显卡驱动都上去了呢?再看驱动程序文件详细信息,显示数字签名程序,呵呵,也就是偶为什么要找CAT驱动原文件的原因。

集成驱动的第二种方法是修改Syssetup.inf,偶实验也是成功的。不过只能集成没有子目录的驱动,象Ati的那个带子目录的就没法了。
集成驱动的第三种方法应该就是将自己的驱动集成到Drivers.cab和Sp2.cab包里,这是终级的最好办法,有兴趣的研究一下吧。

十、手动添加桌面壁纸,用户头像,屏保,更新Flash插件
如果你不喜欢XP里自带的那些壁纸,用户头像、屏保,人家集成的壁纸,头像,屏保可能不是你最喜欢的,自己动手来DIY吧,我的东西为什么要和别人的一样??所谓个性化的东西就是这个吧,OK,让我们来把他们替换掉,添加新的壁纸和屏保。

壁纸一般采用Jpg的格式,如果不是,最好用图像软件来转换一下,省点空间,壁纸在Winxp中放在WINDOWS\Web\Wallpaper目录下的,照例,查看Txtsetup.sif中[WinntDirectories]中的定义,第一行的1981 = Web\Wallpaper这个就是我们想要的,只要按照添加文件的方法添加如xpdsk001.jpg = 1,,,,,,,1981,0,0的格式就成了,放I386中时不要忘了在Dosnet.inf中添加d1,xpdsk001.jpg一行,同时为了方便文件名也使用8.3格式的,照例用二的方法进行压缩,如果是放在Lang目录中,就不用修改Dosnet.inf了。屏保是放在System32中的,集成方法一样,不重复了。

用户头像是放在Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\Default Pictures中的,
一般可以采用替换法,头像是48*48的24位BMP格式的真彩图像,一共是23张,大家可以找找QQ的图像,也可以找点好看的图像,缩放成这种格式的。为了方便,偶做好了23张头像,放在一个目录中,同时编了个批处理如下:
copy face01.bm_ c:\winxp_vol\i386\airplane.bm_
copy face02.bm_ c:\winxp_vol\i386\astro.bm_
copy face03.bm_ c:\winxp_vol\i386\soccer.bm_
copy face04.bm_ c:\winxp_vol\i386\butterfl.bm_
copy face05.bm_ c:\winxp_vol\i386\cat.bm_
copy face06.bm_ c:\winxp_vol\i386\fish.bm_
copy face07.bm_ c:\winxp_vol\i386\pnkflowr.bm_
copy face08.bm_ c:\winxp_vol\i386\guitar.bm_
copy face09.bm_ c:\winxp_vol\i386\snwflake.bm_
copy face10.bm_ c:\winxp_vol\i386\beach.bm_
copy face11.bm_ c:\winxp_vol\i386\car.bm_
copy face12.bm_ c:\winxp_vol\i386\chess.bm_
copy face13.bm_ c:\winxp_vol\i386\dirtbike.bm_
copy face14.bm_ c:\winxp_vol\i386\dog.bm_
copy face15.bm_ c:\winxp_vol\i386\drip.bm_
copy face16.bm_ c:\winxp_vol\i386\duck.bm_
copy face17.bm_ c:\winxp_vol\i386\frog.bm_
copy face18.bm_ c:\winxp_vol\i386\horses.bm_
copy face19.bm_ c:\winxp_vol\i386\kick.bm_
copy face20.bm_ c:\winxp_vol\i386\liftoff.bm_
copy face21.bm_ c:\winxp_vol\i386\palmtree.bm_
copy face22.bm_ c:\winxp_vol\i386\redflowr.bm_
copy face23.bm_ c:\winxp_vol\i386\skater.bm_

这种方法不用费多少精力,而且也不用修改Txtsetup.sif,大概好象听说有些作品光盘就是采用的这种方法。

第二种方法就是修改SHL_IMG.inf,不过同时也要修改Txtsetup.sif,有点复杂,不过可以控制拷贝多少个头像。
[SHGINA.CopyFiles]
"%XP_FACE01%",face01.bmp
"%XP_FACE02%",face02.bmp
"%XP_FACE03%",face03.bmp
"%XP_FACE04%",face04.bmp
"%XP_FACE05%",face05.bmp
"%XP_FACE06%",face06.bmp
"%XP_FACE07%",face07.bmp
"%XP_FACE08%",face08.bmp
"%XP_FACE09%",face09.bmp
"%XP_FACE10%",face10.bmp
"%XP_FACE11%",face11.bmp
"%XP_FACE12%",face12.bmp
"%XP_FACE13%",face13.bmp
"%XP_FACE14%",face14.bmp
"%XP_FACE15%",face15.bmp

[Strings]
XP_FACE01 = "face001.bmp"
XP_FACE02 = "face002.bmp"
XP_FACE03 = "face003.bmp"
XP_FACE04 = "face004.bmp"
XP_FACE05 = "face005.bmp"
XP_FACE06 = "face006.bmp"
XP_FACE07 = "face007.bmp"
XP_FACE08 = "face008.bmp"
XP_FACE09 = "face009.bmp"
XP_FACE10 = "face010.bmp"
XP_FACE11 = "face011.bmp"
XP_FACE12 = "face012.bmp"
XP_FACE13 = "face013.bmp"
XP_FACE14 = "face014.bmp"
XP_FACE15 = "face015.bmp"

而且千万不要输错了,否则可能引起安装出错。

更新Flash插件方法类似,采用替换法,系统自带的是6.X的,现在都9.X版本了,高兴了还可以修改一下swFlash.inf这个文件,不修改也没有什么,反正这个插件随着Flash软件的更新,年年都在更新的。

十一、自动以比较专业的型式安装Winrar,极点五笔,Windows media play 10的方法

注意到V5版开始后Deepin的光盘在安装XP后第一次进系统时左上角有个安装进程处理框的提示么?呵呵,怎么实现的呢?有心人可以自己分析一下Deepin的光盘,这里就不多说了。以前在更新IE的时候也看见过种对话框的,有意思。后来无意中又看到lyz0508网友发表的一篇关于无人值守更深入的文章,来龙去脉也就更清楚了,他也是在MS网站上看到关于RunOnceEx键值的说明文章才知道的。

让我们来看看下面一段批处理的代码Install.cmd

@echo off
IF EXIST D:\WIN51IP set CDROM=D:
IF EXIST E:\WIN51IP set CDROM=E:
IF EXIST F:\WIN51IP set CDROM=F:
IF EXIST G:\WIN51IP set CDROM=G:
IF EXIST H:\WIN51IP set CDROM=H:
IF EXIST I:\WIN51IP set CDROM=I:
IF EXIST J:\WIN51IP set CDROM=J:
IF EXIST K:\WIN51IP set CDROM=K:
IF EXIST L:\WIN51IP set CDROM=L:
IF EXIST M:\WIN51IP set CDROM=M:
IF EXIST N:\WIN51IP set CDROM=N:
IF EXIST O:\WIN51IP set CDROM=O:
IF EXIST P:\WIN51IP set CDROM=P:
IF EXIST Q:\WIN51IP set CDROM=Q:
IF EXIST R:\WIN51IP set CDROM=R:
IF EXIST S:\WIN51IP set CDROM=S:
IF EXIST T:\WIN51IP set CDROM=T:
IF EXIST U:\WIN51IP set CDROM=U:
IF EXIST V:\WIN51IP set CDROM=V:
IF EXIST W:\WIN51IP set CDROM=W:
IF EXIST X:\WIN51IP set CDROM=X:
IF EXIST Y:\WIN51IP set CDROM=Y:
IF EXIST Z:\WIN51IP set CDROM=Z:

SET KEY=HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY% /V TITLE /D "安装常用软件和系统更新" /f
REG ADD %KEY% /V Flags /T REG_DWORD /D 20 /f

REG ADD %KEY%\010 /VE /D " 极点五笔 V5.1" /f
REG ADD %KEY%\010 /V 1 /D "%CDROM%\Soft\freewb51.EXE /S" /f

REG ADD %KEY%\020 /VE /D "安装 微软媒体播放器 V10.0" /f
REG ADD %KEY%\020 /V 1 /D "%CDROM%\Soft\wmp10.EXE /Q:A /R:N" /f

REG ADD %KEY%\030 /VE /D "安装 WinRAR V3.61" /f
REG ADD %KEY%\030 /V 1 /D "%CDROM%\Soft\winrar361.EXE /S" /f

保存为Install.cmd,放张XP的光盘在虚拟光驱中,然后在Winxp中运行一下这个文件,放心,不是什么病毒,懂点批处理的相信都看得懂什么意思。
运行后,打开注册表,定位到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx,看看有什么新加的么?
OK,看清楚后,让我们重新启动系统,再进系统时,这时会有点慢,请耐心等一下,肯定会进系统的,因为你的光盘里还没有添加这三个文件呢,所以系统会查找一下,进去后你看到了什么?呵呵,本节标题的意思你理解了吧?自由发挥吧。

另说一下,这段Install.cmd的方法,只能用于光盘上安装时不通过拷贝而直接安装运行光盘上的软件,如果XP是拷到硬盘某目录下进行Dos安装时,是无法找到你的XP光盘软件的,因为这种通过探测XP光盘下有没有Win51ip这个文件来确定光盘所在地的方法是无法探测到硬盘某目录下的Winxp的,同时如果在T12分钟加载这个批处理的时候,屏幕会有一个黑屏闪过,不过不失为一种光盘安装解决的好办法吧,如果你不喜欢第九所说的驱动集成复杂方式,用这种方法还可以偷懒集成安装驱动程序。

如果是采用直接修改Hivesft.inf的方法添加键值的方法进行文件定位,又得采用Oem目录方式,虽然可以解决文件定位的问题,却又增加了拷贝时间和Oem目录,这个当然不是偶喜欢的,偶的光盘没有Oem。对于这个问题,偶想了许久,也许编程才是唯一完美的方法,通过编程,读取XP源盘安装路径,然后用上面的方法添加启动键值,这样无轮你是从哪里安装的Winxp,都可以找到光盘上的软件。

十二、手动添加小工具,并在开始菜单中添加属于自己的专用菜单栏

绿色小软件一直是偶的最爱,小巧,实用,同样的功能干嘛非得要大型软件上不可?添加方法当然如前面所示的,为了能方便的在命令行里调用,偶认为还是放System32目录下吧,当然收集这些绿软可不是简单的事,还得费点心思的,下载了还要杀毒,测试,非绿色软件还要自己绿化,非汉化软件也还是得汉化一下,今天我们以Diskinfo磁盘空间占用率显示软件为例,这个在深山红叶的PE中也有集成的,绿色的单文件,首先杀毒测试后,将Diskinfo.exe进行压缩,同理,如果你不是放在Lang目录下的话,还得在Dosnet.inf中添加d1,Diskinfo.exe这行,我在Lang目录下建立了一个Tools文件夹,拷贝刚才压缩好的文件进去,打开Txtsetup.sif文件,在[SourceDisksNames.x86]小节后面添加
23 = %cdname%,%cdtagfilei%,,\i386\lang\tools
然后跳到自己的标示符后面,添加下面一行
diskinfo.exe=23,,,,,,,2,0,0 意思就是让安装程序知道从Lang\Tools目录下(23)拷到System32(2)目录下,好,一切准备就绪。

不过你可不想老在Run中输入命令行才能启动这个程序吧?OK,让我们把它添加到开始程序菜单中去吧。
接下来,我们解压缩Syssetup.in_,打开这个Syssetup.inf文件,定位到[StartMenuItems]小节,在未尾处添加如下行

system_utility =%system_utility%,0

再上面添加后紧跟着建立一个[system_utility]小节,添加

%DiskInfo_ID% =diskinfo.exe,diskinfo.exe,,1,%DiskInfo_ID_infotip%

再定位到文件未尾,添加如下行
;add tools -》定位符
system_utility = "系统实用工具"

DiskInfo_ID = "磁盘信息分析器"
DiskInfo_ID_infotip = "显示您计算机磁盘文件夹中文件占用情况-DiskInfo"

顺便定位到[StartMenuCommon]小节,把下面两行注释掉,开始菜单里就不会出现windows catalog和设定程序访问和默认值两项了
;%windowscatalog% = ,"http://go.microsoft.com/fwlink/?LinkId=374",moricons.dll,107,"@%SystemRoot%\system32\shell32.dll,-22587","%SystemRoot%\system32\shell32.dll",22075
;%configureprograms% = appwiz.cpl,"control.exe appwiz.cpl,,3",moricons.dll,-114,"@%SystemRoot%\system32\xpsp1res.dll,-10078","%SystemRoot%\system32\xpsp1res.dll",10077

压缩回去替换原文件后,安装看看,是不是出现了象附件一样的菜单项,鼠标放上面还显示Tip信息呢,就跟系统内部集成程序一样,好玩不?
其它如集成音频视频解码器集成也可以用这个方法,不过有些插件需要注册一下,相信你搞得定这个的。

下面是偶添加的近二十个小软列表,总体积不到5.1MB,仅做参考,也许太多了,不过都是偶常用的一些小工具。

TweakUI_ID = "微软系统设置工具"
TweakUI_ID_infotip = "微软自家的TweakUI 2.10"
icesword_ID = "冰刃反黑工具"
icesword_ID_infotip = "斩断木马黑客程序的利剑-IceSword 1.10"
regshot_ID = "注册表快照工具"
regshot_ID_infotip = "方便的找出两个不同时刻注册表的变化值-RegShot 1.7"
FileMon_ID = "文件读写监视器"
FileMon_ID_infotip = "监视系统中各应用程序的读写情况-FileMon 7.02"
DiskInfo_ID = "磁盘信息分析器"
DiskInfo_ID_infotip = "显示您计算机磁盘文件夹中文件占用情况-DiskInfo"
Vs_ID = "系统服务查看器"
Vs_ID_infotip = "显示或修改您计算机的服务程序-ViewService 1.2"
Usboot_ID = "闪存启动盘制作器"
Usboot_ID_infotip = "启动盘制作器Usboot 1.68版"
KenPlay_ID = "Ken超小迷你播放器"
KenPlay_ID_infotip = "VC++做的仅30KB的播放器,可播放多种音频、视频格式(本系统可播放Real电影)-KenPlayer"
hijackth_ID = "IE浏览器反劫持工具"
hijackth_ID_infotip = "系统出了问题,就扫描一个结果放坛子里吧-HijackThis 1.99"
upiea_ID = "IE插件超级管理器"
upiea_ID_infotip = "可以方便的免疫、卸载恶意网站强加的插件-Upiea 2005"
ones_ID = "刻录软件Ones 2.0版"
ones_ID_infotip = "超小的刻录软件,是时候放弃Nero了-Ones 2.0.325"
winimage_ID = "软盘镜象制作工具"
winimage_ID_infotip = "已支持虚拟机VHD格式-Winimage 8.0"
aspack_ID = "可执行文件压缩器"
aspack_ID_infotip = "程序员必备的DD,可压缩EXE、DLL文件-Aspack 2.12 "
ultraiso_ID = "光碟镜象制作工具"
ultraiso_ID_infotip = "软碟通,ISO光碟伴侣-UltraISO 7.66"
ultras_ID = "屏幕捕获工具"
ultras_ID_infotip = "仅几百KB小巧的屏幕捕获工具,支持Jpg,Bmp,Png,Gif格式-UltraSnap Pro 1.4"
screen_ID = "屏幕录像机"
screen_ID_infotip = "小巧好用的屏幕录像工具,生成AVI格式,支持系统视频编码,生成的文件更小-Screen Record Studio"
hashcalc_ID = "超强文件指纹校验机"
hashcalc_ID_infotip = "可以计算MD5、CRC32等文件校验值的工具-HashCalc"
reshacke_ID = "可执行文件资源修改器"
reshacke_ID_infotip = "老牌好用的文件资源修改器-Resource Hacker"
peid_ID = "Win32程序外壳扫描器"
peid_ID_infotip = "可以探测EXE、DLL加的壳的类型-PEid 0.93"
imetool_ID = "输入法设置工具"
imetool_ID_infotip = "由Silence编写的输入法设置工具,可以安装IME,自由设置热键-ImeTool 2.6"
handy_ID = "删除文件恢复器"
handy_ID_infotip = "可以恢复已被删除的文件-HandyRecovery 1.0"

十三、移除Biosoem.*相关文件后,在Everst测试软件里不显示需要激活的方法。
这个是一个网友透露的,没有征得他的同意之前,这里还是空着吧。

十四、移除Nlite强加给我们的(也许有点不厚道,权当是让你了解Nlite给你文件中添加了什么吧)

如果你讨厌在安装XP后第一次进桌面时出现的那个黑色的Cmd框和添加在系统中的隐藏项,跟我来,手动移除这些DD。
打开Hivesft.inf,查找HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlreg",0×00020000,"rundll32 advpack.dll,LaunchINFSection %SystemRoot%\inf\nlite.inf,T"
然后注释掉。

打开txtsetup.sif,找到nlhive.inf = 16和nlite.inf = 16两行,注释掉
找到AddReg = nlhive.inf,nLite,注释掉
找到nlhive.inf = 1,,,,,,_x,,3,3和nlite.inf = 1,,,,,,,20,0,0,注释掉

打开Dosnet.net,找到d1,nlhive.inf和d1,nlite.inf两行,注释掉
解压sysoc.in_,打开sysoc.inf,找到nLite=ocgen.dll,OcEntry,nLite.inf,HIDE,7和nLiteRF=ocgen.dll,OcEntry,nLite.inf,HIDE,7
注释掉。

同时可以将Nlite.inf和Nlhive.inf里想要的内容移到自己的注册表优化文件,然后就可以顺手将这两个文件Del了。哗,世界清静了。如果你还有洁僻,还可以把每个Nlite修改过的文件未尾的Nlite标志语删了,应该说删这些还可以节省一些空间吧,这下整个系统里没有Nlite影子了,完整的原XP,(当然除了Nlite破解的几个Dll)呵呵,够BT的吧?

十五、手动添加字体,并注册这些新添加的字体

当我们需要集成字体时,(美工有时需要)有网友也试着修改TXTSETUP.sif文件,在系统里添加了字体,但安装完成后,打开写字板什么的,里面没有显示出安装的新字体,查看字体文件,也在Font目录下呀,其实打开控制面板中的字体后,系统会自动扫描字体,你的新字体在这个时候将被注册,再打开写字板时,哎呀,出来了,呵呵。能不能自动注册呀?问得好,好象也看见有人在问这个问题。答案就是注册表里,以集成华文仿宋体为例:这里提供一个小技巧,修改TXTSETUP.sif时,不用把自己的文件夹在原有的文件中。最好是在未尾添加一个自己的标示符,如我自己添加时加了这么一句->;here is my added,以后要修改这里,只要在查找中输入;here,就可以直接跳到这里来了。
将字体stfangso.ttf压缩一下,放在i386\lang这里,为什么放这里?一个是好查找,二个是不用修改Dosnet.inf了,因为Lang目录在安装是会被系统自动拷到临时目录中的,不信,你再在Lang目录下建个空目录,在第一次安装需要重启时,不启动系统,跑临时文件夹中去看看,是不是同样有个相同的空目录?

接着:打开TXTSETUP.sif,用上面的方法跳到自己的标示符这里,添加stfangso.ttf=7,,,,,,,22,0,0这行字,7是指lang目录,22是指系统Fonts
目录,再打开Hivesft.inf,定位到HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",,0×00000012这里,在后面随便那行后面
添加HKLM,"Software\Microsoft\Windows NT\CurrentVersion\Fonts","%hwzs%",,"stzhongs.ttf"一行,再翻到未位的[strings]小节里,
添加一行hwfs="华文仿宋",聪明的你一下看出门道了吧?嘿嘿,这样处理后,安装上Xp,打开写字板,看看字体是不是在那里呢?看到这里,你是不是想集成微软的雅黑字体呢?(好象有点大)什么是雅黑字体?晕,自己在网上搜一下相关的信息吧,再自己集成试试。

另外,还流传着一种用高手改造过的Simsun.ttc替换XP的宋体字体的方法,还可以节省一些空间,据说是来自雨浪的系统维护工具盘,压缩后只有1.2MB大,比原来的小很多,具体会不会出现Tingpu说的显示某些如8号,12号的字会模糊的现象,没试过,有兴趣的可以试试。

十六、手动添加王码五笔86版

本来不想写这个的,因为太简单了,看到有人在问这个问题,就当是给五笔爱好者一个回复吧。
在华军网上有这个下载,也就是Office 2000光盘里自带的那个老五笔,大多学86版五笔时间长点的都还在用这个吧,因为那时还没有出极点五笔,不过偶并不喜欢用这个,极点才是偶的最爱,集成它只是应一个同事的要求。解开后共四个文件,Winwb86.mb和Winwb86.ime这两个就是86版的,文件不大,照例用上面的方法进行压缩,参照四的方法打开Hivesys.sif,在那个位置上添加

HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0100804","Layout File",0×00000000,"kbdus.dll"
HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0100804","Layout Text",0×00000000,"%KLT_92%"
HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0100804","IME File",0×00000000,"winwb86.ime"

[Strings]小节中添加
KLT_92="王码五笔输入法86版"

hivedef.sif文件中preload处添加一个HKCU,"Keyboard Layout\Preload","4",0×00000002,"E0100804"
别忘了修改Txtsetup.sif和Dosnet.inf添加文件。
OK,安装看看,是不是出来了?

后记:其它象一些添加注册表、服务优化的东西我想也不用多说了,在网上可以搜到一大堆的优化键值,保存好后导入你的XP就成了。关于修改安装画面什么的ZMN120上面讨论得有点多,不重复了。高级点的就象Deepin一样自己用Delphi什么的写个程序,用上面的方法集成到自己的XP盘中就成了。Nlite的东西是不完美的,你不知道系统中是否还缺失什么文件,偶的感受是,只要你不过份的精简掉XP的组件,通过上面的后期处理,一般都不会出现什么安装字体缺失,插USB出现安装驱动对话框,不能安装SQL什么之类的问题,都能正常安装与使用。具体系统中还有什么BUG呢?这个我不知道,所以大多数制作人都是采用发放作品,让大家免费安装测试,通过问题的反馈或调整精简方案,或添加文件,或修改注册表等方法加以解决。当然,这也无可厚非,人多力量大嘛,所以高手依然是高手,菜鸟还是菜鸟,研究技术的还是在研究技术,大自然之造化也。

偶不是什么高手,只是对技术感兴趣罢了,Deepin也许做得比偶所述的还要更多,每次分析他的碟子都发现新的东西,他对技术执着的追求精神真的值得大家好好学习。光盘制作技术中偶认为PE和Nlite有很多的相通之处,通过制作,可以加深我们对系统内部的了解。再次总结一下Nlite研究需要具备的知识吧:

1.Dos基础知识,很多古老的命令现在都还在发挥着它不可替代的作用。
2.注册表知识,系统的内核。
3.INF文件结构。
4.常用工具如REGSNAP注册表监视,Resource Hacker资源修改的使用。
5.虚拟机调试工具的使用。
6.启动光盘制作知识。
7.Nlite的使用
8.后期处理
9.E文,有时间多去老外的坛子里逛逛,也许会有新的发现。(www.MSFN.org是个好去处)

要想做得更好,平面设计和编程是必不可少的。看了这么多,也许你心里在打退堂鼓了,呵呵,别怕,知识是靠积累才能得到的,没有努力,哪来的成功?

看完本章后,你的感觉是什么?还在羡慕别人做的XP精简版么?自己动手打造属于自己的Winxp吧,上MS网上转转看看,偶也是在自己研究中找到了解决的办法,细心加耐心,没准你又发现比我更好的办法呢?

注:此方法是用在精简方案已定的情况下才做的,否则每次都修改,累死你。

本文来自: Nlite后期处理技术小结

微软雅黑字体最简单详细的安装方法

<Category: 技术回收站> 1 条评论

见过Vista的朋友都会发现系统中的字体比WinXP好看,这是由于Vista的汉字显示采用了微软雅黑字体。难道必须要安装测试版的Vista才能看到漂亮的字体吗?其实,只要你的系统是WinXP SP2,同样可以享受这种“抗锯齿”的字体效果。

1、安装微软雅黑字体

首先下载微软雅黑字体,http://www.mydown.com/tests/zitixiazai/316/418816_ds.shtml解压缩文件获得msyh.ttf和msyhbd.ttf,这两个文件就是微软雅黑字体件,复制到Windows所在目录的Fonts目录下即完成了字体安装。

2、更改WinXP外观(如果你的XP并非官方版本或者已经安装使用过诸如深度主题包一类的软件,这一步可以跳过)

使用雅黑字体需要更改默认的外观Tiger外观,正版WinXP不允许使用第三方外观,所以我们需要去除这个限制,替换掉原来的UxTheme.dll文件,由于这个文件被Windows保护起来,这里借助一款UxTheme Multi-Patcher来进行修改,Uxpatch.zip解压缩后获得UxThexe Multi-Patcher5.0.exe,运行之后,在程序窗口点击“Patch”按钮。稍等片刻,将弹出的Windows文件保护窗口,点击“取消”按钮,最后在弹出的窗口确认操作并重启计算机。

3、开启ClearType效果(非必须步骤,但使用以后会让雅黑字体现实的更完美)

系统重新启动后,下载使用微软雅黑的Tiger Visual Style外观。解压缩Tiger.zip文件到系统目录windows\resources\themes目录下,在该目录下运行Tiger TheWorld.msstyles,以弹出的外观设置窗口点“确认”即可应用外观。

接着需要开启系统的ClearType效果:在桌面上点击右键,在菜单中选择属性,以弹出的窗口选择外观标签,点击“效果”按钮,选中“使用下列方式使屏幕字体的边缘光滑”,在列表框中选择清晰,确定退出即可开启ClearType效果。

4、在IE中使用雅黑字体

上网冲浪时在IE中如何用雅黑字体呢?打开IE,在主窗口中依次点击“工具-Internet选项”,在弹出的窗口中点击“”,再选择雅黑字体即可

如果你的XP是原版建议建议安装深度主题包或者完美者主题圣诞大礼包

http://www.greendown.cn/soft/9419.html

这样就省略了上面的地二步和第三步,很方便,感兴趣的不妨试试。

本文来自: 微软雅黑字体最简单详细的安装方法

asp内置对象 session 详解

<Category: 技术回收站> 发表评论

Session 对象
可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ 应用程序”部分的“管理会话”。

注意 会话状态仅在支持 cookie 的浏览器中保留。

语法
Session.collection|property|method

集合
Contents 包含已用脚本命令添加到会话中的项目。
StaticObjects 包含通过 标记创建的并给定了会话作用域的对象。

属性
CodePage 将用于符号映射的代码页。
LCID 现场标识。
SessionID 返回用户的会话验证。
Timeout 应用程序会话状态的超时时限,以分钟为单位。


Abandon 该方法破坏 Session 对象并释放其资源。

事件
global.asa 文件中声明下列事件的脚本。

Session_OnEnd
Session_OnStart

有关以上事件及 global.asa 文件的详细信息, 请参阅 Global.asa 参考.

注释
您可以在 Session 对象中存储值。存储在 Session 对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。

< %
Session("username") = "Janine"
Session("age") = 24
%>

但是,如果您将对象存储在 Session对象中,而且您使用 VBScript 作为主脚本语言。则必须使用关键字 Set。如下列脚本所示。

< % Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>

然后,您就可以在后面的 Web 页上调用 MyComponent.class1 揭示的方法和属性,其调用方法如下:

< % Session("Obj1").MyMethod %>

也可以通过展开该对象的本地副本并使用下列脚本来调用:

< %
Set MyLocalObj1 = Session("Obj1")
MyLocalObj1.MyObjMethod
%>

创建有会话作用域的对象的另一种方法是在 global.asa 文件中使用

标记。

但是不能在 Session 对象中存储内建对象。例如,下面每一行都将返回错误。

< %
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%>

在将对象存储到 Session 对象之前,必须了解它使用的是哪一种线程模型。只有那些标记为“Both”的对象才能存储在没有锁定单线程会话的 Session 对象中。详细信息, 请参阅“创建 ASP 组件”中的“选择线程模型”。

若您将一个数组存储在 Session对象中,请不要直接更改存储在数组中的元素。例如,下列的脚本无法运行。

< % Session("StoredArray")(3) = "new value" %>

这是因为 Session对象是作为集合被实现的。数组元素 StoredArray(3) 未获得新的赋值。而此值将包含在 Application 对象集合中,并将覆盖此位置以前存储的任何信息。

我们极力建议您在将数组存储在 Session对象中时,在检索或改变数组中的对象前获取数组的一个副本。在对数组操作时,您应再将数组全部存储在 Session 对象中,这样您所做的任何改动将被存储下来。下列的脚本对此进行演示。

—file1.asp—
< %
'Creating and initializing the array
Dim MyArray()
Redim MyArray(5)
MyArray(0) = "hello"
MyArray(1) = "some other string"

'Storing the array in the Session object
Session("StoredArray") = MyArray

Response.Redirect("file2.asp")
%>

—file2.asp—
< %
'Retrieving the array from the Session Object
'and modifying its second element
LocalArray = Session("StoredArray")
LocalArray(1) = " there"

'printing out the string "hello there"
Response.Write(LocalArray(0)&LocalArray(1))

'Re-storing the array in the Session object
'This overwrites the values in StoredArray with the new values
Session("StoredArray") = LocalArray
%>

示例
下列代码将字符串 MyName 分配给名为 name 的会话变量,并给名为 year 的会话变量指定一个值,而且为 some.Obj 组件的实例指定一个名为 myObj 的变量。

Session("name") = "MyName"
Session("year") = 96
Set Session("myObj") = Server.CreateObject("someObj")
%>

本文来自: asp内置对象 session 详解

ASP内置对象 Request对象 详解

<Category: 技术回收站> 发表评论

Request对象用于接受所有从浏览器发往你的服务器的请求内的所有信息。

集合

Request.ClientCertificate(key[SubField])

所有客户证书的信息的集合。对于Key,该集合具有如下的关键字:

Subject
证书的主题。包含所有关于证书收据的信息。能和所有的子域后缀一起使用。

Issuer
证书的发行人。包含所有关于证书验证的信息。除了CN外,能和所有的子域后缀一起使用。

VadidFrom
证书发行的日期。使用VBScript格式。

ValidUntil
该证书不在有效的时间。

SerialNumber
包含该证书的序列号。

Certificate
包含整个证书内容的二进制流,使用ASN.1格式。

对于SubField,Subject和Issuer关键字可以具有如下的子域后缀:(比如:SubjectOU或IssuerL)

C
起源国家。

O
公司或组织名称。

OU
组织单元。

CN
用户的常规名称。

L
局部。

S
州(或省)。

T
个人或公司的标题。

GN
给定名称。

I
初始。

当文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通过使用#INCLUDE导向包含在你的Active Server Page里时,下面两个标志可以使用:

ceCertPresent
指明客户证书是否存在,其值为TRUE或FALSE。

ceUnrecongnizedIssure
指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE。

Request.Cookies(Cookie[(key).Attribute])

Cookie的集合。允许获得浏览器的Cookie。Cookie指明返回那一个Cookie。Key用于从Cookie字典中返回具有某一关键字的Cookie值。对于Attribute,你能使用属性HasKeys来确定某一Cookie是否具有子关键字。HasKeys的值为TRUE或FALSE。

Request.Form(Parameter)[(Index).Count]

填写在HTML的表单中所有的数据的集合。Parameter是在HTML表单中某一元素的名称。当某一参数具有不止一个值(比如,当在中使用MULTIPLE属性时)时,使用Index。当某一参数具有多值时,Count指明多值个数。

Request.QueryString(Varible)[(Index).Count]

查询字符串的所有值的集合。Varible是在查询字符串某一变量的名称。当某一变量具有多于一个值时,使用Index。当某一参数具有多值时,Count指明值的个数。

Request.ServerVaribles(Server Environment Variable)

环境变量的集合。允许读取HTTP头。你可以通过使用HTTP_前缀来读取任何头信息。比如,HTTP_USER_AGENT接受客户代理HTTP头(浏览器类型)。除此外,你可以使用下表所示的变量获得任何环境信息。

ALL_HTTP
客户端发送的所有HTTP标头,他的结果都有前缀HTTP_。

ALL_RAW
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_

APPL_MD_PATH
应用程序的元数据库路径。

APPL_PHYSICAL_PATH
与应用程序元数据库路径相应的物理路径。

AUTH_PASSWORD
当使用基本验证模式时,客户在密码对话框中输入的密码。

AUTH_TYPE
这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。

AUTH_USER
代验证的用户名。

CERT_COOKIE
唯一的客户证书ID号。

CERT_FLAG
客户证书标志,如有客户端证书,则bit0为0。如果客户端证书验证无效,bit1被设置为1。

CERT_ISSUER
用户证书中的发行者字段。

CERT_KEYSIZE
安全套接字层连接关键字的位数,如128。

CERT_SECRETKEYSIZE
服务器验证私人关键字的位数。如1024。

CERT_SERIALNUMBER
客户证书的序列号字段。

CERT_SERVER_ISSUER
服务器证书的发行者字段

CERT_SERVER_SUBJECT
服务器证书的主题字段。

CERT_SUBJECT
客户端证书的主题字段。

CONTENT_LENGTH
客户端发出内容的长度。

CONTENT_TYPE
客户发送的form内容或HTTP PUT的数据类型。

GATEWAY_INTERFACE
服务器使用的网关界面。

HTTPS
如果请求穿过安全通道(SSL),则返回ON。如果请求来自非安全通道,则返回OFF。

HTTPS_KEYSIZE
安全套接字层连接关键字的位数,如128。

HTTPS_SECRETKEYSIZE
服务器验证私人关键字的位数。如1024。

HTTPS_SERVER_ISSUER
服务器证书的发行者字段。

HTTPS_SERVER_SUBJECT
服务器证书的主题字段。

INSTANCE_ID
IIS实例的ID号。

INSTANCE_META_PATH
响应请求的IIS实例的元数据库路径。

LOCAL_ADDR
返回接受请求的服务器地址。

LOGON_USER
用户登录Windows NT的帐号

PATH_INFO
客户端提供的路径信息。

PATH_TRANSLATED
通过由虚拟至物理的映射后得到的路径。

QUERY_STRING
查询字符串内容。

REMOTE_ADDR
发出请求的远程主机的IP地址。

REMOTE_HOST
发出请求的远程主机名称。

REQUEST_METHOD
提出请求的方法。比如GET、HEAD、POST等等。

SCRIPT_NAME
执行脚本的名称。

SERVER_NAME
服务器的主机名、DNS地址或IP地址。

SERVER_PORT
接受请求的服务器端口号。

SERVER_PORT_SECURE
如果接受请求的服务器端口为安全端口时,则为1,否则为0。

SERVER_PROTOCOL
服务器使用的协议的名称和版本。

SERVER_SOFTWARE
应答请求并运行网关的服务器软件的名称和版本。

URL
提供URL的基本部分。

 

Request.BinaryRead(Count)

接收一个HTML表单的未经过处理的内容。当调用此方法时,Count指明要接收多少字节。在调用此方法后,Count指明实际上接收到多少个字节。

属性

Request.TotalBytes

查询体的长度,以字节为单位。

本文来自: ASP内置对象 Request对象 详解

参考资料之ASP函数

<Category: 技术回收站> 发表评论

1.函数 array()
功能:创建一个数组变量
格式:array(list)
参数:list 为数组变量中的每个数值列,中间用逗号间隔
例子:

结果: i 被赋予为数组

2.函数 Cint()
功能:将一表达式/其它类型的变量转换成整数类型(int)
格式:Cint(expression)
参数:expression 是任何有效的表达式/其它类型的变量
例子:
  
结果: 236
函数Cint()将字符"234"转换 成整数234.如果表达式为空, 或者无效时,返回值为0;

3.函数: Creatobject()
功能:创建及返回一个ActiveX对象.
格式:Creatobject(obname)
参数:obname 是对象的名称
例子:
  
结果:
4.函数 Cstr()
功能:将一表达式/其它类型的变量转换成字符类型(string)
格式:Cstr(expression)
参数:expression是任何有效的表达式/其它类型的变量
例子:
  
结果:函数Cstr()将整数 5 转换 成字符"5".

5.函数 Date()
功能:返回当前系统(server端)的日期
格式:Date()
参数:无
例子:
结果:05/10/00

6.函数 Dateadd()
功能:计算某个指定的时间和
格式:dateadd(timeinterval,number,date)
参数:timeinterval是时间单位(月,日..); number是时间间隔值,date是时间始点.
例子:

  
结果:
11/4/99
3:34:45 PM
其中
"m" = "month";
"d" = "day";
如果是currentDate 格式,则,
"h" = "hour";
"s" = "second"; 

7.函数 Datediff()
功能:计算某量个指定的时间差
格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])
参数:timeinterval 是时间单位; date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear 是任意选项.
例子:
  
结果:There are 150 days to millenium from 8/4/99. 

8.函数 day()
功能:返回一个整数值,对应于某月的某日
格式:day(date)
参数:date是一个有效的日期表达式;
例子:
结果:4

9.函数 formatcurrency()
功能:转换成货币格式
格式:formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
参数:expression 是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项.
例子:
结果:$34.35

10.函数 Formatdatetime()
功能:格式化日期表达式/变量
格式:formatdatetime(date[,nameformat])
参数:date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称.
例子:
结果:Wednesday,August 04,1999

11.函数 formatnumber()
功能:格式化数字表达式/变量
格式:formatnumbe(expression [,digit[,leadingdigit[,paren[,groupdigit]]]])
参数:express为有效的数字表达式, digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项
例子:
  
结果: 23.222

12.函数 formatpercent()
功能:格式化百分数表达式/变量
格式:formatnumber(expression [,digit [,leading [,paren[,groupdigit]]]])
参数:expression 是有效的数字表达式,digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项
例子:
  
结果: 45.233

13.函数: hour()
功能:返回一个数值,对应于的指定时间.
格式:hour(time)
参数:time对应于的指定时间.
例子:
  
结果:16 (24 小时制)

14.函数 instr()
功能:返回一个数值,对应于某字符(串)在另一字符串中的位置.
格式:instr([start,]strtobesearched,strsearchfor [,compare])
参数:start(任选)是从第start位寻找,strtobesearched 是被搜索的字符串,strsearchfor是被寻找的目标.compare是任意选项
例子:
  
结果:9,(字符"a"在strtext字符串的第九位)

15.函数 instrrev()
功能:返回一个数值,对应于某字符(串)在另一字符串中的位置(从后面起开始寻找).
格式:instrrev([start,] strtobesearched,strsearchfor[,compare])
参数:参考 instr(),
例子:

结果:13, 字串"s"是strtext的第13个字符(从后面起开始寻找)

16.函数 int()
功能:数字取整
格式:int(number)
参数:number 是任何有效的数字表达式/其它类型的变量
例子:

结果:322 (如果用Cint()则结果是323)

17.函数 isarray()
功能:返回一个布尔值,判断变量是否为数组.
格式: isarray(name)
参数:name是变量名称
例子:
  
结果:false

18.函数 isdate()
功能:返回一个布尔值,判断变量是否为日期变量.
格式:isdate(expression)
参数:expression 是任意的变量.
例子:
结果:true

19.函数 isempty()
功能:返回一个布尔值,判断变量是否为空.
格式:isempty(expression)
参数:expression 是任意的变量.
例子:

结果:true

20.函数 isnull()
功能:返回一个布尔值,判断变量是否包含非法的数据.
格式:isnull(expression)
参数:expression 是任意的变量.
例子:

结果:false

21.函数 Isnumeric()
功能:返回一个布尔值,判断变量是否为数字变量,或者是可以转换成数字的其它变量.
格式:isnumeric(expression)
参数:expression 是任意的变量.
例子:
  
结果: true.

22.函数 Isobject()
功能:返回一个布尔值,判断变量是否为对象的变量,
格式:isobject(expression)
参数:expression 是任意的变量.
例子:
  
结果: true

23.函数: Lbound()
功能:返回一个数组的下界.
格式:Lbound(arrayname[,dimension])
参数:arrayname 是数组变量,dimension 是任意项
例子:
  
结果:0
24.函数 Lcase()
功能:将一字符类型变量的字符全部变换小写字符.
格式:Lcase(string)
参数:string是字串变量
例子:
  
结果:this is lcase!

25.函数 left()
功能:截取一个字符串的前部分;
格式:left(string,length)
参数:string字符串,length截取的长度.
例子:
结果:this i

26.函数 len()
功能:返回字符串长度或者变量的字节长度
格式:len(string |varname)
参数:string字符串;varname任意的变量名称
例子:

结果:15

27.函数 ltrim()
功能:去掉字符串前的空格.
格式:ltrim(string)
参数:string 字串.
例子:
结果:Today

29.函数 minute()
功能:返回一数值, 表示分钟
格式:minute(time)
参数: time是时间变量
例子:
结果:23

30.函数 month()
功能:返回一数值, 表示月份
格式:month(time)
参数:time是日期变量
例子:
结果:9

31.函数 monthname()
功能:返回月份的字符串(名称).
格式:Monthname(date [,abb])
参数:date是日期变量,abb=true时 则月份的缩写,
例子:
  
结果:April
32.函数 Now()
功能:返回系统的当前时间和日期.
格式:now()
参数:无
例子:
  
结果: 05/10/00 8:45:32 pm

33.函数: replace()
功能:在字串中查找,替代指定的字串.
格式:replace(strtobesearched,strsearchfor,strreplacewith

[,start[,count[,compare]]])
参数:strtobesearched是字串; strsearchfor是被查找的子字串;strreplacewith

是用来替代的子字串.start,count,compare 是任意选项.
例子:
  
结果:this is an orange.

34.函数 right()
功能:截取一个字符串的后部分
格式:right(string,length)
参数:string字符串,length截取的长度.
例子:
  
结果:st!

35.函数 rnd()
功能:返回一个随机数值
格式:rnd[(number)]
参数:number是任意数值.
例子:

结果:0/1数值之一,无randomize(), 则不能产生随机数.
36.函数round()
功能:完整数值
格式:round(expression[,numright])
参数:expression数字表达式;numright任意选项.
例子:

结果: 12
37.函数 rtrim()
功能:去掉字符串后的空格.
格式:rtrim(string)
参数:string 是字串
例子:
  
结果:this is a test!

38.函数 second()
功能:返回一个整数值.
格式:second(time)
参数:time是一个有效的时间表达式;
例子:
结果:30

39.函数 strReverse()
功能:返回与原字串排列逆向的字串.
格式:strreverse(string)
参数:string是字串
例子:

——————————————————————————–

下面为带例子的:

Array()
FUNCTION: 返回一个数组
SYNTAX: Array(list)
ARGUMENTS: 字符,数字均可
EXAMPLE: < %
Dim myArray()
For i = 1 to 7
Redim Preserve myArray(i)
myArray(i) = WeekdayName(i)
Next
%>
RESULT: 建立了一个包含7个元素的数组myArray
myArray("Sunday","Monday", … … "Saturday")

CInt()
FUNCTION: 将一个表达式转化为数字类型
SYNTAX: CInt(expression)
ARGUMENTS: 任何有效的字符均可
EXAMPLE: < %
f = "234"
response.write cINT(f) + 2
%>
RESULT: 236
转化字符"234"为数字"234",如果字符串为空,则返回0值

CreateObject()
FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。
SYNTAX: CreateObject(objName)
ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字.
EXAMPLE: < %
Set con = Server.CreateObject("ADODB.Connection")
%>
RESULT:

CStr()
FUNCTION: 转化一个表达式为字符串.
SYNTAX: CStr(expression)
ARGUMENTS: expression 是任何有效的表达式。
EXAMPLE: < %
s = 3 + 2
response.write "The result is: " & cStr(s)
%>
RESULT: 转化数字“5”为字符“5”。

Date()
FUNCTION: 返回当前系统日期.
SYNTAX: Date()
ARGUMENTS: None.
EXAMPLE: < %=Date%>
RESULT: 8/4/99

DateAdd()
FUNCTION: 返回一个被改变了的日期。
SYNTAX: DateAdd(timeinterval,number,date)
ARGUMENTS: timeinterval is the time interval to add; number is amount of
time intervals to add; and date is the starting date.
EXAMPLE: < %
currentDate = #8/4/99#
newDate = DateAdd("m",3,currentDate)
response.write newDate
%>

< %
currentDate = #12:34:45 PM#
newDate = DateAdd("h",3,currentDate)
response.write newDate
%>
RESULT: 11/4/99
3:34:45 PM

"m" = "month";
"d" = "day";

If currentDate is in time format then,
"h" = "hour";
"s" = "second";

DateDiff()
FUNCTION: 返回两个日期之间的差值 。
SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek ][,
firstweekofyear]])
ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。
EXAMPLE: < %
fromDate = #8/4/99#
toDate = #1/1/2000#
response.write "There are " & _
DateDiff("d",fromDate,toDate) & _
" days to millenium from 8/4/99."
%>
RESULT: 从8/4/99 到2000年还有 150 天.

Day()
FUNCTION: 返回一个月的第几日 .
SYNTAX: Day(date)
ARGUMENTS: date 是任何有效的日期。
EXAMPLE: < %=Day(#8/4/99#)%>
RESULT: 4

FormatCurrency()
FUNCTION: 返回表达式,此表达式已被格式化为货币值
SYNTAX: FormatCurrency(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit]]]])
ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是
计算机的区域设置; LeadingDigit 三态常数,指示是否显示小数值小数点前面的
零。
EXAMPLE: < %=FormatCurrency(34.3456)%>
RESULT: $34.35

FormatDateTime()
FUNCTION: 返回表达式,此表达式已被格式化为日期或时间
SYNTAX: FormatDateTime(Date, [, NamedFormat])
ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用
vbGeneralDate.
EXAMPLE: < %=FormatDateTime("08/4/99", vbLongDate)%>
RESULT: Wednesday, August 04, 1999

FormatNumber()
FUNCTION: 返回表达式,此表达式已被格式化为数值.
SYNTAX: FormatNumber(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit]]]])
ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是
计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -
1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认
值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数
的数值。默认值为 -1,指示使用的是计算机的区域设置。.
EXAMPLE: < %=FormatNumber(45.324567, 3)%>
RESULT: 45.325

FormatPercent()
FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以
100 )。 (%)
SYNTAX: FormatPercent(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit]]]])
ARGUMENTS: 同上.
EXAMPLE: < %=FormatPercent(0.45267, 3)%>
RESULT: 45.267%

Hour()
FUNCTION: 以24时返回小时数.
SYNTAX: Hour(time)
ARGUMENTS:
EXAMPLE: < %=Hour(#4:45:34 PM#)%>
RESULT: 16
(Hour has been converted to 24-hour system)

Instr()
FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置.
SYNTAX: Instr([start, ] strToBeSearched, strSearchFor [, compare])
ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串
strSearchFor要搜索的字符.compare比较方式(详细见ASP常数)
EXAMPLE: < %
strText = "This is a test!!"
pos = Instr(strText, "a")
response.write pos
%>
RESULT: 9

InstrRev()
FUNCTION: 同上,只是从字符串的最后一个搜索起
SYNTAX: InstrRev([start, ] strToBeSearched, strSearchFor [, compare])
ARGUMENTS: 同上.
EXAMPLE: < %
strText = "This is a test!!"
pos = InstrRev(strText, "s")
response.write pos
%>
RESULT: 13

Int()
FUNCTION: 返回数值类型,不四舍五入,注意取值是不大于它的整数。
SYNTAX: Int(number)
ARGUMENTS:
EXAMPLE: < %=INT(32.89)%> < %=int(-3.33)%>
RESULT: 32 -4

IsArray()
FUNCTION: 判断一对象是否为数组,返回布尔值 .
SYNTAX: IsArray(name)
ARGUMENTS:
EXAMPLE: < %
strTest = "Test!"
response.write IsArray(strTest)
%>
RESULT: False

IsDate()
FUNCTION: 判断一对象是否为日期,返回布尔值
SYNTAX: IsDate(expression)
ARGUMENTS: expression is any valid expression.
EXAMPLE: < %
strTest = "8/4/99"
response.write IsDate(strTest)
%>
RESULT: True

IsEmpty()
FUNCTION: 判断一对象是否初始化,返回布尔值.
SYNTAX: IsEmpty(expression)
ARGUMENTS:
EXAMPLE: < %
Dim i
response.write IsEmpty(i)
%>
RESULT: True

IsNull()
FUNCTION: 判断一对象是否为空,返回布尔值.
SYNTAX: IsNull(expression)
ARGUMENTS:
EXAMPLE: < %
Dim i
response.write IsNull(i)
%>
RESULT: False

IsNumeric()
FUNCTION: 判断一对象是否为数字,返回布尔值.
SYNTAX: IsNumeric(expression)
ARGUMENTS:
EXAMPLE: < %
i = "345"
response.write IsNumeric(i)
%>
RESULT: True
就算数字加了引号,ASP还是认为它是数字。

IsObject()
FUNCTION: 判断一对象是否为对象,返回布尔值.
SYNTAX: IsObject(expression)
ARGUMENTS:
EXAMPLE: < %
Set con = Server.CreateObject("ADODB.Connection")
response.write IsObject(con)
%>
RESULT: True

LBound()
FUNCTION: 返回指定数组维的最小可用下标.
SYNTAX: Lbound(arrayname [, dimension])
ARGUMENTS: ; dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2
表示第二维,以此类推。如果省略 dimension 参数,默认值为 1.
EXAMPLE: < %
i = Array("Monday","Tuesday","Wednesday")
response.write LBound(i)
%>
RESULT: 0

LCase()
FUNCTION: 返回字符串的小写形式
SYNTAX: Lcase(string)
ARGUMENTS: string is any valid string expression.
EXAMPLE: < %
strTest = "This is a test!"
response.write LCase(strTest)
%>
RESULT: this is a test!

Left()
FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符).
SYNTAX: Left(string, length)
ARGUMENTS:
EXAMPLE: < %
strTest = "This is a test!"
response.write Left(strTest, 3)
%>
RESULT: Thi

Len()
FUNCTION: 返回字符串的长度.
SYNTAX: Len(string | varName)
ARGUMENTS:
EXAMPLE: < %
strTest = "This is a test!"
response.write Len(strTest)
%>
RESULT: 15

LTrim()
FUNCTION: 去掉字符串左边的空格.
SYNTAX: LTrim(string)
ARGUMENTS:
EXAMPLE: < %
strTest = " This is a test!"
response.write LTrim(strTest)
%>
RESULT: This is a test!

Mid()
FUNCTION: 返回特定长度的字符串(从start开始,长度为length).
SYNTAX: Mid(string, start [, length])
ARGUMENTS:
EXAMPLE: < %
strTest = "This is a test! Today is Monday."
response.write Mid(strTest, 17, 5)
%>
RESULT: Today

Minute()
FUNCTION: 返回时间的分钏.
SYNTAX: Minute(time)
ARGUMENTS:
EXAMPLE: < %=Minute(#12:45:32 PM#)%>
RESULT: 45

Month()
FUNCTION: 返回日期.
SYNTAX: Month(date)
ARGUMENTS: date is any valid date expression.
EXAMPLE: < %=Month(#08/04/99#)%>
RESULT: 8

MonthName()
FUNCTION: Returns a string identifying the specified month.
SYNTAX: MonthName(month, [, Abb])
ARGUMENTS: month is the numeric representation for a given month; Abb
(optional) is a boolean value used to display month abbreviation. True
will display the abbreviated month name and False (default) will not show
the abbreviation.
EXAMPLE: < %=MonthName(Month(#08/04/99#))%>
RESULT: August

Now()
FUNCTION: Returns the current system date and time.
SYNTAX: Now()
ARGUMENTS: None
EXAMPLE: < %=Now%>
RESULT: 8/4/99 9:30:16 AM

Replace()
FUNCTION: Returns a string in which a specified sub-string has been
replaced with another substring a specified number of times.
SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start
][, count ][, compare]]])
ARGUMENTS: strToBeSearched is a string expression containing a sub-
string to be replaced; strSearchFor is the string expression to search for
within strToBeSearched; strReplaceWith is the string expression to replace
sub-string strSearchFor; start (optional) is the numeric character
position to begin search; count (optional) is a value indicating the
comparision constant.
EXAMPLE: < %
strTest = "This is an apple!"
response.write Replace(strTest, "apple", "orange")
%>
RESULT: This is an orange!

Right()
FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符).
SYNTAX: Right(string, length)
ARGUMENTS: .
EXAMPLE: < %
strTest = "This is an test!"
response.write Right(strTest, 3)
%>
RESULT: st!

Rnd()
FUNCTION: 产生一个随机数.
SYNTAX: Rnd [ (number) ]
ARGUMENTS:
EXAMPLE: < %
Randomize()
response.write RND()
%>
RESULT: 任何一个在0 到 1 之间的数

Round()
FUNCTION: 返回按指定位数进行四舍五入的数值.
SYNTAX: Round(expression [, numRight])
ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则
Round 函数返回整数.
EXAMPLE: < %
i = 32.45678
response.write Round(i)
%>
RESULT: 32

Rtrim()
FUNCTION: 去掉字符串右边的字符串.
SYNTAX: Rtrim(string)
ARGUMENTS:
EXAMPLE: < %
strTest = "This is a test!! "
response.write RTrim(strTest)
%>
RESULT: This is a test!!

Second()
FUNCTION: 返回秒.
SYNTAX: Second(time)
ARGUMENTS: .
EXAMPLE: < %=Second(#12:34:28 PM#)%>
RESULT: 28

StrReverse()
FUNCTION: 反排一字符串
SYNTAX: StrReverse(string)
ARGUMENTS:
EXAMPLE: < %
strTest = "This is a test!!"
response.write StrReverse(strTest)
%>
RESULT: !!tset a si sihT

Time()
FUNCTION: 返回系统时间.
SYNTAX: Time()
ARGUMENTS: .
EXAMPLE: < %=Time%>
RESULT: 9:58:28 AM

Trim()
FUNCTION: 去掉字符串左右的空格.
SYNTAX: Trim(string)
ARGUMENTS: string is any valid string expression.
EXAMPLE: < %
strTest = " This is a test!! "
response.write Trim(strTest)
%>
RESULT: This is a test!!

UBound()
FUNCTION: 返回指定数组维数的最大可用下标.
SYNTAX: Ubound(arrayname [, dimension])
ARGUMENTS: ; dimension (optional) 指定返回哪一维上界的整数。1 表示第一
维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1.
EXAMPLE: < %
i = Array("Monday","Tuesday","Wednesday")
response.write UBound(i)
%>
RESULT: 2

UCase()
FUNCTION: 返回字符串的大写形式.
SYNTAX: UCase(string)
ARGUMENTS:
EXAMPLE: < %
strTest = "This is a test!!"
response.write UCase(strTest)
%>
RESULT: THIS IS A TEST!!

VarType()
FUNCTION: 返回指示变量子类型的值
SYNTAX: VarType(varName)
ARGUMENTS:
EXAMPLE: < %
i = 3
response.write varType(i)
%>
RESULT: 2(数字)详见"asp常数"

WeekDay()
FUNCTION: 返回在一周的第几天.
SYNTAX: WeekDay(date [, firstdayofweek])
ARGUMENTS: .
EXAMPLE: < %
d = #8/4/99#
response.write Weekday(d)
%>
RESULT: 4(星期三)

WeekDayName()
FUNCTION: 返回一周第几天的名字.
SYNTAX: WeekDayName(weekday [, Abb ][, firstdayofweek]])
ARGUMENTS: Abb可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省
略, 默认值为 False,即不缩写星期各天的名称.firstdayofweek指明星期第一天的
数值
EXAMPLE: < %
d = #8/4/99#
response.write WeekdayName(Weekday(d))
%>
RESULT: Wednesday

Year()
FUNCTION: 返回当前的年份.
SYNTAX: Year(date)
ARGUMENTS:
EXAMPLE: < %=Year(#8/4/99#)%>
RESULT: 1999

本文来自: 参考资料之ASP函数

SQL大全

<Category: 技术回收站> 发表评论

–语 句 功 能
–数据操作
Select –从数据库表中检索数据行和列
Insert –向数据库表添加新数据行
Delete –从数据库表中删除数据行
Update –更新数据库表中的数据
–数据定义
Create TABLE –创建一个数据库表
Drop TABLE –从数据库中删除表
Alter TABLE –修改数据库表结构
Create VIEW –创建一个视图
Drop VIEW –从数据库中删除视图
Create INDEX –为数据库表创建一个索引
Drop INDEX –从数据库中删除索引
Create PROCEDURE –创建一个存储过程
Drop PROCEDURE –从数据库中删除存储过程
Create TRIGGER –创建一个触发器
Drop TRIGGER –从数据库中删除触发器
Create SCHEMA –向数据库添加一个新模式
Drop SCHEMA –从数据库中删除一个模式
Create DOMAIN –创建一个数据值域
Alter DOMAIN –改变域定义
Drop DOMAIN –从数据库中删除一个域
–数据控制
GRANT –授予用户访问权限
DENY –拒绝用户访问
REVOKE –解除用户访问权限
–事务控制
COMMIT –结束当前事务
ROLLBACK –中止当前事务
SET TRANSACTION –定义当前事务数据访问特征
–程序化SQL
DECLARE –为查询设定游标
EXPLAN –为查询描述数据访问计划
OPEN –检索查询结果打开一个游标
FETCH –检索一行查询结果
CLOSE –关闭游标
PREPARE –为动态执行准备SQL 语句
EXECUTE –动态地执行SQL 语句
DESCRIBE –描述准备好的查询
—局部变量
declare @id char(10)
–set @id = '10010001'
select @id = '10010001'
—全局变量
—必须以@@开头

–IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print 'x > y' –打印字符串'x > y'
else if @y > @z
print 'y > z'
else print 'z > y'

–CASE
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end

–WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@x + @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end

--WAITFOR
--例 等待1 小时2 分零3 秒后才执行Select 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行Select 语句
waitfor time ’23:08:00’
select * from employee

***Select***

select *(列名) from table_name(表名) where column_name operator value
ex:(宿主)
select * from stock_information where stockid = str(nid)
stockname = 'str_name'
stockname like '% find this %'
stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
stockname like '[^F-M]%' --------- (^排除指定范围)
--------- 只能在使用like关键字的where子句中使用通配符)
or stockpath = 'stock_path'
or stocknumber < 1000
and stockindex = 24
not stocksex = 'man'
stocknumber between 20 and 100
stocknumber in(10,20,30)
order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
order by 1,2 --------- by列号
stockname = (select stockname from stock_information where stockid = 4)
--------- 子查询
--------- 除非能确保内层select只返回一个行的值,
--------- 否则应在外层where子句中用一个in限定符
select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
select stockname , "stocknumber" = count(*) from table_name group by stockname
--------- group by 将表按行分组,指定列中有相同的值
having count(*) = 2 --------- having选定指定的组

select *
from table1, table2
where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
table1.id =* table2.id -------- 右外部连接

select stockname from table1
union [all] ----- union合并查询结果集,all-保留重复行
select stockname from table2

***insert***

insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
value (select Stockname , Stocknumber from Stock_table2)---value为select语句

***update***

update table_name set Stockname = "xxx" [where Stockid = 3]
Stockname = default
Stockname = null
Stocknumber = Stockname + 4

***delete***

delete from table_name where Stockid = 3
truncate table_name ----------- 删除表中所有行,仍保持表的完整性
drop table table_name --------------- 完全删除表

***alter table*** --- 修改数据库表结构

alter table database.owner.table_name add column_name char(2) null .....
sp_help table_name ---- 显示表已有特征
create table table_name (name char(20), age smallint, lname varchar(30))
insert into table_name select ......... ----- 实现删除列的方法(创建新表)
alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束

***function(/*常用函数*/)***

----统计函数----
AVG --求平均值
COUNT --统计数目
MAX --求最大值
MIN --求最小值
SUM --求和

--AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id

--MAX
--求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =
(select max(e_wage)
from employee)

--STDEV()
--STDEV()函数返回表达式中所有数据的标准差

--STDEVP()
--STDEVP()函数返回总体标准差

--VAR()
--VAR()函数返回表达式中所有值的统计变异数

--VARP()
--VARP()函数返回总体变异数

----算术函数----

/***三角函数***/
SIN(float_expression) --返回以弧度表示的角的正弦
COS(float_expression) --返回以弧度表示的角的余弦
TAN(float_expression) --返回以弧度表示的角的正切
COT(float_expression) --返回以弧度表示的角的余切
/***反三角函数***/
ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2)
--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
--把弧度转换为角度返回与表达式相同的数据类型可为
--INTEGER/MONEY/REAL/FLOAT 类型
RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为
--INTEGER/MONEY/REAL/FLOAT 类型
EXP(float_expression) --返回表达式的指数值
LOG(float_expression) --返回表达式的自然对数值
LOG10(float_expression)--返回表达式的以10 为底的对数值
SQRT(float_expression) --返回表达式的平方根
/***取近似值函数***/
CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为
–INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression) –返回< =表达式的最小整数返回的数据类型与表达式相同可为
--INTEGER/MONEY/REAL/FLOAT 类型
ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据
--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为
--INTEGER/MONEY/REAL/FLOAT 类型
SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
PI() --返回值为π 即3.1415926535897936
RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数

----字符串函数----
ASCII() --函数返回字符表达式最左端字符的ASCII 码值
CHAR() --函数用于将ASCII 码转换为字符
--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
LOWER() --函数把字符串全部转换为小写
UPPER() --函数把字符串全部转换为大写
STR() --函数把数值型数据转换为字符型数据
LTRIM() --函数把字符串头部的空格去掉
RTRIM() --函数把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串
CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
SOUNDEX() --函数返回一个四位字符码
--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值
DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
--0 两个SOUNDEX 函数返回值的第一个字符不同
--1 两个SOUNDEX 函数返回值的第一个字符相同
--2 两个SOUNDEX 函数返回值的第一二个字符相同
--3 两个SOUNDEX 函数返回值的第一二三个字符相同
--4 两个SOUNDEX 函数返回值完全相同

QUOTENAME() --函数返回被特定字符括起来的字符串
/*select quotename('abc', '{') quotename('abc')
运行结果如下
----------------------------------{
{abc} [abc]*/

REPLICATE() --函数返回一个重复character_expression 指定次数的字符串
/*select replicate('abc', 3) replicate( 'abc', -2)
运行结果如下
----------- -----------
abcabcabc NULL*/

REVERSE() --函数将指定的字符串的字符排列顺序颠倒
REPLACE() --函数返回被替换了指定子串的字符串
/*select replace('abc12', '123', 'def')
运行结果如下
----------- -----------
abcdefg*/

SPACE() --函数返回一个有指定长度的空白字符串
STUFF() --函数用另一子串替换字符串指定位置长度的子串

----数据类型转换函数----
CAST() 函数语法如下
CAST() ( AS [ length ])
CONVERT() 函数语法如下
CONVERT() (
[ length ], [, style])

select cast(100+99 as char) convert(varchar(12), getdate())
运行结果如下
—————————— ————
199 Jan 15 2000

—-日期函数—-
DAY() –函数返回date_expression 中的日期值
MONTH() –函数返回date_expression 中的月份值
YEAR() –函数返回date_expression 中的年份值
DATEADD( , ,)
–函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
DATEDIFF( , ,)
–函数返回两个指定日期在datepart 方面的不同之处
DATENAME( , ) –函数以字符串的形式返回日期的指定部分
DATEPART( , ) –函数以整数值的形式返回日期的指定部分
GETDATE() –函数以DATETIME 的缺省格式返回系统当前的日期和时间

—-系统函数—-
APP_NAME() –函数返回当前执行的应用程序的名称
COALESCE() –函数返回众多表达式中第一个非NULL 表达式的值
COL_LENGTH(< 'table_name'>, < 'column_name'>) –函数返回表中指定字段的长度值
COL_NAME(
,
) –函数返回表中指定字段的名称即列名
DATALENGTH() –函数返回数据表达式的数据的实际长度
DB_ID(['database_name']) –函数返回数据库的编号
DB_NAME(database_id) –函数返回数据库的名称
HOST_ID() –函数返回服务器端计算机的名称
HOST_NAME() –函数返回服务器端计算机的名称
IDENTITY([, seed increment]) [AS column_name])
–IDENTITY() 函数只在Select INTO 语句中使用用于插入一个identity column列到新表中
/*select identity(int, 1, 1) as column_name
into newtable
from oldtable*/
ISDATE() –函数判断所给定的表达式是否为合理日期
ISNULL(, ) –函数将表达式中的NULL 值用指定值替换
ISNUMERIC() –函数判断所给定的表达式是否为合理的数值
NEWID() –函数返回一个UNIQUEIDENTIFIER 类型的数值
NULLIF(, )
–NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值

——————————————————————————–

sql中的保留字

action add aggregate all
alter after and as
asc avg avg_row_length auto_increment
between bigint bit binary
blob bool both by
cascade case char character
change check checksum column
columns comment constraint create
cross current_date current_time current_timestamp
data database databases date
datetime day day_hour day_minute
day_second dayofmonth dayofweek dayofyear
dec decimal default delayed
delay_key_write delete desc describe
distinct distinctrow double drop
end else escape escaped
enclosed enum explain exists
fields file first float
float4 float8 flush foreign
from for full function
global grant grants group
having heap high_priority hour
hour_minute hour_second hosts identified
ignore in index infile
inner insert insert_id int
integer interval int1 int2
int3 int4 int8 into
if is isam join
key keys kill last_insert_id
leading left length like
lines limit load local
lock logs long longblob
longtext low_priority max max_rows
match mediumblob mediumtext mediumint
middleint min_rows minute minute_second
modify month monthname myisam
natural numeric no not
null on optimize option
optionally or order outer
outfile pack_keys partial password
precision primary procedure process
processlist privileges read real
references reload regexp rename
replace restrict returns revoke
rlike row rows second
select set show shutdown
smallint soname _big_tables _big_selects
sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
sql_small_result sql_big_result sql_warnings straight_join
starting status string table
tables temporary terminated text
then time timestamp tinyblob
tinytext tinyint trailing to
type use using unique
unlock unsigned update usage
values varchar variables varying
varbinary with write when
where year year_month zerofill

本文来自: SQL大全

网页制作中一些常用的辅助代码

<Category: 技术回收站> 发表评论

点击返回上页代码:

弹出警告框代码:

点击打开新窗口

删除记录时弹出确认框:

关闭打开的窗口
< a href="/" onclick="javascript:window.close(); return false;">关闭窗口

清空INPUT且选定
onClick="Javascript:this.value=''" onFocus="this.select()" onMouseOver="this.focus()"

右键屏蔽

连串英文自动换行的解决方法 IE5.5
style="LEFT: 0px; WIDTH: 100%; WORD-WRAP: break-word" 你可修改为指定的大小如 200px

图片“重置”按钮

画细线表格

状态栏信息

最小化、最大化、关闭窗口


本例适用于IE

隐藏状态栏里出现的LINK信息
梦想天空

文本框自动滚动条

全选并复制


屏蔽JAVASCRIPT错误

关闭子窗口时刷新父窗口

背景色变换

检查一段字符串是否全由数字组成

判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");

点击刷新代码:

让层不被控件复盖代码:

# 前面

# 后面

让层的相对定位

内容

Flash代码以及背景透明

Windows Media Player 播放器
style="LEFT: 0px; VISIBILITY: visible; POSITION: absolute; TOP: 0px;z-index:2"
codeBase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=

Loading
type=application/x-oleobject height=300 width=320
classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 VIEWASTEXT>

RealPlayer 播放器
width=320 height=240 align="middle"> type="audio/x-pn-realaudio-plugin" console="chip1"
controls="imagewindow" width=320 height=240 autostart=true align="middle">

本文来自: 网页制作中一些常用的辅助代码

ASP编程常用的代码(一)

<Category: 技术回收站> 发表评论

1. ASP与Access数据库连接:

< %
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
%>

2. ASP与SQL数据库连接:

< %
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

建立记录集对象:

set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2

3. SQL常用命令使用方法:

(1) 数据记录筛选:

="select * from 数据表 where 字段名=字段值 order by 字段名 "
sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 "
sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:

Create TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:Create TABLE tab01(name varchar(50),datetime default now())

Drop TABLE 数据表名称 (永久性删除一个数据表)

(6) 记录集对象的方法:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

判断所填数据是数字型

if not isNumeric(request("字段名称")) then
response.write "不是数字"
else
response.write "数字"
end if

本文来自: ASP编程常用的代码(一)

页码: 1 2 3 下一页