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

我想在程序里和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.mzph.cn/news/682998.shtml

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

相关文章

【Langchain Agent研究】SalesGPT项目介绍(四)

【Langchain Agent研究】SalesGPT项目介绍&#xff08;三&#xff09;-CSDN博客 github地址&#xff1a;GitHub - jerry1900/SalesGPT: Context-aware AI Sales Agent to automate sales outreach. 上节课&#xff0c;我们主要介绍了SalesGPT的类属性和它最重要的类方法f…

【教学类-47-01】20240206UIBOT+IDM下载儿童古诗+修改文件名

背景需求&#xff1a; 去年12月&#xff0c;我去了其他幼儿园参观&#xff0c;这是一个传统文化德育教育特色的学校&#xff0c;在“古典集市”展示活动中&#xff0c;小班中班大班孩子共同现场念诵《元日》《静夜思》包含了演唱版本和儿歌念诵版本。 我马上也要当班主任了&a…

微信小程序开发学习笔记《17》uni-app框架-tabBar

微信小程序开发学习笔记《17》uni-app框架-tabBar 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、创建tabBar分支 运行如下的命令&#xff0c;基于master分支在本地创建tabBar子分支&#x…

蓝桥杯刷题--python-5

0天干地支 - 蓝桥云课 (lanqiao.cn) import os import sys # 请在此输入您的代码 I1=[jia,yi,bing,ding,wu,ji,geng,xin,ren,gui] I2=[zi,chou,yin,mao,chen,si,wu,wei,shen,you,xu,hai] n=int(input()) n_=n-1900 n_=n_%60 i1=(n_+6)%10 i2=(n_) %12 print(.join(I1[i1]+I2[i2…

Netty Review - 服务端channel注册流程源码解析

文章目录 PreNetty主从Reactor线程模型服务端channel注册流程源码解读入口 serverBootstrap.bind(port)执行队列中的任务 &#xff1a; AbstractUnsafe#register0注册 doRegister() 源码流程图 Pre Netty Review - ServerBootstrap源码解析 Netty Review - NioServerSocketCh…

Vue2源码梳理:关于vm.$mount的实现

$mount vue实例挂载的实现&#xff0c;也就是执行 vm.$mount 的方法 在 Runtime Compiler 版本&#xff0c;入口文件是: src/platform/web/entry-runtime-with-compiler.js $mount 方法也是在这个文件中被定义的 const mount Vue.prototype.$mount Vue.prototype.$mount f…

acszcda

学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 例如&#xff1a; 一周掌握 Java 入门知识 学习内容&#xff1a; 提示&#xff1a;这里可以添加要学的内容 例如&#xff1a; 搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句 学习时间&#x…

C# 使用Naudio库实现声卡采集麦克风采集+混音

C# 使用Naudio库实现声卡采集麦克风采集混音 using NAudio.Wave; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threadin…

TCP高频知识点

本篇文章主要讲述一下在面试过程中TCP的高频知识点 1.TCP三次握手流程图: 客户端发送一个SYN&#xff08;同步&#xff09;报文段给服务器&#xff0c;选择一个初始序列号&#xff0c;并设置SYN标志位为1。服务器接收到客户端的SYN报文段后&#xff0c;回复一个ACK&#xff08…

OJ刷题:杨氏矩阵【建议收藏】

看见这个题目&#xff0c;很多人的第一反应是遍历整个数组查找数字&#xff0c;但是这种方法不仅效率低&#xff0c;而且远远不能满足题目要求。下面介绍一种高效的查找方法&#xff1a; 代码实现&#xff1a; #include <stdio.h>int Yang_Find_Num(int arr[][3], int …

steam游戏搬砖项目靠谱吗?有没有风险?

作为一款fps射击游戏&#xff0c;csgo在近几年可谓是火出圈&#xff0c;作为一款全球竞技游戏&#xff0c;深受玩家喜爱追捧&#xff0c;玩家追求的就是公平公正&#xff0c;各凭本事&#xff0c;像其他游戏可能还会有皮肤等装备属性加成&#xff0c;在csgo里面是不存在的。 纯…

K8sGPT 的使用

K8sGPT 介绍 k8sgpt 是一个扫描 Kubernetes 集群、诊断和分类问题的工具。它将 SRE 经验编入其分析器中&#xff0c;并帮助提取最相关的信息&#xff0c;通过人工智能来丰富它。它还可以与 OpenAI、Azure、Cohere、Amazon Bedrock 和本地模型结合使用。 K8sGPT Github 地址 …

C++Linux网络编程:简单的select模型运用

文章目录 前言源代码部分重点解读read/write与recv/send在使用上的差异 前言 这段代码来自于游双的《Linux高性能服务器编程》&#xff0c;在Ubuntu中对代码进行了实现&#xff0c;并在注释部分加上了我的个人解读。 源代码 // #include <sys/types.h> // 网络通讯的核…

JavaScript 设计模式之代理模式

代理模式 其实这种模式在现在很多地方也都有使用到&#xff0c;如 Vue3 中的数据相应原理就是使用的 es6 中的 Proxy 代理及 Reflect 反射的方式来处理数据响应式 我们日常在使用数据请求时&#xff0c;也会用到一些代理的方式&#xff0c;比如在请求不同的域名&#xff0c;端…

C++ 广度优先搜索的标记策略(五十六)【第三篇】

今天我们来看看bfs是如何规划标记策略的。 1.标记策略 但先等一下&#xff0c;先看一道题《一维坐标的移动》 在一个长度为 n 的坐标轴上&#xff0c;蒜头君想从 A 点 移动到 B 点。他的移动规则如下&#xff1a; 向前一步&#xff0c;坐标增加 1。 向后一步&#xff0c;坐…

Vue插槽

Vue插槽 一、插槽-默认插槽1.作用2.需求3.问题4.插槽的基本语法5.代码示例6.总结 二、插槽-后备内容&#xff08;默认值&#xff09;1.问题2.插槽的后备内容3.语法4.效果5.代码示例 三、插槽-具名插槽1.需求2.具名插槽语法3.v-slot的简写4.代码示例5.总结 四、作用域插槽1.插槽…

安卓价值1-如何在电脑上运行ADB

ADB&#xff08;Android Debug Bridge&#xff09;是Android平台的调试工具&#xff0c;它是一个命令行工具&#xff0c;用于与连接到计算机的Android设备进行通信和控制。ADB提供了一系列命令&#xff0c;允许开发人员执行各种操作&#xff0c;包括但不限于&#xff1a; 1. 安…

不关电脑不仅仅是因为懒

程序员为什么不喜欢关电脑&#xff1f;不管用台式机&#xff0c;还是笔记本&#xff0c;总有一批程序员下班后从不关闭电脑&#xff0c;台式机按掉屏幕电源&#xff0c;笔记本直接合上休眠就是了。 这种现象说明这些程序员懒吗&#xff1f;还是有其它原因&#xff1f;从我自身的…

【网络层介绍】

文章目录 一、网络层概述1. 网络层的作用2. 网络层与其他层的关系 二、核心协议和技术1. IP协议2. 路由和转发3. 子网划分和超网 三、网络层设备1. 路由器2. 三层交换机 一、网络层概述 1. 网络层的作用 网络层主要负责在不同网络间传输数据包&#xff0c;确保数据能够跨越多…

在python中JSON数据格式的使用

什么是JSON&#xff1f; JSON是一种数据格式&#xff0c;由美国程序设计师DouglasCrockford创建的&#xff0c;JSON全名是JavaScript Object Notation,由JSON英文全文字义我们可以推敲JSON的缘由&#xff0c;最初是为JavaScript开发的。这种数据格式由于简单好用被大量应用在We…