COM初体验——新建文档并写入内容。

news2025/1/10 23:48:35

我想在程序里和Word交互。老师跟我说不要学COM,因为它已经过时了。但是我不想再把代码移植到C#上面,然后用VSTO——已经用了std::unordered_set!因为我使用了Copilot,结合我的思考,写了下面的代码:

#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" // mso.dll
#import "libid:0002E157-0000-0000-C000-000000000046" // vbe6ext.olb
#import "libid:00020905-0000-0000-C000-000000000046" rename("ExitWindows", "WordExitWindows") // msword.olb
#include <stdio.h>
#include <comdef.h>

int main()
{
    if (CoInitialize(NULL) != S_OK) {
        fprintf(stderr, "初始化 COM 库失败!");
        return -1;
    }
    try {
        Word::_ApplicationPtr pWordApp;
        pWordApp.CreateInstance(__uuidof(Word::Application));
        Word::_DocumentPtr pDoc = pWordApp->Documents->Add();
        Word::RangePtr pRng = pDoc->Content;
        pRng->Text = "世界你好!";
        pRng->Font->Name = "新宋体";
        pRng->Font->Size = 14;
        pRng->Text += "你好福大!";
        pWordApp->Visible = VARIANT_TRUE;
    } catch (const _com_error& e) {
        fprintf(stderr, "COM 错误:%s", e.ErrorMessage());
    }
    CoUninitialize();
    return 0;
}

由于考虑不同版本库位置的差异,因此直接使用CLSID标识这些库。可以在注册表编辑器里面查到这些CLSID。最终运行效果如下:

其实认真阅读就可以发现,代码刚好概括了使用鼠标进行的Word操作。

这份代码目前看上去可以在Windows上移植。我使用的Word是2021版本的,64位

在弹性云服务器上安装了Word 32位,把发布版本的程序scp到服务器上,程序运行正常,如下图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1449217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb学习|JSON与AJAX

学习材料声明 所有知识点都来自互联网&#xff0c;进行总结和梳理&#xff0c;侵权必删。 引用来源&#xff1a;尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 JSON JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机…

山西电力市场日前价格预测【2024-02-10】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-10&#xff09;山西电力市场全天平均日前电价为126.73元/MWh。其中&#xff0c;最高日前电价为302.95元/MWh&#xff0c;预计出现在08:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

SolidWorks:创建实体的扇形分割

没找到如何创建扇形分割&#xff0c;自己想了个办法&#xff0c;硬把它分割开了。

新手必看,零基础打造AI数字人,HeyGen完全操作指南

一、HeyGen注册登录教程 1.1 登录HeyGen官网 步骤1&#xff1a;访问官网 在您的浏览器中输入HeyGen官网地址&#xff0c;点击链接进入官网。这是进入HeyGen世界的第一步&#xff0c;一个简洁而直观的界面将会迎接您。 步骤2&#xff1a;点击试用按钮 在首页中&#xff0c;…

Mermaid绘制UML图教程

Mermaid 是一种轻量级的图形描述语言&#xff0c;用于绘制流程图、时序图、甘特图等各种图表。它采用简单的文本语法&#xff0c;使得用户能够快速绘制各种复杂图表&#xff0c;而无需深入学习图形绘制工具。 一、安装Mermaid Mermaid 可以在浏览器中直接使用&#xff0c;也可…

Linux用户常用命令——Linux命令(一)

大家好&#xff0c;从这篇文章开始我将开始进行Linux常用命令的学习&#xff0c;本专栏的每一个知识点我都会尽量在Linux系统中手操实现一遍。如果在读这篇文章的你也想熟悉Linux常用操作命令&#xff0c;我非常推荐你也搭个Linux系统进行实操学习。因为Linux常用的命令的知识点…

Python面向对象学习小记——基本概念

在Python中&#xff0c;int类型、float类型、列表类型、布尔类型等等&#xff0c;都是对象类型。

Linux日志管理服务 rsyslogd

文章目录 1. 基本介绍2. 系统常用的日志3. 日志管理服务 rsyslogd 1. 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于安全来说…

【MATLAB】鲸鱼算法优化混合核极限学习机(WOA-HKELM)回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 鲸鱼算法优化混合核极限学习机&#xff08;WOA-HKELM&#xff09;回归预测算法是一种结合鲸鱼优化算法和混合核极限学习机的混合算法。其原理主要包含以下几个步骤&#xff1a; 初始化&am…

【计算机网络】网际协议——互联网中的转发和编址

编址和转发是IP协议的重要组件 就像这个图所示&#xff0c;网络层有三个主要组件&#xff1a;IP协议&#xff0c;ICMP协议&#xff0c;路由选择协议IPV4 没有选项的时候是20字节 版本&#xff08;号&#xff09;&#xff1a;4比特&#xff1a;规定了IP协议是4还是6首部长度&am…

[python] 罗技动态链接驱动库DLL 控制 键鼠

[python] 罗技动态链接驱动库DLL 控制 键鼠 最近在玩搬砖游戏晶核, 每天有很多重复繁琐的"打卡"操作, 得知隔壁御三家游戏就有大佬做了自动收割的辅助工具,我就想模仿写一个.不过大佬们写的开源工具厉害得多,加了神经网络自动识别,实现寻路和点击功能.我目前最多就是…

Hive的相关概念——架构、数据存储、读写文件机制

目录 一、架构及组件介绍 1.1 Hive整体架构 1.2 Hive组件 1.3 Hive数据模型&#xff08;Data Model&#xff09; 1.3.1 Databases 1.3.2 Tables 1.3.3 Partitions 1.3.4 Buckets 二、Hive读写文件机制 2.1 SerDe 作用 2.2 Hive读写文件流程 2.2.1 读取文件的过程 …

【计算机是如何工作的】让你快速简单理解CPU核心工作机制,打破计算机的神秘感

计算机是如何⼯作的 &#x1f332;计算机发展史&#x1f332;冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;&#x1f332;CPU 基本⼯作流程&#x1f353;逻辑⻔&#x1f353;⻔电路(Gate Circuit)&#x1f353;算术逻辑单元 ALU&#xff08;Arithmetic & …

算法沉淀——队列+宽度优先搜索(BFS)(leetcode真题剖析)

算法沉淀——队列宽度优先搜索&#xff08;BFS&#xff09; 01.N 叉树的层序遍历02.二叉树的锯齿形层序遍历03.二叉树最大宽度04.在每个树行中找最大值 队列 宽度优先搜索算法&#xff08;Queue BFS&#xff09;是一种常用于图的遍历的算法&#xff0c;特别适用于求解最短路径…

【python学习篇1】python基本语法

目录 一、第一个python程序 二、基本语法&#xff0c;数据类型&#xff0c;字面量&#xff0c;循环语句等内容 2.1字面量 2.2注释 2.2.1单行注释 2.2.2多行注释 2.3变量 2.3.1认识变量 2.3.2查看数据类型 2.3.3数据类型转换 2.3.4字符串的三种定义方式 2.3.5字符串…

Unicode编码的魅力:跨语言交流的桥梁

title: Unicode编码的魅力&#xff1a;跨语言交流的桥梁 date: 2024/2/15 14:04:00 updated: 2024/2/15 14:04:00 tags: Unicode编码跨语言多语言支持存储开销兼容性文本处理全球化软件 引言&#xff1a; Unicode编码是一种用于表示世界上所有字符的标准编码方式。它解决了字…

【机器学习】合成少数过采样技术 (SMOTE)处理不平衡数据(附代码)

1、简介 不平衡数据集是机器学习和人工智能中普遍存在的挑战。当一个类别中的样本数量明显超过另一类别时&#xff0c;机器学习模型往往会偏向大多数类别&#xff0c;从而导致性能不佳。 合成少数过采样技术 (SMOTE) 已成为解决数据不平衡问题的强大且广泛采用的解决方案。 …

mysql5.6安装---windows版本

安装包下载 链接&#xff1a;https://pan.baidu.com/s/1L4ONMw-40HhAeWrE6kluXQ 提取码&#xff1a;977q 安装视频 1.解压完成之后将其放到你喜欢的地址当中去&#xff0c;这里我默认放在了D盘&#xff0c;这是我的根目录 2.配置环境变量 我的电脑->属性->高级->环境…

基础链表代码实现

我们以题目为切入点&#xff0c;深入了解链表代码实现。 题目&#xff08;单项链表&#xff09; 题目描述 实现一个数据结构&#xff0c;维护一张表&#xff08;最初只有一个元素 1&#xff09;。需要支持下面的操作&#xff0c;其中 x 和 y 都是 1 到 1000000 范围内的正整…

Java 基于 SpringBoot+Vue 的智慧外贸平台的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…