怎么样用vc获取word文档的作者信息,高分求教!!!!!!!!!!!!!!!!!!!

linweiming 2005-05-03 11:41:45
怎么样用vc来获取诸如word、excel等文件的作者信息?
另外pdf格式的可以获取吗,请知道的各位re一下,谢谢拉!!!!!!!!!!!!!
...全文
161 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
NOMADBLUE 2005-05-04
  • 打赏
  • 举报
回复
AfxOleInit(0);
使用COM
vcmute 2005-05-04
  • 打赏
  • 举报
回复
楼上和很早的EnumAll(MSDN中的Sample)差不多,只是多了
// Array of PIDSI's you are interested in.
struct pidsiStruct {
char *name;
long pidsi;
} pidsiArr[] = {
{"Title", PIDSI_TITLE}, // VT_LPSTR
{"Subject", PIDSI_SUBJECT}, // ...
{"Author", PIDSI_AUTHOR},
{"Keywords", PIDSI_KEYWORDS},
{"Comments", PIDSI_COMMENTS},
{"Template", PIDSI_TEMPLATE},
{"LastAuthor", PIDSI_LASTAUTHOR},
{"Revision Number", PIDSI_REVNUMBER},
{"Edit Time", PIDSI_EDITTIME}, // VT_FILENAME (UTC)
{"Last printed", PIDSI_LASTPRINTED}, // ...
{"Created", PIDSI_CREATE_DTM},
{"Last Saved", PIDSI_LASTSAVE_DTM},
{"Page Count", PIDSI_PAGECOUNT}, // VT_I4
{"Word Count", PIDSI_WORDCOUNT}, // ...
{"Char Count", PIDSI_CHARCOUNT},

{"Thumpnail", PIDSI_THUMBNAIL}, // VT_CF
{"AppName", PIDSI_APPNAME}, // VT_LPSTR
{"Doc Security", PIDSI_DOC_SECURITY}, // VT_I4
{0, 0}
};
蒋晟 2005-05-04
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/q186898/
vcmute 2005-05-04
  • 打赏
  • 举报
回复
忘了将初始化信息,否则会非法
AfxOleInit();
COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!m_oApp.CreateDispatch("Word.Application", NULL))
{
AfxMessageBox("Unable to start Word");
return false;
}
//Create a new document in Word
m_oDocs = m_oApp.GetDocuments();
vcmute 2005-05-04
  • 打赏
  • 举报
回复
Word要先导入MSWORD.OLB,示例代码如下
m_oDoc = m_oDocs.Open(COleVariant(sFile), vOpt,
COleVariant((short)true), vOpt, vOpt, vOpt,
vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt, vOpt);
//如果是Word 2000,为12个参数,Word 2003 为16个参数,之前是10个参数
LPDISPATCH lpdispProps;
lpdispProps = m_oDoc.GetBuiltInDocumentProperties();
CString sProperty="Author";

VARIANT vResult;
DISPPARAMS dpItem;
VARIANT vArgs[1];
vArgs[0].vt = VT_BSTR;
vArgs[0].bstrVal = sProperty.AllocSysString();
dpItem.cArgs=1;
dpItem.cNamedArgs=0;
dpItem.rgvarg = vArgs;
HRESULT hr = lpdispProps->Invoke(0x0, IID_NULL,
LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET,
&dpItem, &vResult, NULL, NULL);
::SysFreeString(vArgs[0].bstrVal);

DISPPARAMS dpNoArgs = {NULL, NULL, 0, 0};
LPDISPATCH lpdispProp;
lpdispProp = vResult.pdispVal;
hr = lpdispProp->Invoke(0x0, IID_NULL, LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYGET, &dpNoArgs, &vResult,
NULL, NULL);

sProperty = "Error";
if(vResult.vt==VT_BSTR)
sProperty = vResult.bstrVal;

lpdispProp->Release();
lpdispProps->Release();

MessageBox(sProperty);
P.S.m_oDoc和m_oDocs的声明
Documents m_oDocs;
_Document m_oDoc;

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧