我现在遇到一个很棘手的问题,为表达清楚,我先具体描述一下,请各位高手耐心看下去:
   我现在需要做一个vb Active X控件,实现的功能就是根据外部提供的一个word模板文件.dot创建一个Word文件 .doc,在标签位置插入适当的内容。并按照用户提供的路径和名称保存。现在这个功能已经实现了。(最后我会提供源代码,和大家共享)这个控件要被Web调用。同时Web还要调用另一个控件(由别人来完成)在Web页面中嵌入一个Word形式的窗口,并打开已经生成的Word文件.doc。总体来说就是完成一个在线编辑器的功能。这个控件我已经做好了,基本功能已经实现。
出现的问题:
(1)由于这个控件是要在硬盘中写东西,所以系统认为这个控件是不安全。每次刷新或者第一次打开Web页面时总要提示,问是否允许继续运行,如果允许,是可以正常运行的。但是这样很麻烦的,不符合 用户的要求。解决的方法有 两个。一个是实现IObjectSafty接口。一个是修改注册表,
HKEY_CLASSES_ROOT
 \CLSID
   \{我的控件的ID}
     \Implemented Categories
       \{7DD95802-9882-11CF-9FA9-00AA006C42C4}
       \{7DD95801-9882-11CF-9FA9-00AA006C42C4}  
前一个方法我不会,如有知道的,请告诉小第一下
(2)再就是这个控件从一个目录拷贝到另一个目录,就要重新注册才能运行,所以要手动运行:regsvr32 命令。
请问怎样才能解决这两个问题, 可以写一个批处理文件,同时注册和修改注册表。
(3)我还有些不太明白,Active X控件该开始时部署在服务器上的,当用户第一次调用这个页面,就会下载客户端机器上的默认路径下,这个默认路径是哪一个?
(4)在控件注册的时候,是在服务器上注册后,客户端都可以使用,还是要在每个客户端注册。
我现在头都打了,也不知道怎么描述了。!!!!还请大家给我详细介绍一下ActiveX控件在Web上的工作原理和机制。

解决方案 »

  1.   

    我下面说明一下这个控件的具体步骤,希望大家看看有没有问题,请大家具体详细的赐教
    新建—Active X控件—在“通用“、“声明“中写入 如下代码:
     Private bmName As String
     Private bmCont As String
     Private strDotPathAndName As String
     Private strDocPathAndName As String
     Private objword As New Word.Global
     Private oWord As New Word.Application
     Private mydoc As New Word.Document Public Sub createDocFile(strdot As String)
        strDotPathAndName = strdot
        oWord.Visible = False
        Set mydoc = oWord.Documents.Add(strDotPathAndName, , wdFormatDocument, True)
    End SubPublic Sub insertBookMark(bmNamet As String, bmCont As String)
     bmName = bmNamet
     bmCont = bmCont
     oWord.Selection.GoTo wdGoToBook, , , bmName
     oWord.Selection.TypeText bmCont
    End SubPublic Sub closeAndSave(strdoc As String)
     strDocPathAndName = strdoc
     oWord.ActiveDocument.SaveAs (strDocPathAndName)
     oWord.ActiveDocument.Close
     oWord.Quit
     Set oWord = Nothing
    End Sub
    第一个过程是根据模板创建 空文件,strdot是模板存储路径和名称,第二个过程是插入内容:bmNamet是标签名称,bmCont是应该插入的内容。第三个工程是保存文档:strdoc是文件的保存路径和名称。这三个工程全部是在声明中写的,这就是这个控件的全部代码。
    然后保存,并生成wordActivex.ocx控件。测试用的Web页面的代码:
    <html>
    <head>
    <title>kdjfk</title>
    </head>
    <body>
    <script language="VBScript">
       Sub createFile()  
       oframe.createDocFile "D:\sunlin\sunlin\inert_word\111.dot"  //111.dot是一个模板名称  
       End Sub
      Sub inser()
      oframe.insertBookMark "合同标题","你好吗?"//标签名称 和内容
      oframe.insertBookMark "合同编号","123456789"
      oframe.insertBookMark "签约单位","商捷集团"
      End Sub
      Sub clo()
      oframe.closeAndSave "D:\sunlin\sunlin\inert_word\sunjet.doc"//保存路径和名称
      End Sub
    </script>
    <tr>
      <td>
       <div  onClick="createFile">Create a New Doc</div><br>
       <div  onClick="inser">Insert the BookMark</div><br>
       <div  onClick="clo">Save the Doc</div><br>
      </td>
    </tr>
    <object classid="clsid:ECB70A79-11A3-45E5-9503-A6943B20A94B" CODEBASE="wordActivex.CAB#version=1,0,0,0" id="oframe" width="0" height="0"> 
    </object></body>请问我在编写过程中又没有出现问题,怎样改正,是否需要打包?在服务器上怎么部署?Word模板是存处在服务器上的。当控件下载到客户机上 后,上面的路径是不是认为是本地机器上的路径了,这样肯定找不到模板。应该怎样处理。
    我头都大了,希望大家耐心详细的指教!!!分数不够还可以再加!!!
    谢谢