解决WPS及office二次开发接口无法注册的问题

问题描述

使用QAxObject的setControl注册接口时返回失败的解决方法

二次开发接口名称

WPS文字			KWPS.Aplication
WPS的Excel		KET.Application
WPS的演示文档		KWPP.Application
Word			Word.Application
Excel			Excel.Application
Powerpoint		Powerpoint.Application

二次开发接口的数值串:

WPS文字			{000209FF-0000-4b30-A977-D214852036FF}
WPS的Excel		{45540001-5750-5300-4B49-4E47534F4655}
WPS的演示文档		{44720441-94BF-4940-926D-4F38FECF2A48} 

解决方案1-更改注册表:

在win10的系统中wps的安装包没有将注册表的路径写全,所有需要手动书写注册表内容。
目前来看这种方式能解决在win10系统下的excel和ppt的模式

Excel的KET模式
reg copy HKCU\SOFTWARE\Classes\KET.Application HKLM\SOFTWARE\Classes\KET.Application /s /reg:32
reg copy HKCU\SOFTWARE\Classes\KET.Application.9 HKLM\SOFTWARE\Classes\KET.Application.9 /s /reg:32
reg copy HKCU\SOFTWARE\Classes\CLSID\{45540001-5750-5300-4B49-4E47534F4655} HKLM\SOFTWARE\Classes\CLSID\{45540001-5750-5300-4B49-4E47534F4655} /s /reg:32
PPT的KWPP模式
reg copy HKCU\SOFTWARE\Classes\KWPP.Application HKLM\SOFTWARE\Classes\KWPP.Application /s /f /reg:32
reg copy HKCU\SOFTWARE\Classes\KWPP.Application.9 HKLM\SOFTWARE\Classes\KWPP.Application.9 /s /f /reg:32
reg copy HKCU\SOFTWARE\Classes\CLSID\{44720441-94BF-4940-926D-4F38FECF2A48} HKLM\SOFTWARE\Classes\CLSID\{44720441-94BF-4940-926D-4F38FECF2A48} /s /f /reg:32

解决方案2-使用数值串注册:

以下是kwps的情况,其他接口类似处理即可

	QAxObject *m_pExcel = new QAxObject();
	if (!(m_pExcel->setControl("KWPS.Aplication")))
	{
		if (!(m_pExcel->setControl("{000209FF-0000-4b30-A977-D214852036FF}")))
			return;
	}

解决方案3-MMP的坑爹货,真特么的坑爹

为什么说坑爹呢,以ket为例,在win10的系统中如果你没有改注册表,那么你就算用数值串也注册不了,实际要解决这个问题还是要先改注册表,无非是用户自己改还是代码给你跑一遍的区别罢了。这种情况下,我特么的都把注册表改好了,我还需要加上这个使用数值串来注册吗?需要的!!ket和kwpp使用这种方式后能直接通过名称注册,可是特么的kwps还有坑啊,他就算这样了也不能通过名称注册。此处省略无数头草泥马

void run()
{
	QAxObject *m_pExcel = new QAxObject();
	RegisterKet()
	if (!(m_pExcel->setControl("KET.Application")))
	{
		if (!(m_pExcel->setControl("{45540001-5750-5300-4B49-4E47534F4655}")))
			return;
	}
}

void RegisterKet()
{
	QProcess p(NULL);
	p.setStandardInputFile("\\log.txt");
	QString command = "reg copy HKCU\\SOFTWARE\\Classes\\KET.Application HKLM\\SOFTWARE\\Classes\\KET.Application /s /f /reg:32";
	p.start(command);
	p.waitForFinished();
	command = "reg copy HKCU\\SOFTWARE\\Classes\\KET.Application.9 HKLM\\SOFTWARE\\Classes\\KET.Application.9 /s /f /reg:32";
	p.start(command);
	p.waitForFinished();
	command = "reg copy HKCU\\SOFTWARE\\Classes\\CLSID\\{45540001-5750-5300-4B49-4E47534F4655} HKLM\\SOFTWARE\\Classes\\CLSID\\{45540001-5750-5300-4B49-4E47534F4655} /s /f /reg:32";
	p.start(command);
	p.waitForFinished();
}
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值