修改activeX控件的uuid

公司裏的大部分工作都是在原來的基礎上進行的,難免會複用公司以往積累的代碼。在開發新的activeX控件時,如果直接建立新工程,然後一個個方法、事件挨個添加會比較麻煩,但又不能直接在原來的基礎上更改。所以就要修改控件的uuid,與之前的控件區別開來。下面介紹一下自己的做法,不懂什麼原理。(情況不同可能會產生不同的錯誤)。但應該是可行的,有待大家多試驗驗證。

首先,爲防止微軟狗逼他他媽繞,我們考慮將所有的id都進行替換,所以就不能只產生一個guid將某一個替換。我們可以選擇建立一個ocx控件的工程,建完之後,就生成了我們所需要的所有的uuid。總共生成了一下5個(暫時不清楚他們之間是否有關係,渴望得到高手指點):


第一個比較重要也很特殊:(具體不知道是幹什麼的,求大牛指點啊)

1、在XXXXPropPage.cpp中有一個:

// 初始化類工廠和 guid
IMPLEMENT_OLECREATE_EX(Cocxuuidtest1PropPage, "OCXUUIDTEST1.ocxuuidtest1PropPage.1",
0x9630859b, 0x729b, 0x4952, 0x8a, 0x3c, 0xa9, 0x9b, 0xe4, 0x7d, 0xe3, 0xd6)

這一個在下面的註冊函數裏會用到,也就是調用regsvr32  XXX.ocx來向系統註冊該ocx時會用到,在整個工程中就出現了一次,換上就行了。


其餘還有四個,都出現在XXXX.idl中,但是不止出現在XXXX.idl中,在XXXXidl.h中,XXXX.cpp中,XXXX_i.c中(這個文件不知幹嘛的)等等。不用管那麼多,反正用全部搜索然後挨個替換就好。

2、[ uuid(4CEF3CC2-9DDD-4183-A691-80E9659DD5CE), version(1.0),
  helpfile("VideoPlayer.hlp"),
  helpstring("VideoPlayer ActiveX 控件模塊"),
  control ]

3、 [ uuid(23E5AEF8-E535-4406-B461-19FF56EE129C),
        helpstring("VideoPlayer Control 的調度接口")]


3、 [ uuid(0C17E448-AEA8-47A2-90E8-924101FDFD76),
      helpstring("VideoPlayer Control 的事件接口") ]


4、 [ uuid(9592C6BA-E815-46EF-BB26-61B7E555DD73),
 helpstring("VideoPlayer Control"), control ]

將老項目中的的uuid,用新項目中對應的一一替換,只替換uuid,不要加進去工程名。注意形式,有0xXXXX的形式,搜索時只搜索每個uuid的前八位就好。


替換好之後,工程名字可以更改一下,更多的內容,大家再去探索,本人是初級菜鳥,做的不對的請大家不吝賜教。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章