- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在实现一个浏览器帮助对象,它允许将电子邮件从 Outlook 拖到 Internet Explorer 的页面。
我正在遵循以下帖子中描述的方法:Implementing a Drag-and-Drop function from MS Outlook into our web application .我让它工作但只在 x64 机器上。在 x32/86 机器上,我在以下代码段中遇到异常(显然,为了简单起见,我已经用伪造的文件名替换了真实的文件名插入):
DropFiles df = new DropFiles();
string filename = @"D:\projects\hello.txt";
byte[] binaryData = Encoding.Unicode.GetBytes(filename);
binaryData = binaryData.Concat(new byte[] { 0, 0 }).ToArray();
IntPtr pointerToGlobalMemory = Marshal.AllocHGlobal(Marshal.SizeOf(df) + binaryData.Length);
df.Files = Marshal.SizeOf(df);
df.Wide = true;
Marshal.StructureToPtr(df, pointerToGlobalMemory, true);
IntPtr newPointer = new IntPtr(pointerToGlobalMemory.ToInt32() + Marshal.SizeOf(df));
Marshal.Copy(binaryData, 0, newPointer, binaryData.Length);
var descriptorFormat = new COMInterop.FORMATETC();
descriptorFormat.cfFormat = HdropDescriptorId; // 15
descriptorFormat.ptd = IntPtr.Zero;
descriptorFormat.dwAspect = COMInterop.DVASPECT.DVASPECT_CONTENT;
descriptorFormat.lindex = -1;
descriptorFormat.tymed = COMInterop.TYMED.TYMED_HGLOBAL;
var td = new COMInterop.STGMEDIUM();
td.unionmember = pointerToGlobalMemory;
td.tymed = COMInterop.TYMED.TYMED_HGLOBAL;
dataObject.SetData(ref descriptorFormat, ref td, true);
在执行这段代码的最后一段时(实际上设置了假的 HDROP 描述符)我得到了以下异常:“无效的 FORMATETC 结构(HRESULT 异常:0x80040064 (DV_E_FORMATETC))”。
是否有人遇到过所描述的问题或知道此问题的原因是什么?
要更具体地说明环境 - 我在使用 IE 10 的 win7 32 位上遇到了这个问题,但我很确定特别是在那台机器上的原因是 32 位。
最佳答案
您需要实现自己的 IDataObject 并将其传递给原始 IDropTarget.Drop,而不是劫持来自 Outlook 的现有 IDataObject。
关于c# - 通过 BHO 从 Outlook 拖放到 Internet Explorer 在 x32/86 机器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22811035/
我已经根据本教程编写了一个 BHO: http://www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspx 我的 GetSite 和 SetSite 与教程
我想让我的 BHO 监听某个网页中某个元素的 onmousedown 事件。我有找到特定元素的所有代码,在 msdn 中它说我需要使用 get_onmousedown事件。我想出了这段代码。 CCo
我已经实现了 BHO 插件来使用 C# 从网页中检测 NUmber。每次加载页面时都会在网页中附加 javascript 并且 javascript 检测数字并将其替换为超链接数字。 代码 publ
对不起我的无知。你必须向我解释事情,我正在涉足新领域。我有一些 JAVA 背景,但主要是 php、javascript。 http://www.codeproject.com/Articles/199
我有一个用 C# 编写的 BHO 库 mybho.dll。我嵌入了一个资源文件“image.png”。我想在某些页面上显示此图像。根据我的阅读,它应该是这样的: 但是 Internet Explor
我正在使用 helloworld 示例创建 BHO。 Building Browser Helper Objects with Visual Studio 2005 BHO 未加载,我无法在 SetS
测试浏览器扩展的最佳方法/工具是什么? 在我的案例中,我使用的是 IE 浏览器帮助程序对象 (C#),它有一个自己的小 UI 和大量的数据库交互。到目前为止,我们使用自动化单元测试来测试我们的模型/业
我有一个用 C++ 编写的浏览器帮助程序对象,但在接收 OnHelp HtmlEvent 时遇到问题。 当我尝试访问属性时,浏览器崩溃了。 VARIANT_BOOL STDMETHODCALLTYPE
如果有两个功能相似的BHO,IE如何决定先加载哪个?因为先加载的BHO会影响后面加载的BHO。所以我想将我的 BHO 设置为第一个加载的。我能做什么? 最佳答案 没有记录的方法可以做到这一点。但根据我
我正在为 Internet Explorer (BHO) 编写扩展程序。我阅读了很多问题和答案,但无法找到和理解,如何在每个页面上从资源中执行 Javascript 文件?不附加网页,需要在每个页面上
我正在使用以下示例创建 IE BHO:http://code.msdn.microsoft.com/CSBrowserHelperObject-c5f3d2f6 我遇到的问题是,对于每个选项卡,BHO
我似乎找不到在我的 IE C# BHO 和作为 SYSTEM 运行的 C# 控制台应用程序之间进行通信的方法。 到目前为止,我已经尝试过使用 Remoting 和 EventWaitHandle,但是
我正在 CSHARP 中开发 BHO,但我在 onDocumentComplete 方法中遇到问题。 它在主文档加载的每个 IFRAME 上运行。我怎样才能避免它?我只想处理主窗口中的事件。 publ
我不是 windows 程序员,但似乎我必须为 Internet explorer 做一个扩展。 我在这个线程的帮助下制作了一个 BHO:How to get started with develop
IE 不会在页面刷新 (F5) 后触发 DocumentComplete 和 NavigateComplete2 事件。 这显然是“设计使然”,但它很难响应页面重新加载。 哪些方法取得了最大的成功?有
我需要在 C# 中创建一个 BHO。除了典型的 Microsoft C++ 示例之外,还有其他可用的文档吗? 我该如何开始?谢谢... 最佳答案 这实际上并没有那么难,但是您必须亲 body 验 CO
我有一个 C# BHO,它在文档中调用一些 JS 函数。通常我是这样做的(一切正常): IHTMLWindow2 wnd; //... wnd.execScript("testMethod(\"tes
http://www.adp-gmbh.ch/win/com/bho.html 当我编译时,我得到了很多错误: error C2236: unexpected 'class' 'adpbho'. Di
我正在为一个客户做一个项目。我们正在构建一个内部门户网站,出于各种(主要是政治)原因,我们最终为 IE8 构建了一个 BHO。 t 所做的其中一件事是确保一次只能打开一个门户实例。它通过在门户打开时写
我需要开发一个 bho,但我以前从未使用过它。那么任何人都可以给我一些关于如何开始 bho 的建议吗?欢迎一些教程。 PS:我熟悉C++开发。 最佳答案 以下是一些示例: http://social.
我是一名优秀的程序员,十分优秀!