作者:wangweixing2000
打开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 = GetActiveObject( clsid, NULL, (void**) &pUnk);
if (!SUCCEEDED(hr))
{
//如果当前没有打开word这里直接删除注册表的settings项返回就可以了!
}
MSWord::_ApplicationPtr pApplication = pUnk;
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(1);
if (pRecntFile != NULL)
{
pRecntFile->delete();
}
}
}
pRecnts = NULL;
::CoUninitialize();
return 0;
}
这个程序还可以继续改进!
看来ms的架构还是比较清晰,没动手之前就可以猜到一二!不是为ms做广告哦!
上面程序是word2003的处理,其他版本只要把import更改一下就好了!
转帖请注明出处!谢谢!