Regsvr32成功的DLL不能用CreateObject创建类的对象怎么办?

milaoshu1020 2013-03-14 07:54:54
如题,DLL使用VB6自己写的,在有的电脑上能用,有的不能用。
不能用的装有一个专业的VB软件,此VB软件大量的使用了类库和"LibraryName.ClassName"形式的调用方式(主要是用来支持中间件),而这些DLL都放在了此软件指定的目录中并且由某个配置文件控制路径。
这个电脑上的系统自带DLL都可以用CreateObject创建成功,自己写的DLL不能用CreateObject创建。

1 请问如何CreateObject的原理及其会读取哪些注册表信息?
2 请问这种情况下应该如何处理才能修复无法CreateObject的问题?
...全文
3579 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
qdkc5616 2015-12-02
  • 打赏
  • 举报
回复
你是怎么发现是系统uac问题的?我这调了好久,也是这个问题,直到看到你帖子
CrazyBambo_o 2015-08-15
  • 打赏
  • 举报
回复
最近我也遇到这个问题。我试了复制一个Wscript.vbs文件的方法,暂时解决了这个问题。然后还试了彻底关掉UAC,注册表里我确定已经关掉了它,然并卵。总之你的临时性方法可用,关闭UAC无用。 我想问一下,你解决这个问题的方法是什么?
milaoshu1020 2013-04-20
  • 打赏
  • 举报
回复
彻底关闭UAC选项的方法是设置如下键值,并重启主机: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "EnableLUA"=dword:00000000 http://blog.sina.com.cn/s/blog_4ca83f830100nter.html
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
对象名称没有错误。。。真的。 我启动VB运行DLL工程,脚本就可以成功执行CreateObject了。 但是关闭VB后,注册DLL,再运行脚本CreateObject就失败。
东方之珠 2013-03-15
  • 打赏
  • 举报
回复
多半是对象名称错误了。查查你注册的对象名和GUID。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
而且如果使用VB6运行DLL等待部件被创建的话,脚本中是可以CreateObject的。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
刚才又测试了下,发现没有安装那个专业软件的win7x64也无法CreateObject自己编写的VBDLL中的类的对象。
bcrun 2013-03-15
  • 打赏
  • 举报
回复
这个没见过现场还真不好说
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
这招也试过了,不行。
贝隆 2013-03-15
  • 打赏
  • 举报
回复
那就没有办法了,绕不开CreateObject,建议你把该DLL放到别的目录试一试。比如System32下
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
VB里直接引用是没有问题的,我是想在vbs脚本里边用。
神马都能聊 2013-03-15
  • 打赏
  • 举报
回复
引用 18 楼 milaoshu1020 的回复:
AisaC: 多谢你的帮助,要不是你提供了线索,我可能到现在还找不到解决方法呢。。
没啥。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
AisaC: 多谢你的帮助,要不是你提供了线索,我可能到现在还找不到解决方法呢。。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
搞定了,原来是Windows7限制了wscript.exe的执行行为(好像和UAC有关系,不过即使关掉UAC提醒也没用)。 说一下解决方法: 到C:\Windows\SysWOW64目录下,找到wscript.exe, 创建一个备份,命名为wscript2.exe, 然后将vbs文件的打开方式替换为wscript2.exe, 这样就可以使用CreateObject创建和使用自己用VB6写的DLL啦。。yeah~ 如果还有更好的方法,也请告知。
神马都能聊 2013-03-15
  • 打赏
  • 举报
回复
Set test_class = CreateObject("test.class")'(test是工程名,class是类名)
再不济,如果是找不到文件,你在不能创建实例的电脑添加LibraryName所在的完整路径的环境变量试试。按说不会是权限问题,默认注册表内关于AX的注册信息都是User可读取的。 如果还不行,我就不知道怎么弄了。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
试过文档中的方法了,还是不行。。 又试了一下,发现可以在VB中CreateObject,不报错。 但是在vbs脚本中就报错。
神马都能聊 2013-03-15
  • 打赏
  • 举报
回复
引用 10 楼 AisaC 的回复:
你还要保证该DLL文件依赖的文件都在环境中存在且能使用。
引用 11 楼 milaoshu1020 的回复:
这些我都做到了,但就是不能CreatObject,报错内容为:
引用 13 楼 milaoshu1020 的回复:
找到了这篇文档: http://support.microsoft.com/kb/194801/zh-cn
如果你都做到了,你还找这个文档干啥,笑而不语。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
找到了这篇文档: http://support.microsoft.com/kb/194801/zh-cn
神马都能聊 2013-03-15
  • 打赏
  • 举报
回复
1、你先把注册表里你这个文件对应的注册信息都清理掉; 2、重新编译DLL,第一次,以不兼容模式编译; 3、第二次,修改编译模式为二进制兼容模式编译,以后都用二进制兼容模式编译; 4、运行RegSvr32将新编译的文件注册; 5、脚本调用,如果还不行,请参考10L。
milaoshu1020 2013-03-15
  • 打赏
  • 举报
回复
这些我都做到了,但就是不能CreatObject,报错内容为: --------------------------- Windows Script Host --------------------------- Script: C:\Users\SP3D\Desktop\TaskFolder\MoveSymbols.vbs Line: 58 Char: 2 Error: ActiveX component can't create object: 'loadsheet.dom' Code: 800A01AD Source: Microsoft VBScript runtime error --------------------------- OK ---------------------------
加载更多回复(2)
更多请访问http://www.shidai365.cn aspjpeg组件高级使用方法介绍2007-10-13 16:471、什么是AspJpeg?   AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩略图和图片水印,这与其为英文版本有着密切的关系。   AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象,支持的图象格式有:JPEG, GIF, BMP, TIFF, PNG AspJpeg主要可以做到: 生成缩略图片 生成水印图片 图片合并 图片切割 数据库支持 安全码技术 2、AspJpeg功能摘要 支持JPEG, GIF, BMP, TIFF 和 PNG 格式图片. 输出格式始终为 JPEG 源图片可以来源于磁盘、内存、或者记录集(数据库) 缩略图片可以保存到磁盘、内存、或者HTTP流 支持三种更改大小方式: nearest-neighbor, bilinear, and bicubic. 可以在图片之上添加图片或者文字. 支持画中画 支持复制,反转,旋转,锐化,灰度调节. 可以调节压缩比率,以得到最佳输出效果和大小. 从Jpeg图片中抽取EXIF 和 IPTC数据. CMYK-RGB转换 Read/write access to individual pixels of an image. (从图象中对任意象素进行读/写存取。) 3、AspJpeg系统需求 Windows 95/98/NT/2000/XP/2003, and IIS 4.0+ and ASP/ASP.NET, or Visual Basic 5.0+, or Visual C++ 5.0+, or any development environment supporting COM. 4、AspJpeg安装 全新安装: 在AspJpeg安装过程中输入序列号即可,如果安装位置磁盘格式为NTFS,则可能出现访问权限问题,需手工设置安装目录对Everyone有访问权限。 AspJpeg1.6 aspjpeg16.rar 更新安装: 如果之前有装过其它版本的AspJpeg组件,则需要先卸载原来的组件,再进行新版本的安装。 先停止IIS Net Stop iisadmin /y 卸载旧版组件 regsvr32 /u Path/aspjpeg.dl(Path为安装路径) 重启IIS Net Start w3svc 然后再进行全新安装或复制AspJpeg.dll文件到安装目录进行手工安装: regsvr32 Path/aspjpeg.dll(Path为安装路径) 如果在正常安装过程中没有输入序列号或手工安装则必须在注册表中加入以下项,为方便起见您可以直接将以下代码保存为.reg文档并导入注册表: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Persits Software\AspUpload3\RegKey] @="21764-40765-60456" 5、如何创建一个AspJpeg实例? Set Jpeg = Server.CreateObject("Persits.Jpeg") 6、如何查看到期时间(是否注册成功)? Set Jpeg = Server.CreateObject("Persits.Jpeg") Response.Write Jpeg.Expires 注册成功则到期时间为:9999-9-9 否则为:安装日期加1个月期限 7、如何用AspJpeg组件生成图片缩略图? < % Set Jpeg = Server.CreateObject("Persits.Jpeg") '创建实例 Path = Server.MapPath("../images/apple.jpg") '处理图片路径 Jpeg.Open Path '打开图片 '调整宽度和高度为原来的50% Jpeg.Width = Jpeg.OriginalWidth / 2 Jpeg.Height = Jpeg.OriginalHeight / 2 Jpeg.Save Server.MapPath("apple_small.jpg") '保存图片到磁盘 Jpeg.Close:Set Jpeg = Nothing %> 8、如何用AspJpeg组件生成图片水印? < % Set Jpeg = Server.CreateObject("Persits.Jpeg") Jpeg.Open Server.MapPath("images/dodge_viper.jpg") 开始写文字 Jpeg.Canvas.Font.Color = &000000'' red 颜色 Jpeg.Canvas.Font.Family = "Courier New" 字体 Jpeg.Canvas.Font.Bold = True 是否加粗 Jpeg.Canvas.Print 10, 10, "Copyright (c) XYZ, Inc." 打印坐标x 打印坐标y 需要打印的字符 以下是对图片进行边框处理 Jpeg.Canvas.Pen.Color = &H000000'' black 颜色 Jpeg.Canvas.Pen.Width = 2 画笔宽度 Jpeg.Canvas.Brush.Solid = False 是否加粗处理 Jpeg.Canvas.Bar 1, 1, Jpeg.Width, Jpeg.Height 起始X坐标 起始Y坐标 输入长度 输入高度 Jpeg.Save Server.MapPath("images/dodge_viper_framed.jpg") 保存 %> 9、如何用AspJpeg组件进行图片合并? AspJpeg 1.3+ enables you to place images on top of each other via the method DrawImage. To use this method, you must create two instances of the AspJpeg objects and populate both of them with images via calls to Open (or OpenBinary). When calling Canvas.DrawImage, the 2nd instance of AspJpeg is passed as an argument to this method, along with the X and Y offsets (in pixels): 使用该方法,您必需创建两个AspJpeg实例对象 < % Set Jpeg1 = Server.CreateObject("Persits.Jpeg") Set Jpeg2 = Server.CreateObject("Persits.Jpeg") Jpeg1.Open Server.MapPath("t.jpg") Jpeg2.Open Server.MapPath("t1.jpg") Jpeg1.Canvas.DrawImage 10, 10, Jpeg2 ' optional arguments omitted jpeg1.save Server.mappath("tt.jpg") %> 10、如何用AspJpeg组件进行图片切割? AspJpeg 1.1+ is also capable of cutting off edges from, or cropping, the resultant thumbnails via the method Crop(x0, y0, x1, y1). The size of the cropped image is specified by the coordinates of the upper-left and lower-right corners within the resultant thumbnail, not the original large image. < % Set Jpeg = Server.CreateObject("Persits.Jpeg") Jpeg.Open Server.MapPath("t.jpg") jpeg.Crop 20, 30, jpeg.Width - 20, jpeg.Height - 10 jpeg.save Server.mappath("tt.jpg") Response.write("") %> 11、如何用AspJpeg组件创建安全码? 创建安全码原理上和创建水印差不多。 < % function make_randomize(max_len,w_n) 'max_len 生成长度,w_n:0 可能包含字母,1:只为数字 randomize for intcounter=1 to max_len whatnext=int((1-0+1)*rnd+w_n) if whatnext=0 then upper=122 lower=97 else upper=57 lower=48 end if strnewpass=strnewpass & chr(int((upper-lower+1)*rnd)+lower) next make_randomize=strnewpass end function '生成安全码的图片。 random_num=make_randomize(4,1) ''生成4位数字的安全码 session("random_num")=random_num '为么调用session,没有session的安全码是完全没有意义的。呵呵 . Set Jpeg = Server.CreateObject("Persits.Jpeg") '调用组件 Jpeg.Open Server.MapPath("t.jpg") '打开准备的图片 Jpeg.Canvas.Font.Color = &HFFFFFF Jpeg.Canvas.Font.Family = "Arial Black" Jpeg.Canvas.Font.Bold = false Jpeg.Canvas.PrintText 0, -2, random_num jpeg.save Server.MapPath("tt.jpg") '保存 %> 12、如何让AspJpeg组件支援数据库? 图片存进数据库只能以二进制数据保存,这里即利用AspJpeg的Binary方法,下面以两个AspJpeg用户手册上的代码为例,具体请参考AspJpeg用户手册: Opening Images from Memory < % ' Using ADO, open database with an image blob strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/aspjpeg.mdb") Set rs = Server.CreateObject("adodb.recordset") SQL = "select image_blob from images2 where id = " & Request("id") rs.Open SQL, strConnect, 1, 3 Set Jpeg = Server.CreateObject("Persits.Jpeg") ' Open image directly from recordset Jpeg.OpenBinary rs("image_blob").Value ' Resize jpeg.Width = Request("Width") ' Set new height, preserve original aspect ratio jpeg.Height = jpeg.OriginalHeight * jpeg.Width / jpeg.OriginalWidth Jpeg.SendBinary rs.Close %> Output to Memory < % ... Set rs = Server.CreateObject("adodb.recordset") rs.Open "images", strConnect, 1, 3 rs.AddNew rs("image_blob").Value = Jpeg.Binary rs.Update ... %>
AspJpeg  1、AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩略图和图片水印,这与其为英文版本有着密切的关系。   AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象,支持的图象格式有:JPEG, GIF, BMP, TIFF, PNG。   AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、数据库支持、安全码技术   ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出图片的缩略图和为图片加上水印功能。   安装SN:09268-26217-40710   2、AspJpeg功能摘要   支持JPEG, GIF, BMP, TIFF 和 PNG 格式图片. 输出格式始终为 JPEG   源图片可以来源于磁盘、内存、或者记录集(数据库)   缩略图片可以保存到磁盘、内存、或者HTTP流   支持三种更改大小方式: nearest-neighbor, bilinear, and bicubic.   可以在图片之上添加图片或者文字.   支持画中画   支持复制,反转,旋转,锐化,灰度调节.   可以调节压缩比率,以得到最佳输出效果和大小.   从Jpeg图片中抽取EXIF 和 IPTC数据.   CMYK-RGB转换   Read/write access to individual pixels of an image. (从图象中对任意象素进行读/写存取。)   3、AspJpeg系统需求   Windows 95/98/NT/2000/XP/2003, and   IIS 4.0+ and ASP/ASP.NET, or   Visual Basic 5.0+, or   Visual C++ 5.0+, or   any development environment supporting COM.   4、AspJpeg安装   全新安装:   在AspJpeg安装过程中输入序列号即可,如果安装位置磁盘格式为NTFS,则可能出现访问权限问题,需手工设置安装目录对Everyone有访问权限。   更新安装:   如果之前有装过其它版本的AspJpeg组件,则需要先卸载原来的组件,再进行新版本的安装。   先停止IIS   Net Stop iisadmin /y   卸载旧版组件   regsvr32 /u Path/aspjpeg.dl(Path为安装路径)   重启IIS   Net Start w3svc   然后再进行全新安装或复制AspJpeg.dll文件到安装目录进行手工安装:   regsvr32 Path/aspjpeg.dll(Path为安装路径)   如果在正常安装过程中没有输入序列号或手工安装则必须在注册表中加入以下项,为方便起见您可以直接将以下代码保存为.reg文档并导入注册表:   Windows Registry Editor Version 5.00   [HKEY_LOCAL_MACHINE\SOFTWARE\Persits Software\AspUpload3\RegKey]   @="21764-40765-60456"   5、如何创建一个AspJpeg实例?   Set Jpeg = Server.CreateObject("Persits.Jpeg")   6、如何查看到期时间(是否注册成功)?   Set Jpeg = Server.CreateObject("Persits.Jpeg")   Response.Write Jpeg.Expires   注册成功则到期时间为:9999-9-9   否则为:安装日期加1个月期限   7、如何用AspJpeg组件生成图片缩略图?   <%   Set Jpeg = Server.CreateObject("Persits.Jpeg") '创建实例   Path = Server.MapPath("../images/apple.jpg") '处理图片路径   Jpeg.Open Path '打开图片   '调整宽度和高度为原来的50%   Jpeg.Width = Jpeg.OriginalWidth / 2   Jpeg.Height = Jpeg.OriginalHeight / 2   Jpeg.Save Server.MapPath("apple_small.jpg") '保存图片到磁盘   Jpeg.Close:Set Jpeg = Nothing   %>   8、如何用AspJpeg组件生成图片水印?   <%   Set Jpeg = Server.CreateObject("Persits.Jpeg")   Jpeg.Open Server.MapPath("images/dodge_viper.jpg")   开始写文字   Jpeg.Canvas.Font.Color = &000000'' red 颜色   Jpeg.Canvas.Font.Family = "Courier New" 字体   Jpeg.Canvas.Font.Bold = True 是否加粗   Jpeg.Canvas.Print 10, 10, "Copyright (c) XYZ, Inc."   打印坐标x 打印坐标y 需要打印的字符   以下是对图片进行边框处理   Jpeg.Canvas.Pen.Color = &H000000'' black 颜色   Jpeg.Canvas.Pen.Width = 2 画笔宽度   Jpeg.Canvas.Brush.Solid = False 是否加粗处理   Jpeg.Canvas.Bar left, top, right, bottom ' 左,上,右,下   Jpeg.Save Server.MapPath("images/dodge_viper_framed.jpg") 保存   %>   9、如何用AspJpeg组件进行图片合并?   AspJpeg 1.3+ enables you to place images on top of each other via the method DrawImage. To use this method, you must create two instances of the AspJpeg objects and populate both of them with images via calls to Open (or OpenBinary). When calling Canvas.DrawImage, the 2nd instance of AspJpeg is passed as an argument to this method, along with the X and Y offsets (in pixels):   使用该方法,您必需创建两个AspJpeg实例对象   <%   Set Jpeg1 = Server.CreateObject("Persits.Jpeg")   Set Jpeg2 = Server.CreateObject("Persits.Jpeg")   Jpeg1.Open Server.MapPath("t.jpg")   Jpeg2.Open Server.MapPath("t1.jpg")   Jpeg1.Canvas.DrawImage 10, 10, Jpeg2 ' optional arguments omitted   jpeg1.save Server.mappath("tt.jpg")   %>   10、如何用AspJpeg组件进行图片切割?   AspJpeg 1.1+ is also capable of cutting off edges from, or cropping, the resultant thumbnails via the method Crop(x0, y0, x1, y1). The size of the cropped image is specified by the coordinates of the upper-left and lower-right corners within the resultant thumbnail, not the original large image.   <%   Set Jpeg = Server.CreateObject("Persits.Jpeg")   Jpeg.Open Server.MapPath("t.jpg")   jpeg.Crop 20, 30, jpeg.Width - 20, jpeg.Height - 10   jpeg.save Server.mappath("tt.jpg")   Response.write("")   %>   11、如何用AspJpeg组件创建安全码?   创建安全码原理上和创建水印差不多。   <%   function make_randomize(max_len,w_n) 'max_len 生成长度,w_n:0 可能包含字母,1:只为数字   randomize   for intcounter=1 to max_len   whatnext=int((1-0+1)*rnd+w_n)   if whatnext=0 then   upper=122   lower=97   else   upper=57   lower=48   end if   strnewpass=strnewpass & chr(int((upper-lower+1)*rnd)+lower)   next   make_randomize=strnewpass   end function   '生成安全码的图片。   random_num=make_randomize(4,1) ''生成4位数字的安全码   session("random_num")=random_num '为么调用session,没有session的安全码是完全没有意义的。呵呵 .   Set Jpeg = Server.CreateObject("Persits.Jpeg") '调用组件   Jpeg.Open Server.MapPath("t.jpg") '打开准备的图片   Jpeg.Canvas.Font.Color = &HFFFFFF   Jpeg.Canvas.Font.Family = "Arial Black"   Jpeg.Canvas.Font.Bold = false   Jpeg.Canvas.PrintText 0, -2, random_num   jpeg.save Server.MapPath("tt.jpg") '保存   %>      12、如何让AspJpeg组件支援数据库?   图片存进数据库只能以二进制数据保存,这里即利用AspJpeg的Binary方法,下面以两个AspJpeg用户手册上的代码为例,具体请参考AspJpeg用户手册:   Opening Images from Memory   <% ' Using ADO, open database with an image blob   strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db/aspjpeg.mdb")   Set rs = Server.CreateObject("adodb.recordset")   SQL = "select image_blob from images2 where id = " & Request("id")   rs.Open SQL, strConnect, 1, 3   Set Jpeg = Server.CreateObject("Persits.Jpeg")   ' Open image directly from recordset   Jpeg.OpenBinary rs("image_blob").Value   ' Resize   jpeg.Width = Request("Width")   ' Set new height, preserve original aspect ratio   jpeg.Height = jpeg.OriginalHeight * jpeg.Width / jpeg.OriginalWidth   Jpeg.SendBinary   rs.Close   %>   Output to Memory   <%   ...   Set rs = Server.CreateObject("adodb.recordset")   rs.Open "images", strConnect, 1, 3   rs.AddNew   rs("image_blob").Value = Jpeg.Binary   rs.Update   ...   %>   更多方法介绍:   Canvas.Line(Left, Top, Right, Bottom)   画一条直线   Canvas.Ellipse(Left, Top, Right, Bottom)   画出一个椭圆   Canvas.Circle(X, Y, Radius)   画出一个圆   Canvas.Bar(Left, Top, Right, Bottom)   画出一个长方形,上面有代码介绍了   Canvas.Font.ShadowColor   文字阴影颜色   Canvas.Font.ShadowXOffset As Long   阴影X坐标设定   Canvas.Font.ShadowYOffset As Long   Y坐标设定   Canvas.Font.BkMode As String   文字背景
下载说明 拷贝AspUpload.dll和所有.asp和.htm文件到你服务器的任何目录,如c:\AspUploadDir. 注册组件从MS DOS或Start/Run执行命令 REGSVR32 c:\AspUploadDir\AspUpload.dll 为了运行示例脚本,你需要将目录c:\AspUploadDir加入IIS虚拟目录清单中(使用Microsoft Managemant Console)开始 这是我们第一个html文件 Test1.htm



注意 在Form标记的属性 ENCTYPE="multipart/form-data" 他指示浏览器发送整个文件到服务器而不只是输入框内的文件名称。 你必须加上在Form标记内加上这个属性,否则将不能上传组件。让我们现在看看处理上传的脚本: UploadScript1.asp: <% Set Upload = Server.CreateObject("Persits.Upload.1") Count = Upload.Save("c:\upload") %> <% = Count %> files uploaded. 这段脚本的第一行简单创建了一个AspUpload对象的实例。第二行调用组件的真正实现功能的方法Save:处理浏览器传过来的数据,计算有多少文件被上传了,并把它们保存到指定的本地目录。目录名字可以以"\"结尾,也可以不是。所有文件会被以原来的文件名保存在那个目录下。 Save方法返回成功上传文件的数目,万一出错,这个方法将抛出一个例外(Exception),我们现在可以尝试着上载一些文件。注意:你可以使用表单上这3个输入框中的任何一个或者全部。ASPUpload会找出那个输入框是使用了的,而那个是没有使用的。让我们看一看一个例子的文件,test2.htm和UploadScript2.asp
File 1: Description 1:
File 2: Description 2:
UploadScript2.asp <% Set Upload = Server.CreateObject("Persits.Upload.1") Upload.Save "c:\upload" %> Files:
<% For Each File in Upload.Files Response.Write File.Name & "= " & File.Path & " (" & File.Size &")
" Next %>

Otheritems:
<% For Each Item in Upload.Form Response.Write Item.Name & "= " & Item.Value &"
" Next %> 注意:我们的html Form现在有两种输入框,type=file和type=text。因为我们的表单使用了enctype属性,我们可以不再直接通过标准的ASP Request对象方法访问表单变量。 Form集合,由Upload.Form集合来代替。这个集合就等同Request.Form.也就是说,我们可以通过整数或字符串索引访问它的元素,例如:Set Item1 = Upload.Form("DESCR1") 或 Set Item1 = Upload.Form(1). 我们也可以像上面的例子那样使用For-Each语句,遍历集合中的所有元素。Form集合包含的型为FormItem的对象,只有2个字符串的属性,Name和Value(缺省属性) 请记住,upload.Form集合只包括非文件的项目,也就是说非的表单项目。我们还有另外一个集合,叫Files,包含型为UploadFile的对象,代表了从上传的文件。Files很像Form集合,Files集合也可以使用字符串或者索引访问,或者通过 For-Each语句(如上面所示) 在运行了例子2之后,我们就会看到像这样的东西: Files: FILE1=c:\upload\File1.xls (108544) FILE2=c:\upload\File2.zip (211687) Other items: DESCR1=bla bla DESCR2=test test 注意:我们已经通过UploadFile对象的Path和size属性获得目的路径和上传文件的大小N 如果我们的表单只含有一个文件输入框,如:,那么就用不着使用for-each语句,我们可以简单这么写: Response.Write Upload.Files("ONLYFILE").Path 或者更通常的可以用 Response.Write Upload.Files(1).Path 注意:除非Save方法被调用,否则Files和Form集合都是无效的。在调用Upload.Save之前调用,是错误的 ' 错误! Upload.Save( Upload.Form("Path") ) 文件大小设定限制 假定你需要限制上传文件的大小,以便防止不符责任的用户消耗你的硬盘空间。你需要做的只是在调用Save之前,使用SetMaxSize方法。 Set Upload = Server.CreateObject("Persits.Upload.1") Upload.SetMaxSize 50000, False Upload.Save "c:\upload" 在这个例子里面我们限制了上传文件为50000字节。这个可选的第二个参数指定是否一个文件大于最大字节数时候是被截断。(如果设置为fase,或者忽略。)或者遇上错误就放弃(如果设置发false)强制

Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.y 窗体活动元素 document.activeElement 绑定事件 document.captureEvents(Event.KEYDOWN); 访问窗体元素 document.all("txt").focus(); document.all("txt").select(); 窗体命令 document.execCommand 窗体COOKIE document.cookie 菜单事件 document.oncontextmenu 创建元素 document.createElement("SPAN"); 根据鼠标获得元素: document.elementFromPoint(event.x,event.y).tagName=="TD document.elementFromPoint(event.x,event.y).appendChild(ms) 窗体图片 document.images[索引] 窗体事件绑定 document.onmousedown=scrollwindow; 元素 document.窗体.elements[索引] 对象绑定事件 document.all.xxx.detachEvent("onclick",a); 插件数目 navigator.plugins 取变量型 typeof($js_libpath) == "undefined" 下拉框 下拉框.options[索引] 下拉框.options.length 查找对象 document.getElementsByName("r1"); document.getElementById(id); 定时 timer=setInterval("scrollwindow()",delay); clearInterval(timer); UNCODE编码 escape() ,unescape 父对象 obj.parentElement(dhtml) obj.parentNode(dom) 交换表的行 TableID.moveRow(2,1) 替换CSS document.all.csss.href = "a.css"; 并排显示 display:inline 隐藏焦点 hidefocus=true 根据宽度换行 style="word-break:break-all" 自动刷新 简单邮件 快速转到位置 obj.scrollIntoView(true) 锚 anchors 网页传递参数 location.search(); 可编辑 obj.contenteditable=true 执行菜单命令 obj.execCommand 双字节字符 /[^x00-xff]/ 汉字 /[u4e00-u9fa5]/ 让英文字符串超出表格宽度自动换行 word-wrap: break-word; word-break: break-all; 透明背景 获得style内容 obj.style.cssText HTML标签 document.documentElement.innerHTML 第一个style标签 document.styleSheets[0] style标签里的第一个样式 document.styleSheets[0].rules[0] 防止点击空链接时,页面往往重置到页首端。 word 上一网页源 asp: request.servervariables("HTTP_REFERER") javascript: document.referrer 释放内存 CollectGarbage(); 禁止右键 document.oncontextmenu = function() { return false;} 禁止保存 gstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()> 禁止粘贴 地址栏图标 favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下 收藏栏图标 查看源码 关闭输入法 自动全选 ENTER键可以让光标移到下一个输入框 文本框的默认值 title换行 obj.title = "123 sdfs&#32" 获得时间所代表的微秒 var n1 = new Date("2004-10-10".replace(/-/g, "/")).getTime() 窗口是否关闭 win.closed checkbox扁平
获取选中内容 document.selection.createRange().duplicate().text 自动完成功打开该功能 关闭该功能 窗口最大化 无关闭按钮IE window.open("aa.htm", "meizz", "fullscreen=7"); 统一编码/解码 alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe"))) encodeURIComponent对":"、"/"、";" 和 "?"也编码 表格行指示 //各种尺寸 s += " 网页可见区域宽:"+ document.body.clientWidth; s += " 网页可见区域高:"+ document.body.clientHeight; s += " 网页可见区域高:"+ document.body.offsetWeight +" (包括边线的宽)"; s += " 网页可见区域高:"+ document.body.offsetHeight +" (包括边线的宽)"; s += " 网页正文全文宽:"+ document.body.scrollWidth; s += " 网页正文全文高:"+ document.body.scrollHeight; s += " 网页被卷去的高:"+ document.body.scrollTop; s += " 网页被卷去的左:"+ document.body.scrollLeft; s += " 网页正文部分上:"+ window.screenTop; s += " 网页正文部分左:"+ window.screenLeft; s += " 屏幕分辨率的高:"+ window.screen.height; s += " 屏幕分辨率的宽:"+ window.screen.width; s += " 屏幕可用工作区高度:"+ window.screen.availHeight; s += " 屏幕可用工作区宽度:"+ window.screen.availWidth; //过滤数字 //特殊用途 gs",null)"> //不缓存 //正则匹配匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内):[^x00-xff] 匹配空行的正则表达式: [s| ]* 匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/ 匹配首尾空格的正则表达式:(^s*)|(s*$)(像vbscript那样的trim函数) 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 以下是例子: 利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,"")" onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^u4E00-u9FA5]/g,""))" 1.用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,"")" onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^uFF00-uFFFF]/g,""))" 2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^d]/g,"") "onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^d]/g,""))" 3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,"") "onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^d]/g,""))" //消除图像工具栏 or //无提示关闭 function Close() { var ua=navigator.userAgent var ie=navigator.appName=="Microsoft Internet Explorer"?true:false if(ie) { var IEversion=parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE ")))) if(IEversion< 5.5) { var str = "<object id=noTipClose classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">" str += "object>"; document.body.insertAdjacentHTML("beforeEnd", str); document.all.noTipClose.Click(); } else { window.opener =null; window.close(); } } else { window.close() } } //取得控件得绝对位置(1) <script language="javascript"> function getoffset(e) { var t=e.offsetTop; var l=e.offsetLeft; while(e=e.offsetParent) { t+=e.offsetTop; l+=e.offsetLeft; } var rec = new Array(1); rec[0] = t; rec[1] = l; return rec } object id=min classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"> object> <object id=max classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"> object> <OBJECT id=close classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"> OBJECT> //光标停在文字最后 <script language="javascript"> function cc() { var e = event.srcElement; var r =e.createTextRange(); r.moveStart("character",e.value.length); r.collapse(true); r.select(); } //页面进入和退出的特效 进入页面 推出页面 这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使 用哪种特效,取值为1-23:   0 矩形缩小   1 矩形扩大   2 圆形缩小   3 圆形扩大   4 下到上刷新   5 上到下刷新   6 左到右刷新   7 右到左刷新   8 竖百叶窗   9 横百叶窗   10 错位横百叶窗   11 错位竖百叶窗   12 点扩散   13 左右到中间刷新   14 中间到左右刷新   15 中间到上下   16 上下到中间   17 右下到左上   18 右上到左下   19 左上到右下   20 左下到右上   21 横条   22 竖条   23 //网页是否被检索   其中属性值有以下一些:   属性值为"all": 文件将被检索,且页上链接可被查询;   属性值为"none": 文件不被检索,而且不查询页上的链接;   属性值为"index": 文件将被检索;   属性值为"follow": 查询页上的链接;   属性值为"noindex": 文件不检索,但可被查询链接;   属性值为"nofollow": //打印分页

page1

page2

//设置打印 <object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360" >object> <script language=javascript> function window.onload() { // -- advanced features factory.printing.SetMarginMeasure(2) // measure margins in inches factory.printing.SetPageRange(false, 1, 3) // need pages from 1 to 3 factory.printing.printer = "HP DeskJet 870C" factory.printing.copies = 2 factory.printing.collate = true factory.printing.paperSize = "A4" factory.printing.paperSource = "Manual feed" // -- basic features factory.printing.header = "居左显示&b居中显示&b居右显示页码,第&p页/共&P页" factory.printing.footer = "(自定义页脚)" factory.printing.portrait = false factory.printing.leftMargin = 0.75 factory.printing.topMargin = 1.5 factory.printing.rightMargin = 0.75 factory.printing.bottomMargin = 1.5 } function Print(frame) { factory.printing.Print(true, frame) // print with prompt }
具体使用手册,更多信息,点这里 //自带的打印预览 WebBrowser.ExecWB(1,1) 打开 Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 Web.ExecWB(4,1) 保存网页 Web.ExecWB(6,1) 打印 Web.ExecWB(7,1) 打印预览 Web.ExecWB(8,1) 打印页面设置 Web.ExecWB(10,1) 查看页面属性 Web.ExecWB(15,1) 好像是撤销,有待确认 Web.ExecWB(17,1) 全选 Web.ExecWB(22,1) 刷新 Web.ExecWB(45,1) 关闭窗体无提示 <object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"> object>

//去掉打印时的页眉页脚 <script language="JavaScript"> var HKEY_Root,HKEY_Path,HKEY_Key; HKEY_Root="HKEY_CURRENT_USER"; HKEY_Path="\Software\Microsoft\Internet Explorer\PageSetup\"; //设置网页打印的页眉页脚为空 function PageSetup_Null() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); } catch(e){} } //设置网页打印的页眉页脚为默认值 function PageSetup_Default() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P"); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d"); } catch(e){} } //浏览器验证 function checkBrowser() { this.ver=navigator.appVersion this.dom=document.getElementById?1:0 this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0; this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0; this.ie4=(document.all && !this.dom)?1:0; this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0; this.ns4=(document.layers && !this.dom)?1:0; this.mac=(this.ver.indexOf("Mac") > -1) ?1:0; this.ope=(navigator.userAgent.indexOf("Opera")>-1); this.ie=(this.ie6 || this.ie5 || this.ie4) this.ns=(this.ns4 || this.ns5) this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns5 || this.ns4 || this.mac || this.ope) this.nbw=(!this.bw) return this; } //计算内容宽和高 //无模式的提示框 function modelessAlert(Msg) { window.showModelessDialog("javascript:alert(""+escape(Msg)+"");window.close();","","status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;"); } //屏蔽按键 屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键 <script language="Javascript"> //可编辑SELECT //设置光标位置 function getCaret(textbox) { var control = document.activeElement; textbox.focus(); var rang = document.selection.createRange(); rang.setEndPoint("StartToStart",textbox.createTextRange()) control.focus(); return rang.text.length; } function setCaret(textbox,pos) { try { var r =textbox.createTextRange(); r.moveStart("character",pos); r.collapse(true); r.select(); } catch(e) {} } function selectLength(textbox,start,len) { try { var r =textbox.createTextRange(); r.moveEnd("character",len-(textbox.value.length-start)); r.moveStart("character",start); r.select(); } catch(e) {//alert(e.description)} } function insertAtCaret(textbox,text) { textbox.focus(); document.selection.createRange().text = text; } //页内查找 function findInPage(str) { var txt, i, found,n = 0; if (str == "") { return false; } txt = document.body.createTextRange(); for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) { txt.moveStart("character", 1); txt.moveEnd("textedit"); } if (found) { txt.moveStart("character", -1); txt.findText(str); txt.select(); txt.scrollIntoView(); n++; } else { if (n > 0) { n = 0; findInPage(str); } else { alert(str + "... 您要找的文字不存在。 请试着输入页面中的关键字再次查找!"); } } return false; } //书 http://www.itpub.net/attachment.php?s=&postid=1894598 http://www.wrclub.net/down/listdown.aspx?id=1341//操作EXECL <script language="javascript"> function jStartExcel() { var xls = new ActiveXObject ( "Excel.Application" ); xls.visible = true; var newBook = xls.Workbooks.Add; newBook.Worksheets.Add; newBook.Worksheets(1).Activate; xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation = 2; xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize = 5; newBook.Worksheets(1).Columns("A").columnwidth=50; newBook.Worksheets(1).Columns("A").WrapText = true; newBook.Worksheets(1).Columns("B").columnwidth=50; newBook.Worksheets(1).Columns("B").WrapText = true; newBook.Worksheets(1).Range("A1:B1000").NumberFormat = "0"; newBook.Worksheets(1).Range("A1:B1000").HorizontalAlignment = -4131; newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex="15"; newBook.Worksheets(1).Cells(1,1).value="First Column, First Cell"; newBook.Worksheets(1).Cells(2,1).value="First Column, Second Cell"; newBook.Worksheets(1).Cells(1,2).value="Second Column, First Cell"; newBook.Worksheets(1).Cells(2,2).value="Second Column, Second Cell"; newBook.Worksheets(1).Name="My First WorkSheet"; } tip <script Language="JavaScript"> //***********默认设置定义.********************* tPopWait=50;//停留tWait豪秒后显示提示。 tPopShow=5000;//显示tShow豪秒后关闭提示 showPopStep=20; popOpacity=99; //***************内部变量定义***************** sPop=null; curShow=null; tFadeOut=null; tFadeIn=null; tFadeWaiting=null; document.write(""); document.write("
"); function showPopupText(){ var o=event.srcElement; MouseX=event.x; MouseY=event.y; if(o.alt!=null && o.alt!=""){o.dypop=o.alt;o.alt=""}; if(o.title!=null && o.title!=""){o.dypop=o.title;o.title=""}; if(o.dypop!=sPop) { sPop=o.dypop; clearTimeout(curShow); clearTimeout(tFadeOut); clearTimeout(tFadeIn); clearTimeout(tFadeWaiting); if(sPop==null || sPop=="") { dypopLayer.innerHTML=""; dypopLayer.style.filter="Alpha()"; dypopLayer.filters.Alpha.opacity=0; } else { if(o.dyclass!=null) popStyle=o.dyclass else popStyle="cPopText"; curShow=setTimeout("showIt()",tPopWait); } } } function showIt(){ dypopLayer.className=popStyle; dypopLayer.innerHTML=sPop; popWidth=dypopLayer.clientWidth; popHeight=dypopLayer.clientHeight; if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24 else popLeftAdjust=0; if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24 else popTopAdjust=0; dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust; dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust; dypopLayer.style.filter="Alpha(Opacity=0)"; fadeOut(); } function fadeOut(){ if(dypopLayer.filters.Alpha.opacity0) { dypopLayer.filters.Alpha.opacity-=1; tFadeIn=setTimeout("fadeIn()",1); } } document.onmouseover=showPopupText; createRange(); if (rng!=null) rng.pasteHTML("插入文字"); } } //netscapte下操作xml doc = new ActiveXObject("Msxml2.DOMDocument"); doc = new ActiveXObject("Microsoft.XMLDOM") ->> doc = (new DOMParser()).parseFromString(sXML,"text/xml") //判断键值 <script language="javascript"> var ie =navigator.appName=="Microsoft Internet Explorer"?true:false; function keyDown(e) { if(!ie) { var nkey=e.which; var iekey="现在是ns浏览器"; var realkey=String.fromCharCode(e.which); } if(ie) { var iekey=event.keyCode; var nkey="现在是ie浏览器"; var realkey=String.fromCharCode(event.keyCode); if(event.keyCode==32){realkey="" 空格""} if(event.keyCode==13){realkey="" 回车""} if(event.keyCode==27){realkey="" Esc""} if(event.keyCode==16){realkey="" Shift""} if(event.keyCode==17){realkey="" Ctrl""} if(event.keyCode==18){realkey="" Alt""} } alert("ns浏览器中键值:"+nkey+" "+"ie浏览器中键值:"+iekey+" "+"实际键为"+realkey); } document.onkeydown = keyDown; //Javascript Document.

请按任意一个键。。。。

//禁止FSO 1.注销组件 regsvr32 /u scrrun.dll 2.修改PROGID HKEY_CLASSES_ROOTScripting.FileSystemObject Scripting.FileSystemObject 3.对于使用object的用户,修改HKEY_CLASSES_ROOTScripting. //省略号
就是比如有一行文字,很长,表格内一行显示不下.
//检测media play版本 //图象按比例 <script language="JavaScript"> //细线SELECT function getComputerName() { var objWMIService = GetObject("Winmgmts:rootcimv2"); for(e = new Enumerator(objWMIService) ; !e.atEnd() ; e.moveNext()) { var getComputer = e.item(); return getComputer.Name; } } //条件编译 <script language=javascript> /*@cc_on @*/ /*@if (@_win32 && @_jscript_version>5) function window.confirm(str) { execScript("n = msgbox(""+ str +"", 257)", "vbscript"); return(n == 1); } @end @*/ //mergeAttributes 复制所有读/写标签属性到指定元素。
This is a sample DIV element.
This is another sample DIV element.
以上内容可以随意转载,转载后请注名来源和出处! 原文链接:http://ttyp.cnblogs.com/archive/2004/11/15/63900.aspx //Import function Import() { for( var i=0; i"); else document.write(""); } }; //js枚举 function getComputerName() { var objWMIService = GetObject("Winmgmts:rootcimv2"); for(e = new Enumerator(objWMIService) ; !e.atEnd() ; e.moveNext()) { var getComputer = e.item(); return getComputer.Name; } } //条件编译 <script language=javascript> /*@cc_on @*/ /*@if (@_win32 && @_jscript_version>5) function window.confirm(str) { execScript("n = msgbox(""+ str +"", 257)", "vbscript"); return(n == 1); } @end @*/ //mergeAttributes 复制所有读/写标签属性到指定元素。
This is a sample DIV element.
This is another sample DIV element.
电子书制作:源码爱好者

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧