我們有一箇舊的OCX,用於舊的VB應用程序。 現在他們都不支持開發者。並且源代碼也不可用。 OCX包含一個計算值的函數,現在我們必須更改計算公式。 有沒有什麼辦法可以重寫方法並創建具有相同功能的新聞ocx?將功能添加到編譯的OCX中
編輯:ocx包含一個使用mscomctl2.ocx的日期選擇器,我們的公式基於選定的日期,所以如果我們可以找到一個解決方案,在選擇後更改日期,我們可以達到我們的需要。
我們有一箇舊的OCX,用於舊的VB應用程序。 現在他們都不支持開發者。並且源代碼也不可用。 OCX包含一個計算值的函數,現在我們必須更改計算公式。 有沒有什麼辦法可以重寫方法並創建具有相同功能的新聞ocx?將功能添加到編譯的OCX中
編輯:ocx包含一個使用mscomctl2.ocx的日期選擇器,我們的公式基於選定的日期,所以如果我們可以找到一個解決方案,在選擇後更改日期,我們可以達到我們的需要。
還有另一種方法,只有在您是該ocx文件的所有者時才能使用。您可以使用vb反編譯器從ocx文件獲取源代碼,以便修改和創建新的源代碼。這裏是一個反編譯
您可以decompile OCX,使用鉤子,內存補丁或完全重寫它作爲其他意見和答案提及。
但我會嘗試的第一件事是圍繞OCX進行封裝。如果您的功能取代了某些功能或在之前或之後添加了功能,則封裝(AKA代理模式)是最佳選擇。
此方法的示例是使用OpenGL的dx3d周圍的DLL。
嘗試掛鉤它http://stackoverflow.com/q/15756386/1291428 – Sebas 2014-10-18 05:36:56
掛鉤鏈接將是沒有用的。你不能修改編譯的OCX。你可以用一個新的OCX替換它(對舊版本進行二進制兼容編譯),但是你需要在其公共接口中複製所有的功能。 – 2014-10-18 11:24:17
@AlexK。難道你只是編寫另一個控件,它是用戶描述的包裝的一個包裝,並在Ashian感興趣的一個函數中進行正確的計算?我想這取決於它是什麼樣的控制,並且它暴露了他需要做的計算他需要做的屬性。 – 2014-10-18 12:06:49