我正在開發一個依賴於老化的OCX控件的.NET應用程序。該控制提供了允許用戶與航空公司預訂系統交互的終端界面。它已經在幾個VB6應用程序中'成功'使用,但是我們需要/希望在.NET應用程序中使用它。老化32位OCX控件無法在.NET中加載
因此,在使用.NET 4和Visual Studio 2010的Windows XP(x86)框中,我創建了使用已正確註冊的控件的Winforms和WPF應用程序。我已經實現了Reg Free COM,並且同時使用XCOPY和Click-Once,兩個項目都可以成功部署到Windows XP(x86)機器,並且都可以按預期方式工作,無需註冊控件。不幸的是,對於部署在Vista(x86)和Windows 7(x64)上的應用程序,在應用程序啓動但不提供控制的情況下無法實現。
爲了試圖理解問題,我嘗試在我的Windows 7(x64)開發環境中註冊控件。我試圖既:
- 使用正常REGSVR32註冊控制(64註冊表)
- 註冊放置在使用REGSVR32的Syswow64資料版本Syswow64資料目錄(86註冊表)
在控制這兩種情況下控件似乎已經成功註冊,並且在全新的Winforms項目中,我可以將控件添加到工具箱(圖標出現等)。然而,只要我把控件拖到窗體上,它就會在窗體的角落顯示爲一個小框(而不是像在XP上看到的終端窗口),即使Interop文件的生成方式與XP相同?
控制作爲選擇
當XP
控制看作是在Windows 7中看到我已經花了年齡拖網網的任何一種解決方案或類似的問題無濟於事。歡迎任何建議!
更新1:
正如@DanielHilgarth的建議,我已經創建使用控制和Windows 7(64位)運行它,煩人它拿起註冊COM組件和工作在VB6一個基本的應用程序如預期的那樣,儘管.NET應用程序或項目可以一起運行,並且看不到控制權!
更新2
如果我使用的控制(但要求控制進行註冊,即不能無章)我的XP盒創建一個基本的Winforms應用程序。在Windows 7(x64)機器上運行此操作時,如果無法註冊控件,將無法啓動(如預期的那樣)。對於應用程序而言,該控件是否註冊在x86/x64註冊表中,似乎無關緊要,它將以何種方式啓動,但無法控制!
更新3
我注意到,如果我運行一個WinForms項目(在XP中創建和COM章免費)在我的Windows 7環境下,除非控制登記表單設計器會失敗(如預期)再次似乎不關心該組件註冊哪個註冊表。一旦註冊表單設計器將被視爲(無控制),當構建以下警告看出:
研究這個警告一直徒勞的,這似乎表明,Visual Studio是找錯了註冊表路徑,但我無法找到解決這個問題的方法?
您可以在Win7機器上使用OCX控件成功使用VB6應用程序嗎? BTW:您可以將圖像上傳到imageshack或類似的託管服務提供商,並將它們鏈接到您的問題中。 – 2012-03-07 12:11:34
聽起來不像註冊問題,會產生異常。這聽起來像一個VB6控件,它不能在.NET窗體上託管。並不是每個場景都支持,它必須是一個相當行之有效的ActiveX控件。不能無窗,不能創建自己的頂層窗口等等。與該控件的所有者一起工作以繼續前進。 – 2012-03-07 12:53:37
@DanielHilgarth,這是一個非常好的問題。之前我沒有走過這條路,因爲以前的開發者的VB6應用程序非常差,需要他'定製'安裝它們!但我會放棄它! – snipey 2012-03-07 13:03:25