iI有任何方法可以將GUI組件添加到已在運行的應用程序中嗎?將GUI組件添加到預編譯的應用程序
I.E.在第三方GUI中添加額外的選項卡?
我有一個第三方應用程序,我需要在選項卡式界面中添加一個額外的選項卡(或者甚至是一個鏈接到新窗體的按鈕)。
我可以看到UISpy和Spy ++的UI組件,但不能找到一種方式來改變或增加他們...
任何想法?也許改變記憶?
更新:
我創建環繞第三方應用程序的應用程序是.NET,但第三方應用程序是用VB6
iI有任何方法可以將GUI組件添加到已在運行的應用程序中嗎?將GUI組件添加到預編譯的應用程序
I.E.在第三方GUI中添加額外的選項卡?
我有一個第三方應用程序,我需要在選項卡式界面中添加一個額外的選項卡(或者甚至是一個鏈接到新窗體的按鈕)。
我可以看到UISpy和Spy ++的UI組件,但不能找到一種方式來改變或增加他們...
任何想法?也許改變記憶?
更新:
我創建環繞第三方應用程序的應用程序是.NET,但第三方應用程序是用VB6
我想這是與反思完全可能的,藉助於假設它沒有被混淆,則爲Reflector。探索反射的源代碼,直到找到表單的類和要修改的表單的實例,然後用反射調用Controls.Add
方法或其他任何需要的方法。但是除非你知道究竟是你正在做什麼,你可能會遇到一些來自應用程序的意外行爲。
我認爲這是一個.NET WinForm應用程序。如果您沒有源文件並且該應用程序不太大,則可以嘗試「反編譯」它並添加代碼以成爲新的應用程序。
我是Lutz Roeder的反射器的一個很好的粉絲,它從CLR代碼庫中生成代碼。 這是他的工具鏈接。 http://www.lutzroeder.com/dotnet/
更新:
darkassassin93
是正確的,希望應用程序不模糊:)
我創建的用於封裝第三方應用程序的應用程序是.NET,但第三方應用程序是用VB6編寫的,所以編譯器不會工作得很好,但我會尋找利益:) :) – Darbio 2009-11-01 23:46:20
@JD:我明白了,我已經用您的評論更新了您的問題,並且還添加了「VB6」標籤。 – 2009-11-01 23:52:43
你可以用ResHacker。
http://www.angusj.com/resourcehacker/
基本上,每個GUI形式被保存爲一個特定的Windows可執行文件的內部的資源。 ResHacker有一個內置的GUI編輯器,用於編輯「對話框」(因爲它們在ResHacker中被引用)。
你應該有很強的理由這樣做。
我認爲你可以Add Tab using pure WinAPI和TabCtrl_InsertItem Macro
開始如果你有HWND的TabControl的你可以嘗試添加自己的標籤。與TabCtrl_InsertItem。雖然我不認爲有可能從另一個過程中做到這一點。但你應該嘗試。
只是爲了澄清:你正在談論一個沒有被設計來支持這個應用程序,正確的? – 2009-11-01 23:49:02
是的,應用程序是由外部源編寫的,因此我無法以編程方式執行此操作。 該應用程序具有選項卡式界面,並在VB6中編寫了預.NET程序。 – Darbio 2009-11-02 00:02:30
我的建議是不要這樣做,因爲您發現的任何解決方案都可能非常脆弱,並導致第三方應用程序偶爾崩潰。您可以聯繫第三方應用程序的作者並討論解決方案嗎? – MarkJ 2009-11-02 12:25:40