2012-07-18 81 views
1

我被抛入了遗留系统增强。它是VB6 + asp(老派的asp)系统。所以基本上,系统会做一些数据库查询并将结果推送到一个activeX对象(一个OCX)中,以便信息以条形码形式打印。确定并更改一个VB6 OCX ClassID

我被要求修改OCX,以便它不打印一些徽标,但是,我需要为现有打印目的保留原始的一个。所以,我“另存为”原来的一个,并设法成功修改它。

系统应将OCX安装到用户PC中。但是我注意到,不是为了两种不同的打印目的而使用两个不同的OCX来运行,系统仅使用最新的OCX用于两种打印。 OCX的命名不同。他们共享的唯一的东西是CLASS ID。

如何确定新重新编译的OCX的CLASS ID,是否可以对其进行更改?怎么样?

+0

你有没有得到的结果? – 2017-01-10 11:10:32

+1

@ImranKhanHunzai看看答案:P – 2017-01-12 03:30:56

回答

2

OCX没有ClassId。然而,他们内部的控制。

要查看各种GUID的值(除了ClassIds还有其他参与者),一种简单的方法是通过Visual Studio 6.0附带的OLE View工具查看typelib信息,Win2k资源工具包等。

+0

完美无瑕!那么每个控件都是独特的吗 – 2012-08-05 09:47:17

+1

如果我理解这个问题,是的,每个控件或类都需要一个唯一的Id,因为这是它们所在的库(x.ocx,y.dll等)以及其他细节在运行时的位置。 – Bob77 2012-08-05 22:07:44

2

的CLASSID是跨越旧的控制的版本保持兼容性的COM的方式。你真的不想改变它。在同一台机器上保留两个版本也是不可取的。通过创建一个忽略横幅的控件的“新”版本,让编译器为控件分配一个新的CLSID,保持路径干净,您可能会获得最佳效果。

+1

可以说我添加了新的控件,我该如何确定OCX类的ID? – 2012-07-18 04:29:53