请问Outlook联系人存放在什么文件中?

rushing 2005-02-27 08:53:52
还有outlook express.
谢谢
...全文
1386 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushing 2005-03-07
  • 打赏
  • 举报
回复
有没有能用VB调用的API函数?
谢谢!
gjd111686 2005-02-28
  • 打赏
  • 举报
回复
由于读取Outlook Express(系统自带)和Outlook2000(Office2000中所带)中通讯薄内容所采取的方法不同,下面将分开简述。

第一、读取系统自带Outlook Express中通讯薄方法

基本思路
通过载入Wab32.dll文件(此文件一般位于路径“<盘符>\Program Files\Common Files\System\”下面),再获取其内部涵数WABOpen的进程地址加以调用,来读出通讯薄中主要内容。

具体实现

一、 包含通讯薄头文件及声明内部函数
#include <wab.h> // 通讯薄头文件
// 内部函数声明
typedef HRESULT (WINAPI *fWABOpen)(LPADRBOOK*,LPWABOBJECT*,LPWAB_PARAM,DWORD);
二、 读取具体内容的详细代码 // 读取通讯薄内容(类型、呢称、名字、EMAIL)
void CGetEmailDlg::OnOK()
{
HRESULT hRes;
LPADRBOOK lpAdrBook;
LPWABOBJECT lpWABObject;
LPWAB_PARAM lpWABParam = NULL;
DWORD Reserved2 = NULL;

HINSTANCE hinstLib;
hinstLib = LoadLibrary("D:\\Program Files\\Common Files\\System\\wab32");
fWABOpen procWABOpen;

if (hinstLib != NULL)
{
// 获取"Wab32.dll"内部涵数WABOpen的进程地址
procWABOpen = (fWABOpen) GetProcAddress(hinstLib, "WABOpen");

if (procWABOpen != NULL)
{
hRes = (procWABOpen)(&lpAdrBook,&lpWABObject,NULL,Reserved2);
_ASSERTE(hRes == S_OK);
if (hRes != S_OK) exit(1);

ULONG lpcbEntryID;
ENTRYID *lpEntryID;
hRes = lpAdrBook->GetPAB(
&lpcbEntryID,
&lpEntryID
);
_ASSERTE(hRes == S_OK);
if (hRes != S_OK) exit(2);

ULONG ulFlags = MAPI_BEST_ACCESS;
ULONG ulObjType = NULL;
LPUNKNOWN lpUnk = NULL;
hRes = lpAdrBook->OpenEntry(
lpcbEntryID,
lpEntryID,
NULL,
ulFlags,
&ulObjType,
&lpUnk
);

ulFlags = NULL;

if (ulObjType == MAPI_ABCONT)
{
IABContainer *lpContainer = static_cast <IABContainer *>(lpUnk);
LPMAPITABLE lpTable = NULL;
hRes = lpContainer->GetContentsTable(
ulFlags,
&lpTable
);
_ASSERT(lpTable);
ULONG ulRows;
hRes = lpTable->GetRowCount(0,&ulRows);
_ASSERTE(hRes == S_OK);
SRowSet *lpRows;

hRes = lpTable->QueryRows(
ulRows, // 获取所有行
0,
&lpRows
);
m_ListEmail.ResetContent();
for(ULONG i=0;i<lpRows->cRows;i++)
{
SRow *lpRow = &lpRows->aRow[i];
CString strTemp;

for(ULONG j=0;j<lpRow->cValues;j++)
{
SPropValue *lpProp = &lpRow->lpProps[j];


if (lpProp->ulPropTag == PR_DISPLAY_NAME_A)
strTemp = strTemp + " 名字: " + (char *)lpProp->Value.lpszA;
if (lpProp->ulPropTag == PR_EMAIL_ADDRESS_A)
strTemp = strTemp + " Email: " + (char *)lpProp->Value.lpszA;
if (lpProp->ulPropTag == PR_NICKNAME_A)
strTemp = strTemp + " 呢称: " + (char *)lpProp->Value.lpszA;
if (lpProp->ulPropTag == PR_ADDRTYPE_A)
strTemp = strTemp + " 类型: " + (char *)lpProp->Value.lpszA;
}
m_ListEmail.AddString(strTemp);

lpWABObject->FreeBuffer(lpRow);
}
lpWABObject->FreeBuffer(lpRows);
}
}
FreeLibrary(hinstLib);

// 读取成功后,置读取按钮无效
CButton* pBtn = (CButton*)GetDlgItem(IDOK);
pBtn->EnableWindow(FALSE);
}
}
附注:在包含进头文件Wab.h进行编释时,有时会在WABTAGS.H等地方编释不通,可按示例源码中所带WABTAGS.H文件加以修改,主要是原安装文件的内容有部分损坏。

第二、读取Office2000中所带Outlook2K中通讯薄方法

基本思路
由于Outlook2000下支持内部COM接口,可以利用此接口来读取其内部通讯薄中主要内容。
具体实现

一、 导入Outlook2000的库文件


// 导入读取Outlook2000中通讯薄内容所需库
#import "e:\Program Files\Microsoft Office\Office\mso9.dll" named_guids
#import "e:\Program Files\Microsoft Office\Office\MSOUTL9.olb" \
no_namespace exclude("_IRecipientControl", "_DRecipientControl")

二、 读取具体内容的详细代码 _ApplicationPtr pApp;
_ItemsPtr pItems;
MAPIFolderPtr pFolder;
_ContactItemPtr pContact;

HRESULT hr;

try
{
hr=pApp.CreateInstance(__uuidof(Application));
if (FAILED(hr))
{
MessageBox("Outlook实例创建失败","错误",MB_OK);
return;
}

// 获取默认Outlook中联系人文件夹
pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->GetDefaultFolder(olFolderContacts);
if (pFolder==NULL)
{
MessageBox("没有发现默认的Outlook联系人文件夹","错误!");
return;
}
else // 否则自行选择Outlook中一指定文件夹
{
pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->PickFolder();
if (pFolder==NULL)
return;

if (pFolder->GetDefaultItemType()!=olContactItem) // 不是联系人
{
MessageBox("选择不是联系人文件夹","错误");
return;
}
}

pItems=pFolder->GetItems();
if (pItems==NULL)
{
MessageBox("不能得到联系人条目","错误");
return;
}

pContact=pItems->GetFirst();

m_ListEmail.ResetContent();

while(1)
{
if (pContact==NULL)
break;
CString strTemp;
strTemp=(char *)pContact->GetFullName();
strTemp=strTemp + "<";
strTemp=strTemp + (char *)pContact->GetEmail1Address();
strTemp=strTemp + ">";
m_ListEmail.AddString(strTemp);

pContact=pItems->GetNext();
}
}
catch(_com_error &e)
{
MessageBox((char *)e.Description());

gjd111686 2005-02-28
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=660
Outlook培训 胥贵桂 湖北今贝生物科技有限公司 Outlook培训教程全文共13页,当前为第1页。 大纲 使用Outlook目的 邮件的使用和管理 联系人管理 工作日历使用 邮件礼仪 Outlook培训教程全文共13页,当前为第2页。 使用Outlook目的 高效传递信息,如何有效传递信息,降低成本 Outlook培训教程全文共13页,当前为第3页。 邮件的使用和管理 Outlook界面介绍 Outlook培训教程全文共13页,当前为第4页。 邮件的使用和管理 创建邮件 点击"新建"按钮 创建"未命名的邮件" 发送邮件 "收件人、主题" 必填项 附件大小<5M Outlook培训教程全文共13页,当前为第5页。 邮件的使用和管理 发送邮件 不允许发送非工作类型邮件 接收邮件 自动接收默认设置为5 / 30分钟 更改 范围 Outlook培训教程全文共13页,当前为第6页。 邮件的使用和管理 阅读邮件 答复、转发邮件 删除邮件 阅读正文 Outlook培训教程全文共13页,当前为第7页。 联系人管理 新建联系人 选择导航栏内"联系人",在工具栏选择"新建",在新窗口填写相关信息 姓氏做部门登记 名字如实填写 Outlook培训教程全文共13页,当前为第8页。 联系人管理 填写完成后,可以选择工具栏上"保存并关闭"即完成,如果需要继续添加,可以选择菜单栏"文件"下"保存并新建"继续该窗口操作,进行联系人添加。 快捷方式:在空白阅读栏上双击鼠标即可。 Outlook培训教程全文共13页,当前为第9页。 工作日历使用 创建约会 Outlook培训教程全文共13页,当前为第10页。 工作日历使用 创建会议 新建会议 收到的会议邀请邮件,接受会自动添加到日历 查看响应 Outlook培训教程全文共13页,当前为第11页。 邮件礼仪 邮件回复 需要添加回执的邮件 发送不能发全员, 无关人员不发 不能发工作无关内容 养成每天读邮件习惯 采用无纸化办公(节约用纸) Outlook培训教程全文共13页,当前为第12页。 谢谢大家! Outlook培训教程全文共13页,当前为第13页。 4 发送邮件级别默认为普通,需要快速投递到对方邮件时可点选:重要性高 ! 确定要建立约会的时间,选择新建约会,在新建约会窗口填写主题、地点、开始和结束时间、提醒时间、提醒声音、是否备注等。 回复要在当天 必须是重要文件并要回复的邮件内容 不能超过5M,超过容量的存放在服务器上 企业邮件的容量是有限的,应该有限的利用在办公方面
OQ100(邮件客户端)全球首款带管理功能的云邮件客户端,独具创新,专为小企业用户量身打造,是企业邮箱的最佳搭档,它不但具有outlook或foxmail一样的收发邮件功能,还具有合适小企业应用的管理功能,如CRM、OA、即时通等。与outlook或foxmail最大不同在于:客户往来邮件不再零散地存放在个人电脑上,而是利用云技术在服务器上统一按客户自动归档存放。 功能: 1. 统一邮件: 邮件按客户自动归档。 结束与客户往来邮件零散地存放在个人电脑上的时代,而是在服务器上统一按客户自动归档存放,便于查询和追溯。 聚焦邮件,管理很简单! 邮件是办公眼球每天必须关注的事情,OQ将工作流审批、公告、提醒等内容都以“邮件”的方式呈现给用户,让协同飞起来! 邮件转工作流,有效监控后续处理结果。 重要事情再也不会邮件转发就石沉大海了! 邮件群发,营销好帮手。 广告投递,客户关怀,批量筛选客户,精确营销。 2. CRM: 创新的客户分类管理。 按照销售漏斗或客户类别等方式自由创建目录,结合客户状态选择,多维分类管理海量客户。 以客户为心的信息存储管理。 客户往来历史资料直接保存在客户名下,报价文档、合同文档、跟进记录、邮件等等重要信息再也不会寻无踪迹! 方便的客户跟进提醒。 设置了提醒的客户用彩色标注,提醒信息都自动发到收件箱。 智能标注客户地图位置 根据客户地址自动在电子地图上标注位置,方便确认公交线路。 快速百度搜索客户资讯。 一键百度客户相关信息,跟进客户有的放矢。 来电自动弹屏,客户信息一目了然。 根据来电自动判定弹出相应客户信息,快速录入客户沟通情况。 3. OA: 自定义表单及审批流程,简单灵活。 请假单、报销单等等办公单据,简单方便按需定义。 方便的个人日程管理,团队日程一目了然。 部门经理及时掌握下属每周、每天工作安排,及其完成情况。 在邮件接收工作流提醒并直接审批,聚焦高效。 工作流待审批、客户跟进提醒、邮件集在一起,工作更高效。 公告、论坛,样样都有。 发布公告,论坛讨论,彰显企业文化。 项目管理,让进度变得可控! 创建项目团队,项目任务分配,项目进度监控,项目文档审核等等。 4. 企业存储网盘 免费大容量企业存储空间,与windows系统几乎相同的授权和操作方式,灵活创建目录,非常方便的文档粘贴和目录之间移动,office文档在线编辑保存,客户下可创建目录和存放文档。 5. 即时通讯: 拒绝娱乐私聊,只为企业用的即时通讯工具。 企业内部、商业伙伴之间及时沟通,增进合作。 创新的主题式在线沟通。 可以围绕客户发起多人在线沟通,如何打单,如何抢单,群策群力,增加签单率。 提供API可嵌入第三方软件,服务沟通更及时! 可为您的软件用户提供更好的在线服务,或者让用户非常方便地与上下游在线沟通。 6. 在线客服: 真正免费,无限客服席位。 OQ在线客服真正的100%免费。现在注册开通,就可以免费拥有所有功能和无限客服席位。 支持多网站,坐席分组,咨询转接,预览访客询问,常用语设定,主动邀请等。 眼睁睁地看着网站访客来了又走?不要再让网站上的商机白白错过了!即时与访客互动聊天,变流量为销量。 一目了然,监控访客信息。 网站上有多少访客在线、从哪里来的、来过几次、在看什么内容、有没有聊过天等,尽在掌控。轻松识别潜在客户。 自由定制客服规则及访客界面。 丰富的自定义选项:多种客服接待规则、主动邀请规则选择,自由定制公司Logo、邀请聊天窗口、聊天窗口、留言窗口等。 嵌入代码,在OQ客户端即可与访客聊天。 登陆到系统获取代码再粘贴到网页,就可以和您的网站访客即时聊天了! 与CRM集成,跟进回访更方便。 访客聊天后一键式生成客户档案,有效跟踪解决客户疑问,提高客户的满意度。 7. 会员协同: 跨企业电子签核。 真正帮客户省钱,将电子签核和邮件或传真结合,节约纸张,降低通讯费用,提供效率(提供和企业内部ERP接口)。 跨企业服务协同。 可自定义标准服务请求或投诉单据,向客户开放,客户填写后自动提醒内部服务流程启动,大大提高客户满意度。 跨企业项目协同。 可创建跨企业项目,统一项目协调,信息共享,有效降低项目成本,保证项目进度。全球首款带管理功能的云邮件客户端,独具创新,专为小企业用户量身打造,是企业邮箱的最佳搭档,它不但具有outlook或foxmail一样的收发邮件功能,还具有合适小企业应用的管理功能,如CRM、OA、即时通等。与outlook或foxmail最大不同在于:客户往来邮件不再零散地存放在个人电脑上,而是利用云技术在服务器上统一按客户自动归档存放。 OQ100(邮件客户端) v2.5.3 更新内容:     1、改善了速度,看是否有提高     2、修改了客户资料在Ctr C情况下被复制出来。     3、修正了新录入的记录不能打开的情况。     4、修正了文件不能增加评论     5、修正了自定义日期字段,录入时没有时分秒,但客户列表显示时却有。     6、修正了置顶只参置顶到当前页面。而不是在整个目录里的置顶。     7、修正了高级搜索的错误     8、修正了剪切粘贴的时候,如果把间分类的一栏也选进去,粘贴后没反映。     9、修正了日志或客户等扩展文本包含图片不能正确显示的问题。     10、修正了客户等项目在新增时未控制【配置】权限的问题     11、修正了发短信和邮件时,没有更改跟踪日期的情况     12、修正了客户在登录帐号时会自动退出的情况(邮件附件的原因)。     13、在高级查询增加了,创建日期字段     14、增加了批量导入时,联系人查重1、改善了速度,看是否有提高
1、PGP概述 PGP(Pretty Good Privacy)的创始人是美国的Phil Zimmermann(菲利普•齐默曼),他在1991年把 RSA 公钥体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计。因此 PGP 成为几乎最流行的公匙加密软件包。PGP有不同的实现,如GnuPG和Gpg4win,其GnuPG(Gnu Private Guard,简写为GPG)的核心算法是PGP,GnuPG本身是为Linux等开源操作系统设计的;而Gpg4win是windows下GnuGPG及图形前端的合集安装包,其核心为GnuPG,包括:(1)Kleopatra和GPA:GPG的密钥管理器,用于生成、导入和导出GPG密钥(包括公钥和私钥);(2)GpgOL:Outlook 的GPG支持插件;(3)GpgEX:资源管理器的GPG支持插件;(4)Claws Mail:内置GPG支持的邮件客户端。 PGP是一个基于RSA公钥加密体系的加密软件,是开源且免费的,后经互联网志愿者发展完善并广泛应用,具有如下特点:(1)选择最可用的加密算法作为系统的构造模块,所用算法已被广泛检验过,相当安全;并将这些算法集成到一个通用的应用程序,该程序独立于操作系统和处理器,并且基于一个使用方便的小命令集;(2)是一个开源项目,程序、文档在Internet上公开;(3)可以免费得到运行于多种平台上的PGP版本,具有广泛的可用性;(4)不由任一政府或标准化组织所控制,使得PGP得到了广泛信任;(5)与商业公司(Network Associates)合作,提供一个全面兼容的、低价位的商业版本PGP。2010年6月被赛门铁克公司收购。由于这些特点,使得PGP得到了广泛的应用。 PGP常用的版本是PGP Desktop Professional,它可以用来加密文件,可以用来对邮件保密以防止非授权者阅读,还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。同时,通过使用公钥密码算法,可以提供一种事先并不需要任何保密的渠道用来传递密匙的安全通讯方式。PGP功能强大,而且具有很快的速度,PGP提供的主要功能如表1.7.1所示。 表1.7.1 PGP的功能概述 功能 使用的算法 描述 消息加密 IDEA、CAST、3DES、TwoFish、ElGamal、RSA 发信人产生一次性会话密钥加密,用IDEA或CAST-128或3DES算法对消息进行加密;采用ElGamal或RSA算法用接收方的公钥加密会话密钥 数字签名 DSS/SHA-1、RSA/MD5 采用SHA-1或MD5消息摘要算法计算消息的摘要值(散列码),用发送者的私钥按DSS或RSA算法加密消息摘要 压缩 PKZIP 消息在传送和存储时可使用PKZIP压缩 E-mail兼容性 Radix-64 对E-mail应用提供透明性,采用基数64编码将加密后的消息(二进制流)转换为ASCII字符串 数据分段 - 为了适应最大消息长度限制,PGP执行分段和重新组装 2、PGP的密钥管理 PGP是一种混合密码系统,应用了多个密码算法,包括对称密码算法、非对称密码算法、消息摘要算法、数字签名等经典的密码学算法。为用户生成密钥对之后,可以进行邮件的加密、签名、解密和认证。在PGP使用的加密算法和用途如表1.7.2所示。 表1.7.2 PGP采用的各种密码算法及用途 密钥名 加密算法 用途 会话密钥 IDEA、AES 对传送消息的加解密,随机生成,一次性使用 公钥 RSA、Diffie-Hellman 对会话密钥加密,收信人和发信人共用 私钥 DSS/SHA、RSA/SHA 对消息的杂凑值加密以形成签名,发信人专用 口令 IDEA 对私钥加密以存储于发送端 从上表可以看出,PGP使用了四种类型的密钥:一次性会话传统密钥、公钥、私钥和基于口令短语的传统密钥/通行字短语。 会话密钥按ANSI X9.17标准,采用IDEA算法,以密文反馈模式(CFB)生成。当PGP用RSA算法为用户生成一个新的公钥/私钥对时,PGP会要求用户提供一个口令短语,对该短语使用MD5/SHA-1消息摘要算法生成一个散列码后,销毁该短语,从而把用户输入的口令短语转化为IDEA/CAST-128密钥,再使用这个密钥加密私钥,然后销毁这个散列码,并将加密后的私钥存储到私钥环。当用户要访问私钥环的私钥时,必须提供口令短语。PGP将取出加密后的私钥,生成散列码,解密私钥。 一个用户可能拥有多个公钥/私钥对,正确识别加密会话密钥和签名所用的特定公钥/私钥对的一个最简单的解决方案是将公钥和消息一起传送。但这种方式浪费了不必要的空间。PGP采用的解决方案是给每个公钥分配一个密钥标识(KeyID),并以极大的概率与用户标识(UserID)一一对应,即UserID和KeyID标识一个密钥。密钥标识至少为64位,因而密钥标识重复的可能性非常小。 PGP提供一种系统化的密钥管理方案来存储和组织这些密钥以保证有效使用这些密钥,它为每个节点(用户机器)提供一对数据结构,一个用于存放本节点自身的公钥/私钥对(即私钥环),另一个用于存放本节点知道的其他用户的公钥(即公钥环)。私钥环信息:时间戳、KeyID、公钥、私钥、UserID,其UserID通常是用户的邮件地址。也可以是一个名字,可以重名;公钥环信息:时间戳、KeyID、公钥、对所有者信任度、用户ID、密钥合法度、签名、对签名者信任度,其UserID为公钥的拥有者。多个UserID可以对应一个公钥。公钥环可以用UserID或KeyID索引。 如何保证用户公钥环上的公钥确实是指定实体的合法公钥,这是一个至关重要的问题。PGP提供几种可选的方案以减少用户公钥环包含错误公钥的可能性:(1)物理上得到对方的公钥。这种方式最可靠,但有一定局限性;(2)通过电话验证公钥;(3)从双方都信任的第三方(个体或CA)处获得对方的公钥。 此外,PGP支持密钥管理服务器,用户可以将公钥发布在集的密钥服务器上,供他人访问。 3、PGP的消息处理过程 PGP消息分成原始消息、签名部分和会话密钥部分三个部分。 PGP发送方处理消息的过程为:(1)签名:利用UserID作为索引,从私钥环得到私钥;PGP提示输入口令短语,恢复私钥;构造签名部分;(2)加密:PGP产生一个会话密钥,并加密消息;PGP用接收者UserID从公钥环获取其公钥;构造消息的会话密钥部分。 PGP接收方处理消息的过程为:(1)解密消息:PGP用消息的会话密钥部分的KeyID作为索引,从私钥环获取私钥;PGP提示输入口令短语,恢复私钥;PGP恢复会话密钥,并解密消息;(2)验证消息:PGP用消息的签名部分的KeyID作为索引,从公钥环获取发送者的公钥;PGP恢复被传输过来的消息摘要;PGP对于接收到的消息计算摘要,并与上一步的结果作比较。 4、PGP的信任模型 由于PGP重在广泛地在正式或非正式环境下的应用,所以它没有建立严格的公钥管理模式。尽管PGP没有包含任何建立认证权威机构或建立信任体系的规范,但它提供了一个利用信任关系的方法,将信任关系与公钥联系起来。PGP定义了与基于X.509真实的公钥基础设施(PKI)不同的证书模型,即所谓“信任网(Web of Trust)”模型。传统PKI模型依赖于CA层次体系验证证书和其的密钥。而PGP模型则允许多重地、独立地而非特殊可信个体签署的“名字/密钥”关联来证明证书的有效性,其理论是认为“只要有足够的签名,<名字/密钥>关联就是可信的,因为不会所有的签名者都是‘坏’的”。PGP的信任网就像人际关系网一样,通过下述方式让使用公钥的人相信公钥是其所声称的持有者:(1)直接来自所信任人的公钥;(2)由所信赖的人为某个自己并不认识的人签署的公钥。因此,在PGP得到一个公钥后,检验其签名,如果签名人自己认识并信赖他,就认为此公钥可用或合法。这样,通过所认识并信赖的人,就可以和总多不认识的人实现PGP的安全E-mail通信。 具体而言,在PGP是通过在公钥环的下述3个字段来实现Web of Trust信任模型的:(1)密钥合法性字段(key legitimacy field):指示用户公钥合法性的可信等级。信任级别越高,则用户标识UserID与密钥间的绑定关系就越强。这个字段是由PGP计算的;(2)签名信任字段(signature trust field):每一个公钥项都有一个或者多个签名,这是公钥环主人收集到的、能够认证该公钥项的签名。每一个签名与一个signature trust field关联,指示PGP用户信任签名者对此公钥证明的程度。key legitimacy field 是由多个signeture trust field 导出的;(3)所有者信任字段(owner trust field):指示此公钥对其他公钥证书进行签名的信任程度。这个信任程度是由用户给出的。 PGP使用以个人为心的信任模型,采取一种“社会信任链”的方式进行公钥分发。在这种方式下,用户可以自行决定对周围的联系人是否信任,并可以决定信任度的高低。用户只接收信任的朋友传送来的公钥,并且这些公钥都带有签名。这种方式反映了社会交往的本质,比较适合一般场合下的安全通信。 本实验通过实际操作,了解PGP/GPG4Win软件的常用功能,利用PGP/GPG4Win软件实现密钥管理、对文件和电子邮件的签名与加密等操作。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧