2010-01-15 154 views
0

我有一个程序能够通过剪贴板与MS Office应用程序交换数据。使用Word 2010和Windows 7复制和粘贴问题

这工作在Office 2007和Windows Vista/XP罚款,但没有使用Office 2010/Windows 7的

IDataObject *d = NULL; 
    HRESULT hr = ::OleGetClipboard(&d); 
    if (hr == S_OK) 
    { 
     FORMATETC formatEtc; 
     formatEtc.cfFormat = ::RegisterClipboardFormat("Native"); 
     formatEtc.ptd = NULL; 
     formatEtc.dwAspect = DVASPECT_CONTENT; 
     formatEtc.lindex = -1; 


     STGMEDIUM stgMedium; 
     hr = d->QueryGetData(&formatEtc); 

接着电话,我返回了一个错误 - 0x8004006a无效的剪贴板格式

我已尝试搜索网页,但没有找到任何相关信息。任何意见/建议将受到感谢。

谢谢。

回答

0

我在Office 2007和Windows服务器2008中有类似的问题,我猜这个问题不是办公室,而是Windows 7/2008。你是否将你的程序作为服务运行?或可执行文件? 我仍在等待我的问题在这里的答案: Clipboard Copy-Paste doesn't work in a service on Win Server 2008/Vista 64bit

请让我知道如果你已经解决了你的问题!

更新:我发现这是一个会话问题。试着找出你的应用和单词/其他办公应用是否在同一个会话中运行(尝试使用进程管理器)。