2016-09-30 7 views
0

Office COM 추가 기능을 C++ (ATL)로 작성했습니다. 이제 현재 문서가 IRM (정보 권한 관리)이 암호화되거나 보호되지 않는 경우 추가 기능에서 알아야합니다. 또는 현재 적용된 IRM 템플릿을 가져 오는 것이 좋습니다. IRM 암호화는 문서 암호 설정과 동일하지 않습니다. 실제로 Office 2010을위한 것입니다. 그러나 새로운 버전에서는 동일하다고 가정합니다. .NET COM 추가 기능에 대한 대답을 알고 있다면 도움이 될 수도 있습니다.COM 추가 기능에서 Office 문서의 IRM 암호화 상태를 얻는 방법?

답변

0

아무도 이것을 알지 못하는 것처럼 여기에 내가 찾은 대답이 있습니다. Microsoft Permission interface.

요약하면 허가 인터페이스를 사용하십시오. 속성 사용이 답변입니다. 실제로이 링크는 .NET Interop 인터페이스를 보여 주지만 C++ ATL에서이 기능에 액세스하는 방법은 비슷하고 훨씬 더 직접적이기 때문에 (따라서 더 빠름) :

먼저 OnConnection 호출에서 응용 프로그램에 대한 참조를 저장해야합니다. 그럼 당신은이 (_app.ActiveDocument.Permission.Enabled) 등의 필요한 속성을 얻을 수 있습니다 :

CComPtr<IDispatch> pApp=_app; 
CComVariant vDoc; 
pApp.GetPropertyByName(L"ActiveDocument", &vDoc); 
CComPtr<IDispatch> pDoc=vDoc.pdispVal; 
CComVariant vPermission; 
pDoc.GetPropertyByName(L"Permission", &vPermission); 
CComPtr<IDispatch> pPermission=vPermission.pdispVal; 
CComVariant vEnabled; 
pPermission.GetPropertyByName(L"Enabled", &vEnabled); 
fEnabled=vEnabled.boolVal!=VARIANT_FALSE; 

오류 처리는 간결함을 위해 생략되었다. 반환 코드를 처리하고 반환 된 유형 등을 확인하십시오.

이것은 Word 용입니다. Excel은 대신 액티브 워크 북을 사용합니다.