关于COM组件的CreateDispatch参数问题

6057 2016-09-02 09:19:10
通过COM组件的CreateDispatch()调用应用程序接口,word的第一个参数是"Word.Application",Excel的是"Excel.Application",
ppt的是"PowerPoint.Application",Photoshop的是"PhotoShop.Application",这些都成功了。现在我MFC->添加类->TypeLib中的MFC类->文件->调用VisualBasic的接口,代码如下:

Application app;
COleException *e = new COleException;

if(!app.CreateDispatch(_T("VisualBasic.Application"),e))
{
e->ReportError(MB_OK);
return;
}
else
{
MessageBox(_T("启动VisualBasic服务成功"),NULL,NULL);
}


却提示无效的类字符串。请问第一个参数该怎么写,怎么知道不同的应用程序的第一个参数是什么?
(PS:不好意思没分了,全部提问题了)
...全文
3332 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谁能不能加我下QQ,帮我解答几个问题?我QQ:787178025 非常感谢!
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
excel_application_.CreateDispatch(_T("EXCEL.APPLICATION"), NULL)) 如何确定这个EXCEL.APPLICATION的?我从OLeView.exe上怎么查找这个ID?
6057 2016-09-02
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
学会使用OleView.exe ?


我使用OleView.exe步骤: Object classes->Grouped by component Category->Controls,因为之前掉用word,excel.ppt都成功了,所有我找找看这三个的progID,但是却找不到Word.Application,Excel.Application这些。
6057 2016-09-02
  • 打赏
  • 举报
回复
引用 6 楼 xuddk727 的回复:
你要启动vb干嘛?动态生成代码再行编译?
把我问到了,我先问问我的负责人,下午再回复你
许文君 2016-09-02
  • 打赏
  • 举报
回复
你要启动vb干嘛?动态生成代码再行编译?
  • 打赏
  • 举报
回复
引用 3 楼 qq_26611129 的回复:
[quote=引用 2 楼 zjq9931 的回复:] [quote=引用 楼主 qq_26611129 的回复:] 通过COM组件的CreateDispatch()调用应用程序接口,word的第一个参数是"Word.Application",Excel的是"Excel.Application", ppt的是"PowerPoint.Application",Photoshop的是"PhotoShop.Application",这些都成功了。现在我MFC->添加类->TypeLib中的MFC类->文件->调用VisualBasic的接口,代码如下:

	Application app;
	COleException *e = new COleException;

	if(!app.CreateDispatch(_T("VisualBasic.Application"),e))
	{
		e->ReportError(MB_OK);
		return;
	}
	else
	{
		MessageBox(_T("启动VisualBasic服务成功"),NULL,NULL);
	}
却提示无效的类字符串。请问第一个参数该怎么写,怎么知道不同的应用程序的第一个参数是什么? (PS:不好意思没分了,全部提问题了)
要填写什么,需要到注册表里面看 在HKEY_CLASSES_ROOT下面,这个下面内容很多。 里面开始是文件类型,后面是CLSID,再然后才是你要填写的东西。[/quote] 请问这个怎么看啊,能说的再详细点吗,这方面完全不懂@zjq9931 [/quote] 这些“文件夹”就是你要填写的内容。 或者用赵老师说的使用VS的Ole/Com Object Viewer查看也很好的。 其实这块对COM有了了解,就清楚了。好吧,其实我对COM也不熟。。。 可以再等等看其他人的说法。
赵4老师 2016-09-02
  • 打赏
  • 举报
回复
学会使用OleView.exe ?
6057 2016-09-02
  • 打赏
  • 举报
回复
引用 2 楼 zjq9931 的回复:
[quote=引用 楼主 qq_26611129 的回复:]
通过COM组件的CreateDispatch()调用应用程序接口,word的第一个参数是"Word.Application",Excel的是"Excel.Application",
ppt的是"PowerPoint.Application",Photoshop的是"PhotoShop.Application",这些都成功了。现在我MFC->添加类->TypeLib中的MFC类->文件->调用VisualBasic的接口,代码如下:

Application app;
COleException *e = new COleException;

if(!app.CreateDispatch(_T("VisualBasic.Application"),e))
{
e->ReportError(MB_OK);
return;
}
else
{
MessageBox(_T("启动VisualBasic服务成功"),NULL,NULL);
}


却提示无效的类字符串。请问第一个参数该怎么写,怎么知道不同的应用程序的第一个参数是什么?
(PS:不好意思没分了,全部提问题了)


要填写什么,需要到注册表里面看
在HKEY_CLASSES_ROOT下面,这个下面内容很多。
里面开始是文件类型,后面是CLSID,再然后才是你要填写的东西。[/quote]

请问这个怎么看啊,能说的再详细点吗,这方面完全不懂@zjq9931
  • 打赏
  • 举报
回复
引用 楼主 qq_26611129 的回复:
通过COM组件的CreateDispatch()调用应用程序接口,word的第一个参数是"Word.Application",Excel的是"Excel.Application", ppt的是"PowerPoint.Application",Photoshop的是"PhotoShop.Application",这些都成功了。现在我MFC->添加类->TypeLib中的MFC类->文件->调用VisualBasic的接口,代码如下:

	Application app;
	COleException *e = new COleException;

	if(!app.CreateDispatch(_T("VisualBasic.Application"),e))
	{
		e->ReportError(MB_OK);
		return;
	}
	else
	{
		MessageBox(_T("启动VisualBasic服务成功"),NULL,NULL);
	}
却提示无效的类字符串。请问第一个参数该怎么写,怎么知道不同的应用程序的第一个参数是什么? (PS:不好意思没分了,全部提问题了)
要填写什么,需要到注册表里面看 在HKEY_CLASSES_ROOT下面,这个下面内容很多。 里面开始是文件类型,后面是CLSID,再然后才是你要填写的东西。
6057 2016-09-02
  • 打赏
  • 举报
回复
这是CreateDispatch()的声明

// Operations
	BOOL CreateDispatch(REFCLSID clsid, COleException* pError = NULL);
	BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);
许文君 2016-09-02
  • 打赏
  • 举报
回复
引用 8 楼 qq_26611129 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:]
学会使用OleView.exe ?


我使用OleView.exe步骤: Object classes->Grouped by component Category->Controls,因为之前掉用word,excel.ppt都成功了,所有我找找看这三个的progID,但是却找不到Word.Application,Excel.Application这些。
[/quote]
因为要支持多版本,所以实质上是一个类似于shortcut的progID,而你创建的事application,自然是通过application去找,


而就你的问题,实质上虽然这些同是基于微软office那一系列架构,但是word之流与vb用途迥异,你们负责人只是想当然了,所以先想清楚需求再说

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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