• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 控制WORD:如何设置ActiveDocumentApplicationUserName?

控制WORD:如何设置ActiveDocumentApplicationUserName?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了application.username,username,username是什么意思,username翻译中文,daybreak username等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 控制WORD:如何设置ActiveDocumentApplicationUserName?
描述:

m_pipactive是word的ActiveDocument对象,工作正常。
现在想通过它,得到ActiveDocument.Application属性,然后设置Application.UserName的值。在正常加载文档后,点击按钮调用以下代码执行时,Word就死了。但如果下面的语句写的不是UserName,而是Cation(Application.Cation)时,就能正确执行。请各位高手分析一下原因,应该如何编写?
另注:在VB脚本中直接写ActiveDocument.Application.UserName = "aaa"是可以执行的。目前我必须通过ActiveDocument才能访问Application。
IDispatch *pdisp;
VARIANT    vtT[3];
if ((m_pipactive) && 
(SUCCEEDED(m_pipactive->QueryInterface(IID_IDispatch, (void**)&pdisp))))
{
if (SUCCEEDED(AutoDispInvoke(pdisp, 
L"Application", 0, DISPATCH_PROPERTYGET, 0, NULL, &vtT[0])))
{
ASSERT(vtT[0].vt == VT_DISPATCH);
vtT[1].vt = VT_BSTR; vtT[1].bstrVal = SysAllocString(L"web@web.com");
if (SUCCEEDED(AutoDispInvoke(vtT[0].pdispVal, 
L"UserName", 0, DISPATCH_PROPERTYPUT, 1, &vtT[1], &vtT[2])))
{
MessageBox(NULL,"aaa","bbb",0);
VariantClear(&vtT[2]);
}
VariantClear(&vtT[1]);
VariantClear(&vtT[0]);
}
pdisp->Release();
}
函数:AutoDispInvoke
STDAPI AutoDispInvoke(LPDISPATCH pdisp, LPOLESTR pwszname, DISPID dspid,
WORD wflags, DWORD cargs, VARIANT* rgargs, VARIANT* pvtret)
{
    HRESULT    hr;
    DISPID     dspidPut = DISPID_PROPERTYPUT;
    DISPPARAMS dspparm = {NULL, NULL, 0, 0};
CHECK_NULL_RETURN(pdisp, E_POINTER);
    dspparm.rgvarg = rgargs;
    dspparm.cArgs = cargs;
if ((wflags & DISPATCH_PROPERTYPUT) || (wflags & DISPATCH_PROPERTYPUTREF))
{
dspparm.rgdispidNamedArgs = &dspidPut;
dspparm.cNamedArgs = 1;
}
__try
{
if (pwszname)
{
hr = pdisp->GetIDsOfNames(IID_NULL, &pwszname, 1, LOCALE_USER_DEFAULT, &dspid);
RETURN_ON_FAILURE(hr);
}
        hr = pdisp->Invoke(dspid, IID_NULL, LOCALE_USER_DEFAULT,
            (WORD)(DISPATCH_METHOD | wflags), &dspparm, pvtret, NULL, NULL);
    }
    __except(EvalException(GetExceptionCode()))
    {
        hr = E_WIN32_ACCESSVIOLATION;
    }
    return hr;
}


解决方案1:

void CWebOfficeCtrl::SetTrackUser(LPCTSTR strTrackUser)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
LPDISPATCH lpDisp;
lpDisp=m_pWebOfficeFrame->m_pWebOfficeView->m_pSelection->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
//m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
m_WordApp.SetUserName(strTrackUser);
m_WordApp.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 控制WORD:如何设置ActiveDocumentApplicationUserName?

相关文章

  • 2017-06-05 程序“打印”是向WINDOWS发出什么消息?(UP有分)
  • 2017-06-05 一个很奇怪很不好描述的问题,请大家帮忙。
  • 2017-06-04 封装了一个类库,类库中调用一个webservice的atl代理类,程序退出时,会出现内存不能为读错误,大家帮忙!谢谢
  • 2017-06-05 调用CoGetClassObject的时候返回0x80080005,意思是服务器运行失败
  • 2017-06-04 截取字符串的内容,在线等,解决就结贴
  • 2017-06-05 关于文本截取
  • 2017-06-04 100分求救!按照MSDN写的BHO程序,始终不能调试!!
  • 2017-06-05 如何获取文件摘要信息
  • 2017-06-05 WIN2000下,已知一个已加载的驱动程序名,怎样把它卸载?在线等,立即给分。
  • 2017-06-04 各位大侠,如何在自己的发布程序中包含微软的MsFlexGridActiveX控件,谢谢!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • vc++在win7系统上连接不上oracle数据库
    • 请问:如何截获进程(或线程)所调用的API函数序列?(100分)
    • 关于VC的动态档问题Pleaseenter
    • 如何获取线程中的消息
    • 链接问题,急,高分求解
    • 请问在线程中怎样使用winsock??
    • 关于UNICODE的问题
    • 关于线程同步的问题
    • 怎样突破系统的限制读写进程任意内存地址?
    • DirectX里怎么没有DirectShow

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有