利用ASP远程注册DLL的方法 -------------------------- <% Response.Buffer = True %> <% Server.ScriptTimeout = 500 Dim frmFolderPath, frmFilePath
frmFolderPath = Request.Form("frmFolderPath") frmFilePath = Request.Form("frmDllPath") frmMethod = Request.Form("frmMethod") btnREG = Request.Form("btnREG") %>
<HTML> <HEAD> <TITLE>Regsvr32.asp</TITLE> <STYLE TYPE="TEXT/CSS"> .Legend {FONT-FAMILY: veranda; FONT-SIZE: 14px; FONT-WEIGHT: bold; COLOR: blue} .FS {FONT-FAMILY: veranda; FONT-SIZE: 12px; BORDER-WIDTH: 4px; BORDER-COLOR: green; MARGIN-LEFT:2px; MARGIN-RIGHT:2px} TD {MARGIN-LEFT:6px; MARGIN-RIGHT:6px; PADDING-LEFT:12px; PADDING-RIGHT:12px} </STYLE> </HEAD>
<BODY> <FORM NAME="regForm" METHOD="POST"> <TABLE BORDER=0 CELLSPACING=6 CELLPADDING=6 MARGINWIDTH=6> <TR> <TD VALIGN=TOP> <FIELDSET ID=FS1 NAME=FS1 CLASS=FS> <LEGEND CLASS=Legend>Regsvr Functions</LEGEND> Insert Path to DLL Directory<BR> <INPUT TYPE=TEXT NAME="frmFolderPath" value="<%=frmFolderPath%>"><BR> <INPUT TYPE=SUBMIT NAME=btnFileList value="Build File List"><BR> <% IF Request.Form("btnFileList") <> "" OR btnREG <> "" Then Set RegisterFiles = New clsRegister RegisterFiles.EchoB("<B>Select File</B>") Call RegisterFiles.init(frmFolderPath) RegisterFiles.EchoB("<BR><INPUT TYPE=SUBMIT NAME=btnREG value=" & Chr(34) _ & "REG/UNREG" & Chr(34) & ">") IF Request.Form("btnREG") <> "" Then Call RegisterFiles.Register(frmFilePath, frmMethod) End IF Set RegisterFiles = Nothing End IF %> </FIELDSET> </TD> </TR> </TABLE> </FORM> </BODY> </HTML> <% Class clsRegister
Private m_oFS
Public Property Let oFS(objOFS) m_oFS = objOFS End Property
Public Property Get oFS() Set oFS = Server.CreateObject("Scripting.FileSystemObject") End Property
Sub init(strRoot) ''Root to Search (c:, d:, e:) Dim oDrive, oRootDir IF oFS.FolderExists(strRoot) Then IF Len(strRoot) < 3 Then ''Must Be a Drive Set oDrive = oFS.GetDrive(strRoot) Set oRootDir = oDrive.RootFolder Else Set oRootDir = oFS.GetFolder(strRoot) End IF Else EchoB("<B>Folder ( " & strRoot & " ) Not Found.") Exit Sub End IF setRoot = oRootDir
Echo("<SELECT NAME=" & Chr(34) & "frmDllPath" & Chr(34) & ">") Call getAllDlls(oRootDir) EchoB("</SELECT>") BuildOptions End Sub
Sub getAllDlls(oParentFolder) Dim oSubFolders, oFile, oFiles Set oSubFolders = oParentFolder.SubFolders Set opFiles = oParentFolder.Files
For Each oFile in opFiles IF Right(lCase(oFile.Name), 4) = ".dll" OR Right(lCase(oFile.Name), 4) = ".ocx" Then Echo("<OPTION value=" & Chr(34) & oFile.Path & Chr(34) & ">" _ & oFile.Name & "</Option>") End IF Next
On Error Resume Next For Each oFolder In oSubFolders ''Iterate All Folders in Drive Set oFiles = oFolder.Files For Each oFile in oFiles IF Right(lCase(oFile.Name), 4) = ".dll" OR Right(lCase(oFile.Name), 4) = ".ocx" Then Echo("<OPTION value=" & Chr(34) & oFile.Path & Chr(34) & ">" _ & oFile.Name & "</Option>") End IF Next Call getAllDlls(oFolder) Next On Error GoTo 0 End Sub
Sub Register(strFilePath, regMethod) Dim theFile, strFile, oShell, exitcode Set theFile = oFS.GetFile(strFilePath) strFile = theFile.Path
Set oShell = CreateObject ("WScript.Shell")
IF regMethod = "REG" Then ''Register oShell.Run "c:\WINNT\system32\regsvr32.exe /s " & strFile, 0, False exitcode = oShell.Run("c:\WINNT\system32\regsvr32.exe /s " & strFile, 0, False) EchoB("regsvr32.exe exitcode = " & exitcode) Else ''unRegister oShell.Run "c:\WINNT\system32\regsvr32.exe /u/s " & strFile, 0, False exitcode = oShell.Run("c:\WINNT\system32\regsvr32.exe /u/s " & strFile, 0, False) EchoB("regsvr32.exe exitcode = " & exitcode) End IF
Cleanup oShell End Sub
Sub BuildOptions EchoB("Register: <INPUT TYPE=RADIO NAME=frmMethod value=REG CHECKED>") EchoB("unRegister: <INPUT TYPE=RADIO NAME=frmMethod value=UNREG>") End Sub
Function Echo(str) Echo = Response.Write(str & vbCrLf) End Function
Function EchoB(str) EchoB = Response.Write(str & "<BR>" & vbCrLf) End Function
Sub Cleanup(obj) If isObject(obj) Then Set obj = Nothing End IF End Sub
Sub Class_Terminate() Cleanup oFS End Sub End Class %>
利用CDONTS发送邮件的ASP函数 <% ''Last Updated By Recon On 05/14/2001 ''On Error Resume Next
''利用CDONTS组件在Win2k上发送邮件
''发送普通邮件 SendMail "admin@ny.com", "iamchn@263.net", "Normal Mail!", "Please check the attatchment!", 2, 0, "C:\Love.txt"
''发送HTML邮件 Dim m_fso, m_tf Dim m_strHTML
Set m_fso = Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT") Set m_tf = m_fso.OpenTextFile("C:\Mail.htm", 1) m_strHTML = m_tf.ReadAll
''Write m_strHTML Set m_tf = Nothing Set m_fso = Nothing
SendMail "admin@ny.com", "iamchn@263.net", "HTML Mail!", m_strHTML, 2, 1, Null
''参数说明 ''strFrom : 发件人Email ''strTo : 收件人Email ''strSubject : 信件主题 ''strBody : 信件正文 ''lngImportance : 信件重要性 '' : 0 - 低重要性 '' : 0 - 中等重要性(默认) '' : 0 - 高重要性 ''lngAType : 信件格式 '' : 为1时将邮件正文作为HTML(此时可以发送HTML邮件) ''strAttach : 附件的路径 Sub SendMail(strFrom, strTo, strSubject, strBody, lngImportance, lngAType, strAttach) Dim objMail
Set objMail = Server.CreateObject("CDONTS.NEWMAIL") With objMail
.From = strFrom .To = strTo .Subject = strSubject .Body = strBody .Importance = lngImportance
If lngAType = 1 Then .BodyFormat = 0 .MailFormat = 0 End If
If IsEmpty(strAttach) = False And IsNull(strAttach) = False Then .AttachFile strAttach End If
.Send End With Set objMail = Nothing End Sub %> 处理驱动器和文件夹
使用 FileSystemObject (FSO) 对象模式,可以有计划地处理驱动器和文件夹,就像在 Windows 资源管理器中交互式地处理它们一样。可以复制和移动文件夹,获取有关驱动器和文件夹的信息,等等。
获取有关驱动器的信息 可以用 Drive 对象来获得有关各种驱动器的信息,这些驱动器是实物地或通过网络连接到系统上的。它的属性可以用来获得下面的信息内容:
驱动器的总容量,以字节为单位(TotalSize 属性) 驱动器的可用空间是多少,以字节为单位(AvailableSpace 或 FreeSpace 属性) 哪个号被赋给了该驱动器(DriveLetter 属性) 驱动器的类型是什么,如可移动的、固定的、网络的、CD-ROM 或 RAM 磁盘(DriveType 属性) 驱动器的序列号(SerialNumber 属性) 驱动器使用的文件系统类型,如 FAT、FAT32、NTFS 等等(FileSystem 属性) 驱动器是否可以使用(IsReady 属性) 共享和/或卷的名字(ShareName 和 VolumeName 属性) 驱动器的路径或根文件夹(Path 和 RootFolder 属性) 请考察示例代码,来领会如何在 FileSystemObject 中使用这些属性。
Drive 对象用法示例 使用 Drive 对象来收集有关驱动器的信息。在下面的代码中,没有对实际的 Drive 对象的引用;相反,使用 GetDrive 方法来获得现有 Drive 对象的引用(在这个例子中就是 drv)。 下面示例示范了如何在 VBScript 中使用 Drive 对象:
Sub ShowDriveInfo(drvPath) Dim fso, drv, s Set fso = CreateObject("Scripting.FileSystemObject") Set drv = fso.GetDrive(fso.GetDriveName(drvPath)) s = "Drive " & UCase(drvPath) & " - " s = s & drv.VolumeName & "<br/>" s = s & "Total Space: " & FormatNumber(drv.TotalSize / 1024, 0) s = s & " Kb" & "<br/>" s = s & "Free Space: " & FormatNumber(drv.FreeSpace / 1024, 0) s = s & " Kb" & "<br/>" Response.Write s End Sub
下面的代码说明在 JScript 中实现同样的功能: function ShowDriveInfo1(drvPath) { var fso, drv, s =""; fso = new ActiveXObject("Scripting.FileSystemObject"); drv = fso.GetDrive(fso.GetDriveName(drvPath)); s += "Drive " + drvPath.toUpperCase()+ " - "; s += drv.VolumeName + "<br/>"; s += "Total Space: " + drv.TotalSize / 1024; s += " Kb" + "<br/>"; s += "Free Space: " + drv.FreeSpace / 1024; s += " Kb" + "<br/>"; Response.Write(s); }
处理文件夹 在下面的表中,描述了普通的文件夹任务和执行它们的方法。 任务 方法 创建文件夹。 FileSystemObject.CreateFolder 删除文件夹。 Folder.Delete 或 FileSystemObject.DeleteFolder 移动文件夹。 Folder.Move 或 FileSystemObject.MoveFolder 复制文件夹。 Folder.Copy 或 FileSystemObject.CopyFolder 检索文件夹的名字。 Folder.Name 如果文件夹在驱动器上存在,则找出它。 FileSystemObject.FolderExists 获得现有 Folder 对象的实例。 FileSystemObject.GetFolder 找出文件夹的父文件夹名。 FileSystemObject.GetParentFolderName 找出系统文件夹的路径。 FileSystemObject.GetSpecialFolder
请考察示例代码,来看看在 FileSystemObject 中使用了多少种这些的方法和属性。
下面的示例示范了如何在 VBScript 中使用 Folder 和 FileSystemObject 对象,来操作文件夹和获得有关它们的信息:
Sub ShowFolderInfo() Dim fso, fldr, s '' 获得 FileSystemObject 的实例。 Set fso = CreateObject("Scripting.FileSystemObject") '' 获得 Drive 对象。 Set fldr = fso.GetFolder("c:") '' 打印父文件夹名字。 Response.Write "Parent folder name is: " & fldr & "<br/>" '' 打印驱动器名字。 Response.Write "Contained on drive " & fldr.Drive & "<br/>" '' 打印根文件名。 If fldr.IsRootFolder = True Then Response.Write "This is the root folder." & ""<br/>"<br/>" Else Response.Write "This folder isn''t a root folder." & "<br/><br/>" End If '' 用 FileSystemObject 对象创建新的文件夹。 fso.CreateFolder ("C:\Bogus") Response.Write "Created folder C:\Bogus" & "<br/>" '' 打印文件夹的基本名字。 Response.Write "Basename = " & fso.GetBaseName("c:\bogus") & "<br/>" '' 删除新创建的文件夹。 fso.DeleteFolder ("C:\Bogus") Response.Write "Deleted folder C:\Bogus" & "<br/>" End Sub
下面的示例显示如何在 JScript 中使用 Folder 和 FileSystemObject 对象: function ShowFolderInfo() { var fso, fldr, s = ""; // 获得 FileSystemObject 的实例。 fso = new ActiveXObject("Scripting.FileSystemObject"); // 获得 Drive 对象。 fldr = fso.GetFolder("c:"); // 打印父文件夹名。 Response.Write("Parent folder name is: " + fldr + "<br/>"); // 打印驱动器名字。 Response.Write("Contained on drive " + fldr.Drive + "<br/>"); // 打印根文件名。 if (fldr.IsRootFolder) Response.Write("This is the root folder."); else Response.Write("This folder isn''t a root folder."); Response.Write("<br/><br/>"); // 用 FileSystemObject 对象创建新的文件夹。 fso.CreateFolder ("C:\\Bogus"); Response.Write("Created folder C:\\Bogus" + "<br/>"); // 打印文件夹的基本名。 Response.Write("Basename = " + fso.GetBaseName("c:\\bogus") + "<br/>"); // 删除新创建的文件夹。 fso.DeleteFolder ("C:\\Bogus"); Response.Write("Deleted folder C:\\Bogus" + "<br/>"); } ASP分页函数
Function ExportPageInfo(ByRef rs,curpage,i,LinkFile) Dim retval, j, pageNumber, BasePage
retval = "第" & curpage & "页/总" & rs.pagecount & "页 " retval = retval & "本页" & i & "条/总" & rs.recordcount & "条 "
If curpage = 1 Then retval = retval & "首页 前页 " Else retval = retval & "<a href=''" & LinkFile & "page=1''>首页</a> <a href=''" & LinkFile & "page=" & cstr(curpage - 1) & "''>前页</a> " End If If curpage = rs.pagecount Then retval = retval & "后页 末页" Else retval = retval & "<a href=''" & LinkFile & "page=" & cstr(curpage + 1) & "''>后页</a> <a href=''" & LinkFile & "page=" & cstr(rs.pagecount) & "''>末页</a>" End if
retval = retval & "<br/>" BasePage = (curpage \ 10) * 10 If BasePage > 0 Then retval = retval & " <a href=''" & LinkFile & "page=" & (BasePage - 9) & "''><<</a>" For j = 1 to 10 pageNumber = BasePage + j If PageNumber > rs.pagecount Then Exit For If pageNumber = Cint(curpage) Then retval = retval & " <font color=''#FF0000''>" & pageNumber & "</font>" Else retval = retval & " <a href=''" & LinkFile & "page=" & pageNumber & "''>" & pageNumber & "</a>" End If Next If rs.pagecount > BasePage Then retval = retval & " <a href=''" & LinkFile & "page=" & (BasePage + 11) & "''>>></a>"
ExportPageInfo = retval End Function
应用
<% adoPageRS.open "SELECT * FROM news ORDER BY addtime DESC", conn, 1, 1 if err.number <> 0 then response.write "数据库操作失败:"&err.description else if adoPageRS.eof and adoPageRS.bof then response.write "没有记录" else %> <div align="center"> <center> <table width="100%" border="0" cellspacing="1" cellpadding="2"> <tr class="big"> <td width="60%">新 闻 标 题</td> <td width="25%" align="center">日期</td> <td width="15%" align="center">操 作</td> </tr> <% adoPageRS.pagesize = 10 adoPageRS.absolutepage = curpage for i = 0 to 9 %> <tr> <td><%= adoPageRS("title") %></td> <td align="center"> <% = adoPageRS("addtime") %> </td> <td align="center"><a href=''newsman.asp?action=edit&id=<%= adoPageRS("id")%>''>编辑</a> <a href=''javascript:confirmDel(<%= adoPageRS("id") %>)''>删除</a></td> </tr> <% adoPageRS.movenext if adoPageRS.eof then i = i + 1 exit for End If next %> <tr align="center"> <td colspan="3"> <% = ExportPageInfo(adoPageRS, curpage, i, "Newsman.asp?") %> </td> </tr> </table> </center> </div>
asp常常用到的一些东西, <%=Request.ServerVariables("remote_addr")%>
FOR each item in Request.form tempvalue=trim(Request(item)) tempvalue=Replace(tempvalue,chr(13)&chr(10),"<br/>") tempvalue=Replace(tempvalue,"<br/><br/>","<br/>") if tempvalue="" then tempvalue=0 Execute item&"="""&tempvalue&"""" ''response.write item&"="&tempvalue&"<br/>" next ''response.write request("id") ''response.end
if ="" then response.write "<script language=''javascript''>window.alert('''')</script>" response.write "<script language=''javascript''>window.history.go(-1);</script>" response.end end if
<!--#include file="" --> <!--#include virtual="" -->
sql="select max(id) from pack" set RS=conn.execute(sql) if isnull(RS(0)) then id=1 else id=RS(0)+1 end if set rs=nothing
sql="insert into pack(id,strpackdm,strusername) values("&id&",''"&strpackdm&"'',''"&Session("username")&"'')" set RS=conn.execute(sql)
sql="update pack set "&Itemname&"=''"&tempvalue&"'' where id="&id&"" if Itemname<>"id" then response.write sql&"<br/>" set rs=conn.execute(sql)
if err.number<>0 then ''错误处理 response.write "数据库操作失败:" & err.description err.clear end if
Set rs=Nothing Conn.close Set conn=Nothing
do while not rs.eof and rowcount>0
rowcount=rowcount-1 rs.MoveNext
do while not rs.eof
rs.MoveNext loop
for each item in rs2.fields Execute item.name&"="""&trim(rs2(""&item.name&""))&"""" next
function Mycn(str) str=lcase(str) str=replace(str,"","") response.write str end function
dim conn dim connstr on error resume next set conn=server.CreateObject("adodb.connection")
Connstr="driver=SQL Server; server="&servername&"; uid="&username&"; pwd="&password&"; database="&datebasename&";"
Connstr="DBQ="+server.mappath(mydbpath&mdbname)+";DRIVER={Microsoft Access Driver (*.mdb)};"
''response.write Connstr ''response.end conn.Open connstr if err<>0 then Response.Write "无法建立到数据库的连接!" end if 
|