问题标签 [atl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
887 浏览

c++ - 使用 COM 搜索 Outlook 联系人?

我想在我的 ATL/WTL 应用程序中添加对搜索本地 Outlook 联系人的支持。有谁知道 Outlook COM 接口(Office 2003 或更高版本)允许您搜索联系人?我已经有了 LDAP 查找支持,但用户也希望能够搜索他们的私人联系人。

欢迎任何信息。

0 投票
1 回答
267 浏览

windows - 将 ATL 类分解为 Win32 函数

我正在尝试从 ATL 类中调用 Win32 版本的 SetWindowPos(我需要指定不同的第一个 hWnd,ATL 通常会处理该 hWnd),但我无法“突破”ATL 类并得到以下错误:

我怎么告诉它我不想在我的基类中使用那个?!

0 投票
6 回答
48331 浏览

c++ - 我如何决定是否为新的 C++ 项目使用 ATL、MFC、Win32 或 CLR?

我刚刚开始我的第一个 C++ 项目。我正在使用Visual Studio 2008。它是一个单一形式的 Windows 应用程序,它访问几个数据库并启动一个 WebSphere MQ 事务。我基本上了解 ATL、MFC、Win32(我实际上对那个有点模糊)和 CLR 之间的区别,但我不知道应该如何选择。

其中一个或多个只是为了向后兼容吗?

CLR是个坏主意吗?

任何建议表示赞赏。

编辑: 我为这个项目选择了 C++,因为我没有在帖子中提到,这并不完全是技术性的。那么,假设C++ 是唯一/最好的选择,我应该选择哪个?

0 投票
1 回答
925 浏览

c++ - 如何将 ActiveX(webbrower 托管)项目转换为静态库项目?

我有一个 ActiveX 组件,它包含一个用于访问特定 URL 的控件(嵌入在复合控件对话框窗格中的 webbrowser 控件)。ActiveX 组件访问 URL 可用于其他 MFC 或 VB 项目。用法是注册 ActiveX 组件(使用 regsvr32 cmd),然后使用“插入 ActiveX 控件”将控件插入到对话框窗口中。

现在我打算将 ActiveX 组件转换为具有相同浏览器窗口和 Web 访问功能的静态库。我想知道怎么做?此外,如何在其他 MFC 项目中使用浏览器窗口(在静态库中)。是通过函数调用吗?是否有可用的示例项目?

我使用 Microsoft .Net 2003 作为开发工具。

非常感谢您提前。

0 投票
4 回答
452 浏览

c++ - 可用的 Visual Studio 2008 c++ 项目平台的优缺点?

如果选择:

  • ATL
  • Windows 窗体
  • MFC
  • Win32

具体而言,该应用程序将是:

  • 完全在内部使用。
  • 大多数用户缺乏基本的 Windows/PC 知识。(考虑简单的用户界面)
  • 用于自动化测试,这需要:
    - 从外部设备引入大量数据(可以选择 VXI、USB 或以太网)
    - 非常依赖图形 - 可能是 directX
  • 应用程序的生命周期将超过 10 年(考虑未来的 Windows 平台等)
  • 用户在测试时将处于非常偏远的位置并离线,但可以每晚在线同步报告(现在用于数据库同步的单独应用程序) - 考虑程序更新挑战?
  • 程序速度增加了价值——这意味着我们获取和显示数据的速度越快,可以完成的测试就越多。除了程序之外,没有其他瓶颈,只是速度快一点=效率高一点。

同样,特别是 C++ - 而不是 C#。

谢谢,杰夫

0 投票
3 回答
1556 浏览

windows - 为 COM 接口启用编组需要什么?

我有一个没有类型库的 32 位 ATL COM 组件。它有一个用于实现多个接口的给定类的类工厂。

当我将它用作进程内服务器时,一切正常 - 客户端调用 CoCreateInstance(),实例化对象,QueryInterface() 检索指向请求接口的指针。但是当我将组件放入 COM+ 时,我不再可以实例化该类 - CoCreateInstance() 现在返回 E_NOINTERFACE。

我认为问题在于 COM+ 由于缺少类型库而无法执行封送处理——它不知道该怎么做。我需要生成并注册一个类型库来解决这个问题还是有其他方法?

0 投票
5 回答
1391 浏览

c++ - 以受限用户身份运行时,为什么我会在 DLLMain 中获得 GPF?

为什么此代码在以受限用户身份运行时会崩溃,但在以机器管理员身份运行时却不会?

代码在返回时崩溃......我不知道为什么。

我正进入(状态:

此外,_AtlModule.DLLMain 看起来像这样:

我们正在导入 ATL DLL,并尝试静态链接……不走运。


更新

使用 ProcMon,我在这里遇到缓冲区溢出:

RegQueryValue HKU\S-1-5-21-448539723-854245398-1957994488-1005\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache BUFFER OVERFLOW 长度:144

这是什么意思?

0 投票
1 回答
1342 浏览

email - 从 Outlook::Attachment(嵌入式电子邮件)获取 Outlook::_MailItem

我正在使用 VC/ATL 编写 Outlook 插件。这个特定的插件接收选定的电子邮件并将它们写入磁盘。它还将所有关联的附件写入磁盘。然后,我们将所有内容读入 Outlook 之外的应用程序。

使用 Outlook 对象模型,这非常简单,因为 _MailItem 和 Attachment 都有 SaveAs 方法。当附件本身是嵌入的电子邮件时,问题就出现了,我们也希望将其拆分并保存为单独的文件。

在理想情况下,我可以查询 _MailItem 接口的附件,并像处理选择的正常部分一样处理它。但 QueryInterface 返回“无接口”。

我需要一个通过 Outlook 2010 与 Outlook XP (2002) 一起使用的解决方案。我知道在 Outlook 2007 中,应用程序对象上有一个方法 (CreateItemFromTemplate),它允许我从磁盘上保存的消息中获取 MailItem,但是不适用于 Outlook XP / 2003。我还需要完整的发件人/收件人信息。

我也知道第 3 方赎回库可以使用扩展 MAPI 做到这一点。但是,我们试图避免使用 3rd 方库。

0 投票
1 回答
1278 浏览

c++ - 工具栏上的图标不透明

我们已经创建了一个 IE 工具栏。我们通过使用静态控件并在其上保留图像来在工具栏上显示一个图标。

由于此静态控件不透明,因此此图标显示一些背景颜色(这是 Windows 常用控件的默认颜色)。

无论浏览器主题如何,是否可以使静态控件透明。

项目是用 ATL C++ 开发的。

我们尝试将 WS_EX_TRANSPARENT 作为静态控件的属性,当我们尝试在 OnCtrlColorStatic 事件中返回 null_brush 时,问题仍然没有解决。

0 投票
2 回答
720 浏览

visual-studio - 没有 AddRef() 的 EnvDTE 的 CoCreateInstance?

这与我问过的另一个问题有点相关,我已经很清楚了。最后一块拼图是使用 CoCreateInstance() 而不是 GetActiveObject()。我不想使用现有的 EnvDTE 实例,所以我调用 CoCreateInstance,它会正确触发 VisualStudio 的新实例。CoCreateInstance() 调用 AddRef() 并将输出指针存储在 CComPtr 中,它在销毁时正确调用 Release。当这个 Release() 发生时,你瞧,VS 的实例就关闭了!当然会,因为引用计数为零。我想要做的是让新进程拥有最后一个实例,因此当用户使用关闭 (X) 按钮关闭 VS 时,它将破坏 COM 对象。

我尝试了一些事情: 1. 在我的 CComPtr 上调用 Detach(),这样对象就会继续存在。当然可以,但是,使用关闭按钮关闭 VS 并不会真正终止进程(它仍在任务管理器列表中运行)。2. 启动一个单独的VS进程,然后使用ROT找到新的实例。这很难看,因为在尝试查找 COM 对象的新实例之前,我必须等待应用程序启动的不确定时间。3. 使用全局或静态 CComPtr,并在我的应用关闭时手动销毁对象。我宁愿不这样做。