Articles of com

如何通过COM接口以编程方式激活OLE控件?

我有一个应用程序通过ActiveXembeddedbutton控件。 该button由第三方提供,实现了一系列的ActiveX接口(其中IOleInPlaceObject )。 我有一个对IUnknownbutton实现的引用。 我面临的问题是由对象提供的IOleWindow::GetWindow函数总是返回一个错误; 错误代码是0x80004005,这显然是一个常见的HRESULT值,意思是E_FAIL 。 不太具描述性。 对于什么是值得的,该对象还通过它的IDispatch实现公开hWnd属性; 查询成功,但财产的价值总是为零。 有一点谷歌search表明,我可能需要“激活”的OLE对象之前, hWnd属性产生一个有用的价值。 有谁知道如何做到这一点,有没有一个专用的COM接口来激活OLE对象? 有趣的是,button似乎有一个窗口句柄,如在Spy ++中可见的。 更新:我刚刚发现IQuickActivate这是由我正在处理的button控制,并可以用来'快速'(嗯…)激活一个项目。 然而,填补QACONTAINER结构似乎是一个相当痛苦的事情,所以我现在宁愿不这样做。

COM部署VISTA

什么是COM接口,需要实施以在Vista / win7机器部署COM DLL。 我听说用COM来处理UAC帐号是有的,但是我找不到这个MSDN页面,请大家帮忙。 谢谢

我在哪里可以find有关Microsoft在未来版本的Windows中支持COM +的计划的可靠信息?

当看到一个有着许多竞争优先级的大型Web应用程序时,我面临的一个问题是大量的COM +组件。 在某些情况下,这些东西需要在其他一些技术(WCF,.NET等)中进行重新devise。 在微软停止支持它之前,我将如何优先考虑这一努力的一部分将是“低多久? 我有一个时间魔鬼find任何从微软的官方信息,关于他们目前的计划是在未来版本的Windows中的COM +支持。 任何指导将大大推进。

Linux / UNIX中COM编程的模拟

组件对象模型(COM)是(或者…)在Windows中提供与语言无关的软件组件的方式。 在Linux / UNIX中是否有任何编程模型,具有通过二进制组件重复使用代码的相同原理?

在* nix系统上是否有与COM等价的function? 如果不是,那么nix的可重用性是什么?

我对Windows COM及其背后的想法有所了解。 我想了解* nix系统是否具有相同的function,或者为什么不具备这些function?

为连接点客户端提供IDispatch实现

我用一个简单的COM对象写了一个简单的COM DLL inproc服务器。 COM对象实现一个连接点。 我知道如何创build一个从IDispEventImpl派生的ATL客户端,并使用汇地图来简化这个过程。 但是,为了演示的目的,我想创build一个win32控制台应用程序,该应用程序使用调用我的简单COM对象的类,然后充当连接点接收器。 我不知道如何提供一个IDispatch的实现 – 有人可以推荐文档,因为我找不到任何(我有ATL内部,但这似乎并不包括我需要)。 这是我已经得到的课程: #pragma once #include <iostream> using namespace std; // Because we're implementing a connection points sink (_IPogFarmEvents) // in a non-ATL class, we must provide implementations for IUnknown and IDispatch. class KidWithAPogFarm : public _IPogFarmEvents { private: DWORD m_dwRefCount; LONG m_lNumPogs; public: KidWithAPogFarm() : m_dwRefCount (0), […]

使用Windows IStream下载文件

我正在实现将一个虚拟文件从一个网站拖出,并通过一个ActiveX控件拖到桌面上。 如何在我的http url上创build一个IStream ,所以Windows可以执行这个drop? 我正在看的例子使用SHCreateStreamOnFile复制本地文件; 对于其他types的stream,例如http文件下载,必须有类似的function。

为什么“本地启动”默认允许外部服务器,但“本地激活”不是?

我现在需要在ASP.NET处理程序中创build一个由out-proc COM服务器提供的COM对象。 所以每次我部署COM服务器,我必须启动DCOMconfiguration并更改安全设置。 具体而言,我需要确保本地用户ASPNET允许“本地启动”和“本地激活”。 我惊讶的是,当我打开相关的设置页面“本地启动”已经被允许,但“本地激活”是不允许的。 这没有任何意义 – 为什么我需要这样的权限组合?

从C#应用程序获取WindowsExplorer中的当前select?

是否有可能从我的C#应用​​程序获取当前在Windows资源pipe理器中select的文件的列表? 我已经做了很多关于从C#这样的托pipe语言与Windows资源pipe理器交互的不同方法的研究。 最初,我正在研究shell扩展的实现( 在这里和这里例如),但显然这是从托pipe代码中的一个坏主意,可能无论如何对我的情况可能矫枉过正。 接下来,我看着PInvoke / COM解决scheme,并find这篇文章 ,这导致我这样的代码: SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); string filename; ArrayList windows = new ArrayList(); foreach(SHDocVw.InternetExplorer ie in shellWindows) { filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); if(filename.Equals("explorer")) { Console.WriteLine("Hard Drive: {0}", ie.LocationURL); windows.Add(ie); var shell = new Shell32.Shell(); foreach (SHDocVw.InternetExplorerMedium sw in shell.Windows()) { Console.WriteLine(sw.LocationURL); } } } …但个别的InternetExplorer对象没有获得当前文件select的方法,虽然它们可以用来获取有关窗口的信息。 然后我发现这篇文章正是我所需要的,但在C ++中。 以此为出发点,我试图通过在我的项目中添加shell32.dll作为参考进行一些翻译。 我结束了以下几点: […]

如何在命名空间扩展中添加(启用)标准的“发送到”上下文菜单选项

我有一个命名空间扩展,它提供了一个服务器中的文件/文件夹的虚拟视图。 在IContextMenu::QueryContextMenu()我已经添加了一些自定义菜单项。 我还在IShellFolder::GetAttributesOf()设置了几个SGAOF标志,以获得上下文菜单中的重命名,删除和属性。 有什么办法可以让我的名字空间扩展项目的上下文菜单中的“ 发送到 ”选项? 一旦启用这些命令,我​​该如何处理这些命令? 请指教。 这是Denis Anisimovbuild议的那个代码 const CLSID SendToCLSID = { 0x7BA4C740, 0x9E81, 0x11CF, { 0x99, 0xD3, 0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37 } }; HRESULT CMyNSEContextMenu::Initialize(PCIDLIST_ABSOLUTE pidlFolder , IDataObject *pDataObj, HKEY hkeyProgID ) { OutputDebugString(L"CMyNSEContextMenu::Initialize\n"); //Other initialization code … … if (_pdtobj) { _pdtobj->Release(); _pdtobj = NULL; } _mpidlFolder = […]