[奇怪的问题!],郁闷ing!想清理word的打开文件的历史记录,通过code,自己写了点code结果没有生效!大牛们给点建议!或者解决方案!
我的目的:
很简单就是清除word历史记录!
打开word,我们可以在工具->选项->常规->列出最近所用的文件 来实现我想要的功能!
1、word的_Application提供了一个方法可以设置是否显示最近使用的文件。
2、word也给我们提供RecentFiles接口,但是里面没有什么有用的。
3、word提供了Option接口,但是死活也找不到和word页面对应的方法。
没辙,我还是瞄向了第1种方法,但是奇怪的问题就出来了!
下面是我的简单代码:
// OfficeClear.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#import "C:\Program Files\\Common Files\\Microsoft Shared\\Office11\\MSO.DLL" rename_namespace("Office")
using namespace Office;
#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;
#import "C:\Program Files\Microsoft Office\Office11\MSWORD.olb" rename("ExitWindows","ExitWindowsEx"),named_guids,rename_namespace("MSWord")
using namespace MSWord;
int _tmain(int argc, _TCHAR* argv[])
{
//Initialize the COM libraries
::CoInitialize(NULL);
// Create an instance of the Word application and obtain the
// pointer to the application's IDispatch interface.
CLSID clsid;
CLSIDFromProgID(L"Word.Application", &clsid);
IUnknown* pUnk;
HRESULT hr = ::CoCreateInstance( clsid, NULL, CLSCTX_SERVER,
IID_IUnknown, (void**) &pUnk);
MSWord::_ApplicationPtr pApplication = pUnk;
VARIANT_BOOL bRecentFiles = VARIANT_FALSE;
if (SUCCEEDED(pApplication->get_DisplayRecentFiles(&bRecentFiles)))
{
std::cout<<bRecentFiles<<std::endl;
}
hr = pApplication->put_DisplayRecentFiles(VARIANT_FALSE); //设置不显示历史记录
if (SUCCEEDED(hr))
{
std::cout<<"Succeeded!"<<std::endl;
}
/*MSWord::OptionsPtr pOption = NULL;
if (SUCCEEDED(pApplication->get_Options(&pOption))) //本想的到Option看看没有办法,结果没找到有用的方没!
{
std::cout<<"Succeeded get options interface!"<<std::endl;
}*/
MSWord::RecentFilesPtr pRecnts = pApplication->GetRecentFiles();
if (pRecnts != NULL)
{
RecentFilePtr pRecntFile = NULL;
int count = pRecnts->GetCount();
for (int i =0; i<count; i++)
{
pRecntFile = pRecnts->Item(i);
if (pRecntFile != NULL)
{
std::cout<<(char*)pRecntFile->GetName()<<std::endl;
}
}
}
pRecnts = NULL;
hr = pApplication->put_Visible(VARIANT_TRUE); //当我在这个打开word看时确实看不到历史记录,看来我只是把该word的历史记录不显示,没有真正达到清除的目的。
if (SUCCEEDED(pApplication->get_DisplayRecentFiles(&bRecentFiles)))
{
std::cout<<bRecentFiles<<std::endl;
}
::CoUninitialize();
return 0;
}
MS把它封到了那个接口了,郁闷找不到,大家一块帮忙找找!人多力量大!哈哈!
好久没给大家放分了!hoho!