关于如何在VC中操作Word,以判断文档是否加密

问题:怎样判断word是否被加密?是WORD软件中设置的加密 。

这个问题涉及到如何通过VC调用office的组件库,进而实现操作Word的问题。其实如果是在VB或者VBA里面进行调用,会比较的容易,使用VC相对的麻烦些。这和ADO是一样的,在VB里面调用很容易,结构清晰,在VC里面调用就复杂好多。

具体的解决分下面几步:

1、在VC中引入office组件库,把下面的代码放入到stdafx.h中:

#import  " C:Program Filescommon filesmicrosoft sharedoffice11MSO.dll "  
    rename(
" RGB " " RGBEx "
    rename(
" EOF " " msoEOF " )

using   namespace  Office;

#import 
" C:Program FilesCommon FilesMicrosoft SharedVBAVBA6VBE6EXT.OLB "

#import 
" C:Program FilesMicrosoft OfficeOFFICE11MSWORD.OLB "   
    rename(
" ExitWindows " , " ExitWindowsEx "
    rename(
" FindText " " FindTextEx " )

using   namespace  Word;

2、初始化COM库:

CoInitialize(NULL);
....  ....


CoUninitialize();

3、利用office组件库中提供的对象,打开一个word文档,并判断是否加密(即是否设置了密码):

    _ApplicationPtr   app; 
    _DocumentPtr doc;

    app.CreateInstance(__uuidof(Application));
    doc.CreateInstance(__uuidof(Document));

    app
-> Visible  =  VARIANT_TRUE; 

    COleVariant v1(
" c:/1.doc " );  //此处为要打开的文档名字
    COleVariant password(
"   " );

    
try {
        
        doc 
= app->Documents->Open(v1, &vtMissing, &vtMissing, &vtMissing,
        password,
        
&vtMissing,
        
&vtMissing,
        password,
        
&vtMissing);

        
if (app-> ActiveDocument-> HasPassword == VARIANT_FALSE) 
        

            AfxMessageBox(
"该文件未加密。");
        }
 
    }

    
catch (_com_error  & e)
    
{
        AfxMessageBox(
"该文件已经加密,无法打开。"); 
    }

    

    VARIANT SaveChanges,OriginalFormat,RouteDocument;    
    SaveChanges.vt
= VT_BOOL;                
    SaveChanges.boolVal
= VARIANT_FALSE;    

    ::VariantInit(
& OriginalFormat);        
    RouteDocument.vt
= VT_EMPTY;            
    
    doc.Release();

    app
-> Quit( & SaveChanges, & OriginalFormat, & RouteDocument);
    app.Release();

这里只有一个要点:默认的密码设置为一个空格,如果能正常打开文档,则该文档没有设置密码。否则,在打开的过程中会出错,则在错误处理中,判断出该文档设置了密码。

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值