请问如何禁止word另存为功能?有什么方法吗?如果hook,请问hook什么函数呢?

解决方案 »

  1.   

    有三个方法:1.使用WORD模板
    建立WORD模板,在模板中写宏代码,重载FileSaveAs方法,在此方法里边不要写任何代码,如:
    sub FileSaveAs
    end sub
    用代码让操作的WORD加载此模板。
    此方法的前提是:宏安全性设置为中或低。2.使用微软接口,将按钮灰掉或不可见
    灰:设置菜单的Enabled 属性为false
    不可见:设置菜单的Visible 属性为false
    此方法缺点:在出现异常时会修改本地的normal模板,造成所有文件都不可用另存为按钮。3.制作word插件
    类似于第一种方法,只不过是写word插件,在插件中重载另存事件。
    此方法和第一种方法相比,没有宏安全性的限止。
    三种方法,第1种最简单;第3种最好;第2种有BUG,但也是一般人常用的方法。
      

  2.   

    最简单的,不用HOOK。
    定时查找另存为窗口。并且父窗口是WORD。具体没试过,但是觉得可以满足简单需求。
      

  3.   

    3.制作word插件 
    类似于第一种方法,只不过是写word插件,在插件中重载另存事件。 
    此方法和第一种方法相比,没有宏安全性的限止.\\另存事件是哪个,word插件到是写过,但是不知道如何重载另存事件,望指点.
      

  4.   

    刚才具体的看了下,有DocumentBeforeSave事件(保存前触发的事件),没有另存为事件。
    你在插件中调用接口使菜单enabled = false试一下(在插件中调用第2种方式)对于第1种方式,宏安全性也可以不用让用户来修改,可以在程序中通过修改注册表修改:
    信任对于 Visual  Basic 项目的访问:HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Word\Security
    AccessVBOM = 1宏安全性:HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Word\Security
    Level:宏安全性级别,1为低,2为中,3为高,4为非常高。