Photoshop开门十件事

1月 1st, 2001

Adobe Photoshop是目前最流行的平面设计软件之一。可以说,只要你接触平面设计,那么无论早晚,你都要和它打交道。关于Photoshop,要说的实在太多太多,但不论你想让它成为你的左膀右臂,或者仅仅是用它来做一些最基础的图像处理工作,那么下面的10件事都是你一定要知道的,无论你是个初学者或是已经对它有了一定的了解。

  1.快捷键的使用:这是Photoshop基础中的基础,却也是提高工作效率的最佳方法。快捷键的使用,使你可以将精力更好的集中在你的作品而不是工具面板上。一旦你能够熟练的使用快捷键,你就可以使用全屏的工作方式,省却了不必要的面板位置,使视野更开阔,最大限度的利用屏幕空间;一些简单的命令可以用键盘来完成,不必分心在工具的选择上,哪怕它只占用了极少的时间,但我们更希望在工作时不被打断。

  注意:你应该尽量多使用快捷键,下面的这些快捷键是提高效率的好帮手,但不知为什么很多书中都一带而过,甚至没有提及,请一定要牢牢记住。

  Ctrl+J:复制当前图层到一个新层;

  J:切换到喷枪工具;

  M:切换到选框工具;

  [ ]:在当前工具为画笔模式时(包括喷枪、画笔、铅笔、仿制图章历史画笔、橡皮及模糊和加深等工具),依次增减笔头大小;

  Shift+BackSpace:调出填充对话框。

  一开始,你可能无法记住所有的快捷键,可以使用Photoshop的工具提示来帮助你。方法是打开编辑>预置>常规,选择“显示工具提示”。这样,当你把鼠标移动到工具面板上时,工具名称和其快捷键就会出现,直到你移走鼠标才会消失。

  2.无接缝贴图:无论是对3D图像或是网页的制作,无接缝贴图都是很重要的,我们可以在Photoshop中轻易的完成。定制好你的图像后,运行滤镜>其它>位移,在水平和垂直方向上位移,一般设置位移量为图像大小的一半,最重要的是将未定义区域设为折回。在完成位移之后,用橡皮图章工具在图像的拼合处涂抹,消除接缝,然后将图像定义为图案。用这种图案填充,就可以得到无缝的背景图像。

  3.为常用的组合命令定制动作:在处理图像的时侯,很多情况下我们都会用到组合命令。譬如,需要将一个多层图像的文档移动到另一个文档中。最快捷且安全的方法是:新建一层Shift+CTRL+N;拼合以下所有可见图层Shift+Alt+CTRL+E;选择全部图像Ctrl+A;复制CTRL+C;取消选择Ctrl+D;删除当前图层。这组命令是为图像建立一个映象,它包含了当前层之下的所有可见层图像,这时你的剪贴板上已经留下了图像的内容,只要把它粘贴在需要的文档中就可以了。这是个很典型的例子,尽管你可以使用一系列的快捷键来完成这组命令,但还是推荐把它储存为一个动作,在动作选项面板中,你可以为这个动作设置一个方便的功能键,如Shift+F2,这样你随时调用,非常方便,尤其是将图像从Photoshop导入到其它应用程序中的时侯,节约的时间相当可观!Shift,Control和F2到F12这些不同的组合,可以定义不少的动作,大幅度的提高效率。

  4.自动选择图层:相当不起眼的一个小动作,却非常又用,特别是在一些多图层的大型文件中,即使规规矩矩的为每个图层命令,按顺序叠放图层,在选择时也是较为麻烦的——你可能会记不清它们分属哪些图层,而错误操作的后果有时是很可怕的。这时,你可以先选择移动工具,在工具选项中勾选“自动选择图层”,这样,除了切片工具、路径组件选择工具、钢笔工具和抓手工具外,工具箱中的其它工具为当前所选时,按住Ctrl键的同时,当前工具都会暂时变成移动工具,点击画布上的任意对象,Photoshop都会自动转到其所在图层,这样就可以进行操作了。在当前为移动工具时,即使不选择自动选择图层,只要按住Ctrl键,同样可以自由的选择分属不同层的图像内容。

  5.创建自定义笔刷:在Photoshop中有一项很有用但未被大多数人充分利用的资源,那就是创建自定义笔刷。新建一个文档,大小为要制作的笔刷大小,用黑色(也可以是彩色或不同的灰度,但这样制出的画笔颜色会较淡)绘制你的画笔图像,如一朵小花,几颗小树等等。然后用矩形选框选择,定义为新的画笔。如果没有选择,那么Photoshop会把画布上全部图像定义为画笔。这样,你就可以用这些自定义的画笔创作各种独特的图像了,特别是一些边框等装饰性的图案。

  6.镜头光晕效果:在初级的图像处理中,镜头光晕可说是最常用的修饰效果之一。一般情况下,你可以直接在图像中使用滤镜>渲染>镜头光晕,来为图像增加气氛。那么,如果你对某一次的镜头光晕效果非常满意,希望把它保存下来,我们可以利用图层混合的特性。事先在图像上新建一层,用黑色填充,再执行镜头光晕滤镜,然后将这一层的图层混合模式设为“屏幕”,这样,黑色被隐去,你会得到单独的光晕效果图层。不过,这个方法唯一的缺点是,不能在白色的图像上显示。

  7.光照效果滤镜:这个滤镜给人最大的惊喜在于它可以创作出各种各样逼真的纹理效果。最简单的用法是:将一个简单的纹理放置一个通道中,然后对某一层应用滤镜>渲染>光照效果,在纹理通道中选择刚才存储纹理的通道,调整各种相应的光照设置,这样就能得到具有立体感的纹理效果。

  8.使用调整图层:谁也没有把握能够一次就将图像调整的十分完美,所以,除了养成良好的备份习惯之外,最好是能使用调整图层的时侯尽量使用调整图层。你可能会觉得麻烦,但这点麻烦和图像损坏的损失比较起来就微乎其微了。而且更重要的是,你可以在创作过程中随时做出新的调整而不必担心图像的损坏。

  9.快速复制技巧:在同一个文档中,确定当前为移动工具(或暂时为移动工具),按下Alt键的同时,拖移对象,即可复制,按住Shift键,可保证按45度角的倍数移动;在不同的文档间,移动时按住Shift键,如果两个文档的大小相同,则对象复制到新文档的相同的位置,如果文档大小不同,那么对象被复制到新文档的正中。用这种方法复制,不但方便,也可以减少剪贴板的使用,进一步节省系统资源。

  10.成果的积累:当你使用Photoshop一段时间以后,一定会存下来不少好东东。如你千辛万苦调制的渐变、等高线、样式等,还包括一些方便工作的色板等。这些只是暂时保存在Photoshop中的,一旦重装,Photoshop将会恢复到默认状态,变得清洁溜溜,这些自定义的东西会消失的无影无踪。这不但可惜,还会影响到你的工作(如定义好的色板丢失)。所以,最好每有得意之作的时侯就用预设管理器保存下来,存放在专门的文件夹中。预设管理器可以保存画笔、色板、渐变、样式、图案、等高线、自定义形状,这样你的工作成果一样也不会丢失。重装之后,用相应的文件覆盖就可回到熟悉的工作环境中了。 

ASP常用的函数和说明(转)

11月 24th, 2000

1.函数array()
功能:创建一个数组变量
格式:array(list)
参数:list 为数组变量中的每个数值列,中间用逗号间隔
例子:
<% i = array ("1","2","3") %>
结果: i 被赋予为数组

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

3.函数:Creatobject()
功能:创建及返回一个ActiveX对象.
格式:Creatobject(obname)
参数bname 是对象的名称
例子:
<%
Set con = Server.CreateObject("ADODB.Connection")
%>
结果:

4.函数cStr()
功能:将一表达式/其它类型的变量转换成字符类型(string)
格式:cStr(expression)
参数:expression是任何有效的表达式/其它类型的变量
例子:
<%
s = 3 + 2
response.write "The result is:" & cStr(s)
%>
结果:函数cStr()将整数 5 转换 成字符"5".

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

6.函数Dateadd()
功能:计算某个指定的时间和
格式: dateadd(timeinterval,number,date)
参数:timeinterval是时间单位(月,日..); number是时间间隔值,date是时间始点.
例子:
<%
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
%>
结果:
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 是任意选项.
例子:
<%
fromDate = #8/4/99#
toDate = #1/1/2000#
response.write "There are " & _
DateDiff("d",fromDate,toDate) & _
" days to millenium from 8/4/99."
%>
结果:There are 150 days to millenium from 8/4/99.

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

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

10.函数formatdatetime()
功能:格式化日期表达式/变量
格式: formatdatetime(date[,nameformat])
参数: date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称.
例子:
<% =formatdatetime("08/04/99",vblongdate) %>
结果:Wednesday,August 04,1999
说明:
<script language=vbs>
for i=0 to 4
alert(" formatdatetime(now,"&i&") 的时候是:"&formatdatetime(now,i))
next
</script>
描述
返回表达式,此表达式已被格式化为日期或时间。
语法
formatDateTime(Date[, Namedformat])
formatDateTime 函数的语法有以下参数:

参数 描述
Date 必选项。要被格式化的日期表达式。
Namedformat 可选项。指示所使用的日期/时间格式的数值,如果省略,则使用 vbGeneralDate。

设置
Namedformat 参数可以有以下值:
常数 值 描述
vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分。
vbLongDate 1 使用计算机区域设置中指定的长日期格式显示日期。
vbShortDate 2 使用计算机区域设置中指定的短日期格式显示日期。
vbLongTime 3 使用计算机区域设置中指定的时间格式显示时间。
vbShortTime 4 使用 24 小时格式 (hh:mm) 显示时间。

说明
下面例子利用 formatDateTime 函数把表达式格式化为长日期型并且把它赋给 MyDateTime:
<%
Function GetCurrentDate
"formatDateTime 把日期型格式化为长日期型。
GetCurrentDate = formatDateTime(Date, 1)
End Function
%>
<script language=vbs>
for i=0 to 4
alert(" formatdatetime(now,"&i&") 的时候是:"&formatdatetime(now,i))
next
</script>

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

12.函数Isobject()
功能:返回一个布尔值,判断变量是否为对象的变量,
格式: isobject(expression)
参数: expression 是任意的变量.
例子:
<%
set con =server.creatobject("adodb.connection")
response.write isobject(con)
%>
结果: true

13.函数:Lbound()
功能:返回一个数组的下界.
格式:Lbound(arrayname[,dimension])
参数:arrayname 是数组变量,dimension 是任意项
例子:
<%
i = array("1","2","3")
response.write lbound(i)
%>
结果:0

14.函数Lcase()
功能:将一字符类型变量的字符全部变换小写字符.
格式:Lcase(string)
参数:string是字符串变量
例子:
<%
str="THIS is Lcase!"
response.write Lcase(str)
%>
结果:this is lcase!

15.函数left()
功能:截取一个字符串的前部分;
格式:left(string,length)
参数:string字符串,length截取的长度.
例子:
<% =left("this is a test!",6) %>
结果:this i

16.函数len()
功能:返回字符串长度或者变量的字节长度
格式:len(string *varname)
参数:string字符串;varname任意的变量名称
例子:
<%
strtest="this is a test!"
response.write len(strtest)
%>
结果:15

17.函数ltrim()
功能:去掉字符串前的空格.
格式:ltrim(string)
参数:string 字符串.
例子:
<% =ltrim(" this is a test!") %>
结果:this is a test!

18.函数Mid()
功能:从字符串中截取字符串.
格式:mid(string,start [,length])
参数:string字符串,start截取的起点,length要截取的长度.
例子:
<%
strtest="this is a test, Today is Monday!"
response.write mid(strtest,17,5)
%>
结果:Today

19.函数minute()
功能:返回一数值, 表示分钟
格式:minute(time)
参数: time是时间变量
例子:
<% =minute(#12:23:34#) %>
结果:23

20.函数month()
功能:返回一数值, 表示月份
格式:month(time)
参数:time是日期变量
例子:
<% =month(#08/09/99) %>
结果:9

21.函数monthname()
功能:返回月份的字符串(名称).
格式:Monthname(date [,abb])
参数: date是日期变量,abb=true时 则月份的缩写,
例子:
<% =monthname(#4/5/99#) %>
结果:April

22.函数Now()
功能:返回系统的当前时间和日期.
格式:now()
参数:无
例子:
<% =now() %>
结果: 05/10/00 8:45:32 pm

23.函数:replace()
功能:在字符串中查找,替代指定的字符串.
格式:replace(strtobesearched,strsearchfor,strreplacewith [,start[,count[,compare]]])
参数:strtobesearched是字符串; strsearchfor是被查找的子字符串;strreplacewith 是用来替代的子字符串.start,count,compare 是任意选项.
例子:
<%
strtest="this is an apple."
response.write replace(strtest,"apple","orange")
%>
结果:this is an orange.

24.函数right()
功能:截取一个字符串的后部分
格式:right(string,length)
参数:string字符串,length截取的长度.
例子:
<%
strtest="this is a test!"
response.write right(strtest,3)
%>
结果:st!

25.函数rnd()
功能:返回一个随机数值
格式:rnd[(number)]
参数:number是任意数值.
例子:
<%
randomize()
response.write rnd()
%>
结果:0/1数值之一,无randomize(), 则不能产生随机数.

26.函数round()
功能:完整数值
格式:round(expression[,numright])
参数:expression数字表达式;numright任意选项.
例子:
<%
i=12.33654
response.write round(i)
%>
结果: 12

27.函数rtrim()
功能:去掉字符串后的空格.
格式:rtrim(string)
参数:string 是字符串
例子:
<%
response.write rtrim("this is a test! ")
%>
结果:this is a test!

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

29.函数strReverse()
功能:返回与原字符串排列逆向的字符串.
格式:strreverse(string)
参数:string是字符串
例子:
<% =strreverse("this is a test!") %>
结果:!tset a si siht

30.函数time()
功能:返回当前系统的时间值.
格式:time()
参数:无
结果:9:58:28 Am

31.函数trim()
功能:删去字符串前,后的空格.
格式:trim(string)
参数:string 字符串.
例子:
<%
strtest=" this is a test! "
response.write trim(strtest)
%>
结果:this is a test!

32.函数UBound()
功能:返回一个数组的上界.
格式:Ubound(expression [,dimension])
参数:expression 是数组表达式/数组变量,dimension 是任意项
例子:
<%
i = array("1","2","3")
response.write ubound(i)
%>
结果: 2

33.函数:UCase()
功能:将一字符类型变量的字符全部变换成大写字符.
格式:Ucase(string)
参数:string是字符串变量
例子:
<%
str="THIS is Lcase!"
response.write Lcase(str)
%>
结果:THIS IS LCASE!

34.函数Vartype()
功能:返回变量的常量代码(整数)
格式:Vartype(varname)
参数:varname是任何类型的变量名称.
例子:
<%
i=5
response.write vartype(i)
%>
结果:2 (2表示整数,须要参考ASP常量代码.)

35.函数Weekday()
功能:返回一个整数,对应一周中的第几天.
格式:Weekday(date [,firstofweek])
参数: date为日期变量,firstofweek为任选项.
例子:
<%
d=#5/9/00#
response.write weekday(d)
%>
结果:3(3 表示是星期二)

36.函数weekdayname()
功能:返回字符串,对应星期几.
格式:weekdayname(weekday[,abb[,firstdayofweek]])
参数:weekday为日期变量,abb,firstdayofweek为任选项.
例子:
<%
d = #8/4/99#
response.write weekdayname(d)
%>
结果: Wednesday

37.函数year()
功能:返回日期表达式所在的年份.
格式:year(date)
参数: date是有效的日期表达式
例子:
<% =year(#8/9/99#) %>
结果:1999

38.函数Mod()
功能:取余数.
例子:
<%
3 Mod 2
%>
结果:1
我先介绍一下Split函数的用法:
返回值数组 = Split("字符串","分割符")

39.split函数的应用
split 是一个分隔字符串的函数,它的作用是把用特定分隔符隔开的字符串转化为一个数组,这在编程中用的比较多,如上传多张图片,在数库中仅能用一个字段存储的情况下,split就起作用了,下面是一个具体的例子,和数组结合使用.
<%
dim str1
str1="icerain|fengling|windbell|"
aryReturn=split(str1,"|")
response.write "返回的是否为数组"&IsArray(aryReturn)
response.write "<br>"
for i=LBound(aryReturn) TO UBound(aryReturn)
response.write aryReturn(i)
response.write "<br>"
next
response.end
%>

40.Rnd()
功能:函数产生一个随机数.
表达式: Rnd [ (number) ]
实例:
<%
Randomize()
response.write RND()
%>

把ACCESS转成SQL数据的方法

1月 30th, 2000

很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考—将ACCESS转化成SQL2000的方法和注意事项

一,首先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望大家多多试验,肯定是有办法的;

二,转换的方法

1,打开”控制面板“下”管理工具“中的”数据库源“;

2,按”添加“添加一个新的数据源,在选择栏里选“Driver do microsoft Access (*.mdb)”,完成后将出现一个框,在“数据库源”里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库地址和选中(注意,请先备份自己的ACCESS数据库),然后确定。数据源在这里建好了,剩下转换了。

3,打开SQL2000企业管理器,进入数据库,新建一个空的数据库“ABC”;

4,选择新建立的数据库,按鼠标右键,选择“所有任务”下“导入数据”,按“下一步”继续;

5,在数据库源下拉但中选择”Driver do microsoft Access(*.mdb)“,在”用户/系统DSN“中,选种你刚才添加的”ABC“,按 ”下一步“;

6,“目的”不需要修改,选择服务器(一般下为自己的本机local,也可以选择服务器地址或者局域网地址,确定你的权限是否可以操作,),使用WINDOWS 身份验证指用自己的系统管理员身份操作,使用SQL身份操作验证可以用于网站的操作,推荐用后者;

7,选上使用SQL身份操作验证后,填写你的用户名和密码,我自己选择的是系统默认号码sa,****,数据库选择刚新建的ABC,按下一步;

8,这一步的两个单项选择,从数据源复制表和视图与用一条查询指令指定要传输的数据,选择前者,按下一步继续;

9,这里将出现你自己ACCESS数据库的表,按全选后,下一步;

10,DTS导入/导出向导,看立即运行被选中按下一步,

11,按完成继续;

12,这个步骤你将看到你的数据被导入SQL2000里面,当出现已经成功把XXX个表导入到数据库的字样,而且所有的表前面都有绿色的勾,就表示成功导入所有数据,如果中途出现问题或者表前面有红色的*的话,说明该表没有成功导入,这时就要回去查看自己的操作是否正确了.

三,数据修改

1,由于SQL2000里面没有自动编号,所以你的以自动编号设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的标示选择是,种子为1,增量为1,

2,另外,ACCESS2000转换成SQL2000后,原来属性为是/否的字段将被转换成非空的bit,这时候你必须修改成自己想要的属性了;

3,另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.

ACCESS转MS SQL数据库的几点经验

1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:delete * from user where id=10,而对SQL SERVER数据库进行删除是用:delete user where id=10.

4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。

Access转SQL Server要注意些什么?
问题:

新手来看:Access转SQL Server要注意些什么?

方法一:

在这里,我们谈论的是 Access 开发的升级,如何升级到 SQL Server 2000。你有几种升级方法可以选择。

1、你可以采用链接表方式,通过链接表链接到 SQL SERVER 2000 中的表。原先在 ACCESS 中开发的程序基本无需更改,除非你要更改数据结构。

2、你可以采用 ADP 的方式升级数据库,ADP 方式基本抛弃了原先 MDB 大多数模式。你必须适应新的数据结构,接受 JET SQL 编写的查询变成 T-SQL 编写的存储过程、视图等等对象的结果。也就是说你必须重新学习 T-SQL 。

方法二:

给你一些我的经验吧。反正access到sqlserver的移植是很痛苦的,我弄过好几次了。
希望大家能补充一下。

1.数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用
decimal。

2.所有的默认值都丢失了。主要是数字类型和日期类型。

3.所有now(),time(),date()要改成getdate()。

4.所有datediff('d', time1, time2)要改成datediff(day, time1, time2)

5.有可能一些true/false类型不能使用,要变为1/0。

6.备注类型要通过cast(column as varchar)来使用。UploadFiles/2005-12/1222208225.rar

7.CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能
显示不完整。

8.isnull(rowname)要改成rowname = null

方法三:

1.ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!

2.转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete * from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10".

4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对
SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用

安装任何软件都提示不能访问windows Installer服务的解决办法

1月 7th, 2000

现在安装软件时提示:不能访问windows Installer服务,可能是你在安全模式下运行windows或者windows Installer 没有正确地安装,请和你的支持人员联是以获得帮助。导致任何的软件都无法安装和卸载。

    我的[服务]项目里的windows Installer服务的启动方式是手动,单击[启动]按钮后又蹦出来:”在本地计算机无法启动windows Installer服务,错误997:重叠I/O操作在进行中”的提示框。

图1

图2

一、微软Windows Installer 组件介绍:
    微软Windows Installer作为Win2K/WinXP的组件之一,是专门用来管理和配置软件服务的工具。在Win95、Win98、WinMe与WinNT4,0下,作为额外的产品提供,允许用户有效地安装与配置软件产品与应用程序。新的Installer提供给软件产品新的特性,例如使用命令行安装产品、增加了用户的可定制性。
    Windows Installer 软件安装技术。该技术包括适用于 32 位 Windows 操作系统的 Windows Installer 服务器,以及一个用于存储有关配置和安装信息的新软件包文件格式。
    Windows Installer 不仅仅是一个安装程序,它还是一个可扩展的软件管理系统。Windows Installer 管理软件的安装,管理软件组件的添加和删除,监视文件复原,并通过使用回滚来维护基本的灾难恢复。
    此外,Windows Installer 还支持从多个源安装和运行软件,并且可以由要安装自定义程序的开发人员定制。

二、Windows Installer 的功能包括:
   

  • 在安装失败时将计算机还原为原始状态:Windows Installer 跟踪在程序安装过程中对系统进行的所有更改。如果安装失败,Installer 可以将系统恢复到其初始状态。这称为”回滚”。

   

  • 帮助防止特定形式的程序之间产生冲突:正在安装或卸载的程序可能会导致计算机上已安装的另一个程序出现问题,甚至导致计算机停止响应(挂起)。Installer 可以强制实施一些安装规则,以帮助防止当安装操作更新由现有程序共享的动态链接库 (DLL) 文件时,或当卸载操作删除由另一个程序共享的 DLL 文件时出现冲突。

   

  • 诊断并修复损坏的程序:程序可以要求 Installer 确定已安装的程序是否缺少文件,或者文件是否已损坏。然后,它可以要求该服务根据需要再次只复制已发现丢失或损坏的文件来修复该程序。

   

  • 可靠地卸载现有程序:Installer 可以可靠地卸载以前安装的任何程序,并删除所有相关联的注册表条目和程序文件,但其他已安装的软件所共享的文件及注册表条目除外。

   

  • 支持按需安装程序功能:可以指示 Installer 首先安装程序的最小子集。之后,在您首次使用需要附加组件的功能时,会自动安装附加组件。

   

  • 支持无人参与的程序安装:Installer 支持根据管理员的指令使用脚本来安装程序。

    Windows Installer 技术分为以下两部分,它们结合在一起工作:客户端安装服务 (Msiexec.exe) 和 Microsoft 软件安装 (MSI) 软件包文件。Windows Installer 使用软件包文件中包含的信息安装程序。
    Msiexec.exe 程序是 Windows Installer 的一个组件。当安装程序调用 Msiexec.exe 时,它使用 Msi.dll 读取软件包 (.msi) 文件,应用任何转换 (.mst) 文件,并合并安装程序所提供的命令行选项。Installer 执行所有与安装有关的任务,包括将文件复制到硬盘、修改注册表、在桌面上创建快捷方式,以及在必要时显示对话框以提示用户输入安装首选项。
    在计算机上安装 Windows Installer 后,它将更改注册的 .msi 文件的文件类型,以便当您双击 .msi 文件时,将运行 Msiexec.exe。
    每个 MSI 软件包文件都包含一个关系类型的数据库,用于存储在各种安装方案中安装(或卸载)该程序所需的指令和数据。

三、Windows Installer出错的解决方案
  Windows Installer(windows安装服务)是一种通用的软件发布方式,现在许多软件都使用windows Installer作为自己的安装程序,有时因为各种原因以及windows Installer本身的缺陷,会导致windows Installer出错。

  症状一:删除某个程序后,在运行某些软件时,老会弹出一个”windows正在配置Windows Installer,请稍候”的窗口。
  解决办法:
  1、重新安装Windows Installer,office XP安装盘的根目录有两个名为instmsi.exe和InstMsiW.exe的文件,instmsi.exe用于win9X/Me,InstMsiW.exe用于Win2000/XP;
  2、打开组策略→计算机配置→管理模板→Windows组件→Windows Installer→禁用Windows Installer,只是这样一来,很多软件就有能安装了,此法用于Win2000/XP。
  3、请看本文最后的”终级解决方案”

  症状二:Win2000/XP安装软件时提示”无法访问windows安装程序,服务中windows Installer状态为停止,不能启动”
  解决办法:
  1、命令提示符下输入:misiexec /regserver
  2、在”管理工具”→”服务”中启动windows Installer

  症状三:Win2000/XP安装软件时提示”不能访问Windows Installer服务……”
  解决办法:
  1、检查当前用户有无管理员权限;
  2、结束进程Ikernel,exe后再安装;
  3、删除系统安装目录Program Files\Common Files\InstallShield\Engine下的所有文件再安装。
  4、首先,运行”msiexec /unregserver”,停止Windows Installer服务;
  接着,安装InstMsiW.exe(office XP安装盘的根目录下有,也可以从网上下载,地址为:http://download.microsoft.com/download/WinfowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe),用Winrar解压至设定的目录;进入目录,右键点击msi.inf选”安装”,右键点击mspatcha.inf,选安装;
  最后运行”msiexec /regserver”启用服务。

  症状四:安装软件时提示”系统管理员设置了系统策略,禁止进行此项安装”
  解决办法:
  1、尝试用症状三的解决方法;
  2、打开组策略→用户配置→管理模板→Windows组件→Windows安装服务→将”禁止从媒体安装”设为”禁用”,将”永远以高特权进行安装”设置为”启用”

四、以上问题的终级解决方案:
  下载安装微软提供的Windows Installer CleanUp Utility 1.0,它的主要功能是清除程序的Windows Installer配置信息。启动该工具,它会列出目前系统中所有Windows Installer使用安装的软件,选中出问题的软件,然后点”Remove”按钮即可。
    Windows Installer CleanUp Utility 1.0下载地址:http://www.onlinedown.net/soft/27518.htm

——————–

 windows installer服务解决方案

很多朋友在安装MSI格式的文件包时,经常会遇到windows installer出错的情况,有如下几种现象:

1、所有使用windows installer服务安装的MSI格式程序均不能正常安装,并且系统提示“不能访问windows installer 服务,可能你在安全模式下运行 windows ,或者windows installer 没有正确的安装,请和你的支持人员联系以获得帮助”。

2、察看“windows installer服务”的状态,一般为停用,当你试图启用此服务,会发现此服务已被系统禁用,或则windows installer服务已被标记为删除。

3、如果你重新安装windows installer服务,系统提示“指定的服务已存在”。

当出现了以上现象,是非常令人头疼的,而且问题难以解决,后来经自己研究发现一些非常好的解决方法。

笔者以Windows2000和Windows XP系统为例,根据它们出现的不同问题分别介绍一下解决过程:

一、Windows2000解决过程:

在Windows2000系统中3种现象都是经常出现的。

第一步:点击”开始-->运行“,输入”CMD“命令,在弹出的”CMD命令提示符“窗口中输入”msiexec /unregserver“命令,这样就停掉windows installer服务。

第二步:下载windows installer服务安装程序包,Windows2000/NT系统的安装程序包为”InstMsiW.exe“,Windows98/ME安装程序包为”InstMsiA.exe”,Windows XP系统则集成了最新版本的Windows Installer v2.0。

下载”InstMsiW.exe“安装程序包后,将其用winrar解压开,然后进入到此目录中。

第三步:右键单击”msi.inf“文件,点击”安装“选项,接着右键单击” mspatcha.inf “文件,点击”安装“。

第四步:在CMD命令提示符下输入”msiexec /regserver“命令,这样就启动了windows installer服务,重新启动Windows2000系统后,问题就得到解决。

注意:在安装两个inf文件的过程中,不要重新启动系统,全部操作完成后才能重启,另外,如果系统安装了”瑞星病毒防火墙”和“瑞星网络防火墙”,建议在操作过程中关闭瑞星防火墙。

二、Windows XP解决过程:

Windows XP集成了最新版本的Windows Installer v2.0,但在Windows XP里安装MSI程序也会经常出现”找不到windows installer服务”“的错误。

第一步:使用记事本编写installer.reg文件,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer]

“ImagePath”=-

“ImagePath”=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\

74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,\

00,73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,\

56,00,00,00

然后将文件保存为”.reg“格式,双击该文件,将文件内容导入注册表。

第二步:重新启动电脑进入安全模式(启动时按F8键),然后点击”开始-->运行“,输入”CMD“命令,在弹出的”CMD命令提示符“窗口中输入”msiexec /regserver“,最后重新启动系统即可。

Blueidea经典代码整理

1月 3rd, 2000

没时间弄,改天整理下

页面loading收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1724872&posts=current

代码生成/转换器

http://www.blueidea.com/bbs/newsdetail.asp?id=1724868&posts=current

网页调色板收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1724860&posts=current

网页代码加密/解密收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1724854&posts=current

表格整理。。。

http://www.blueidea.com/bbs/newsdetail.asp?id=1271118&posts=current

表单相关收集。。。

http://www.blueidea.com/bbs/newsdetail.asp?id=1271680&posts=current

头部属性<head>全接触

http://www.blueidea.com/bbs/newsdetail.asp?id=1222175&posts=current

网络音乐播放器收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1724933&posts=current

图片相关的收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1724954&posts=current

超酷的JS时间效果–收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1269509&posts=currentposts

[HTML代码]会移动的文字(Marquee)

http://www.blueidea.com/bbs/newsdetail.asp?id=1222609&posts=current

有关BODY内部参数

http://www.blueidea.com/bbs/newsdetail.asp?id=1725026&posts=current

按纽整理收集。。。。

http://www.blueidea.com/bbs/newsdetail.asp?id=1725032&posts=current

打开新窗口的代码收集

http://www.blueidea.com/bbs/newsdetail.asp?id=1725038&posts=current

页面loading代码收集

1月 3rd, 2000


 提示:您可以先修改部分代码再运行

 提示:您可以先修改部分代码再运行

 提示:您可以先修改部分代码再运行

 提示:您可以先修改部分代码再运行

 提示:您可以先修改部分代码再运行