Gavin.Lv.

唯刀百辟 唯心不易

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  13 随笔 :: 0 文章 :: 32 评论 :: 1 引用

公告

最新评论

共2页: 1 2 下一页 
Re:.Net 中的许可证机制 6572789 2011-09-08 16:20  
收藏下,好好看下
这个好一点

// 禁用金山词霸的加载项,否则会提示“Word 无法保存此文件,因为它已在别处打开。”
//object powerwordAddIn = "Powerword.dot";
//this.wordApplication.AddIns.get_Item(ref powerwordAddIn).Delete();
foreach (AddIn addIn in this.wordApplication.AddIns)
{
if (addIn.Name == "Powerword.dot")
{
addIn.Delete();
}
}
@radish

这是C#代码,也可以解决金山词霸的问题
try
{
// 启动 Word Application
this.startTime = DateTime.Now;
this.wordApplication = new ApplicationClass();
this.wordApplication.Visible = false;
this.endTime = DateTime.Now;
}
catch (Exception exp)
{
throw new ApplicationException("启动Word Application错误",exp);
}

try
{
// 禁用金山词霸的加载项,否则会提示“Word 无法保存此文件,因为它已在别处打开。”
object powerwordAddIn = "Powerword.dot";
this.wordApplication.AddIns.get_Item(ref powerwordAddIn).Delete();
}
catch (Exception exp)
{
throw new ApplicationException("禁用金山词霸加载项错误", exp);
}
--引用--------------------------------------------------
刘喜旺: 关于这个问题我最近才开始接触,也是被困扰了很久。
通过广搜网络,发现这个问题是由于同时启动多个Word进程造成的,因为每启动一个进程都会加载STARTUP目录下的加载项。而平时我们使用Word没碰到过这样的问题是因为平时我们使用Word的时候,不管打开几个文档,进程列表中始终就存在一个Word进程。

找到了问题的根源,类似的问题就好解决了。
首先,启动Word实例时,跟OP起初描述的一样,如果进程列表中已经存在Word进程,那么我们就引用该进程而不再另外创建,如果没有Word进程,就需要我们自己创建。至于退出时关闭Word实例的问题,我们可以用一下方法实现:
_Application app;
BOOL bCreated = TRUE;
LPDISPATCH pDisp;
LPUNKNOWN pUnk;
CLSID clsid;
CLSIDFromProgID(OLESTR("Word.Application"), &clsid);
if(GetActiveObject(clsid,NULL,&pUnk)==S_OK)
{
pUnk->QueryInterface(IID_IDispatch,(void **)&pDisp);
app.AttachDispatch(pDisp);
bCreated = FALSE;
}
else
{
app.CreateDispatch(_T("Word.Application"));
}

......

if (bCreated)
{
CComVariant SaveChanges(false),OriginalFormat,RouteDocument;
app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
app.ReleaseDispatch();
}
--------------------------------------------------------
我用的是VC
关于这个问题我最近才开始接触,也是被困扰了很久。
通过广搜网络,发现这个问题是由于同时启动多个Word进程造成的,因为每启动一个进程都会加载STARTUP目录下的加载项。而平时我们使用Word没碰到过这样的问题是因为平时我们使用Word的时候,不管打开几个文档,进程列表中始终就存在一个Word进程。

找到了问题的根源,类似的问题就好解决了。
首先,启动Word实例时,跟OP起初描述的一样,如果进程列表中已经存在Word进程,那么我们就引用该进程而不再另外创建,如果没有Word进程,就需要我们自己创建。至于退出时关闭Word实例的问题,我们可以用一下方法实现:
_Application app;
BOOL bCreated = TRUE;
LPDISPATCH pDisp;
LPUNKNOWN pUnk;
CLSID clsid;
CLSIDFromProgID(OLESTR("Word.Application"), &clsid);
if(GetActiveObject(clsid,NULL,&pUnk)==S_OK)
{
pUnk->QueryInterface(IID_IDispatch,(void **)&pDisp);
app.AttachDispatch(pDisp);
bCreated = FALSE;
}
else
{
app.CreateDispatch(_T("Word.Application"));
}

......

if (bCreated)
{
CComVariant SaveChanges(false),OriginalFormat,RouteDocument;
app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
app.ReleaseDispatch();
}
楼主,怎么把
将Web_Deploy项目生成的文件添加到Web.Setup项目的文件系统中?
直接复制粘贴过去吗?
对于normal.dot的问题,我也遇到过了(在使用VSTO2005SE做Word Addin时),暂时还没有发现任何有效的办法解决。选项里有一个设置可以让这个提示减少一次(一般情况会连续两个提示框),但是并不能完全关闭这个提示。
7楼的讲的不错,用它解决了金山词霸的问题,多谢多谢,不过前提要加Microsoft scripting runtime的引用。用这种方法,在有别的文档打开的情况下,再打开生成的doc,关闭该doc时会有normal.dotm是否保存之类的提示框。这个问题怎么解决?……
@want990@163.com

多数是类名重复引起的。因为没merge的时候是独立在各个dll里,合并了发现类名重服。


查找方法:选项-》生成运行--》msbuild 生出 【选择详细输出】
以下代码可以解决:
Set wdApp = CreateObject("word.application")
ad1 = wdApp.StartupPath & "\Powerword.dot"
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.fileexists(ad1) Then wdApp.AddIns(ad1).Installed = False'如果有Powerword.dot,则不加载此项。
wdApp.Visible = True
这是为了保证自己的wps能够活下去
就必须向word下手
这是一个金山词霸自动给Word加载的文件模板,造成许多麻烦,影响最大的是英文版的WORD2007,其他版本也有各种问题。金山公司为何这样做.... :)
PowerOffice 2007 think about it.

彻底去除此金山词霸垃圾的解决方案:
运行注册表编辑器:regedit
在编辑器中进到:HKEY_CURRENT_USER->Software->Microsoft->Office->Word->Addins 目录
删除 PWOffice2007.WordAddin.1 目录

退出编辑器,运行Word 就因该一切正常了。
中国软件公司都是垃圾
@老Q
能说得具体些吗?没大看明白
这是kill的代码,也是在园子里看一位兄弟的

///
/// 结束Excel进程
///

public void KillExcelProcess()
{
Process[] myProcesses;
DateTime startTime;
myProcesses = Process.GetProcessesByName("Excel");

//得不到Excel进程ID,暂时只能判断进程启动时间
foreach(Process myProcess in myProcesses)
{
startTime = myProcess.StartTime;

if(startTime > beforeTime && startTime < afterTime)
{
myProcess.Kill();
}
}
}
re: Visual Studio 2005 Web Deployment Projects Gavin.Lv. 2007-05-09 23:29  
@晓风残月
我最开始是在一台IBM T23(P3 1G 512M)上装的,感觉没出什么问题。VS2005的SP1倒是装了将近4个小时,现在SP1中已经集成了这部分功能,如果这个东西你用不了可以考虑直接装VS2005的SP1
re: Visual Studio 2005 Web Deployment Projects 晓风残月 2007-04-24 00:02  
@Gavin.Lv.
@Benelf
我第一次装,装了近2个小时时,以为down机了,就直接取消了,郁闷
re: Outlook 2007中手动卸载Addin Gavin.Lv. 2007-01-31 20:41  
呵呵,有帮助就好
re: Outlook 2007中手动卸载Addin 阿 2007-01-31 14:13  
经验证有效
共2页: 1 2 下一页