Winapi 您能否拦截或覆盖docx文件的IPreviewHandler?
在我之前的调查中,我发现即使windows文件资源管理器以嵌入状态启动word.exe,文档集合仍然为空 我做了一点进一步的研究,当我制作嵌入式应用程序时,他们会加载其中的一个文档: 所以我得出的结论是,explorer只需要启动word,但它没有在word中托管文档。这意味着windows资源管理器很可能是一个很好的工具。如果为true,则表示嵌入预览窗格中的任何对象都可以通过访问 不幸的是,我的代码在VSTO加载项中运行,我没有访问explorer com对象的权限,因此无法为IOleContainer执行操作。但是我有一个理论,可能有另一种方法可以通过PreviewHandler访问文档COM对象。我认为Word、Powerpoint和Excel启动的原因是注册或初始化previewHandler 因此HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PreviewHandler有一个与不同文件类型关联的GUID列表 关于如何为新文件类型创建自己的previewHandler,有很多文章:Winapi 您能否拦截或覆盖docx文件的IPreviewHandler?,winapi,com,ms-office,vsto,windows-explorer,Winapi,Com,Ms Office,Vsto,Windows Explorer,在我之前的调查中,我发现即使windows文件资源管理器以嵌入状态启动word.exe,文档集合仍然为空 我做了一点进一步的研究,当我制作嵌入式应用程序时,他们会加载其中的一个文档: 所以我得出的结论是,explorer只需要启动word,但它没有在word中托管文档。这意味着windows资源管理器很可能是一个很好的工具。如果为true,则表示嵌入预览窗格中的任何对象都可以通过访问 不幸的是,我的代码在VSTO加载项中运行,我没有访问explorer com对象的权限,因此无法为IOleC
但是我想用我自己的替换单词预览处理程序。如果我不能替换它,我将非常乐意拦截现有的预览处理程序。拦截它的唯一方法是为所需的文件类型编写并注册您自己的PreviewHandler,并将其内部委托给您要替换的先前注册的PreviewHandler。一个文件类型一次只能注册一个PreviewHandler。拦截它的唯一方法是为所需的文件类型写入并注册您自己的PreviewHandler,并将其内部委托给您要替换的先前注册的PreviewHandler。一个文件类型一次只能注册一个PreviewHandler。
public static class WordAppExt
{
public static Word.Document GetActiveDoc(this Word.Application App)
{
try
{
App.Visible = true;
if (App.Documents.Count > 0)
{
return App.ActiveDocument;
}
else
{
return null;
}
}
catch (Exception)
{
return null;
}
}
}