2012-09-07 68 views
1

我用一個簡單的按鈕創建了一個非常簡單的用戶控件ActiveX,它顯示了一個MessageBox。在網頁中的ActiveX不起作用(顯示爲破碎的圖像)

namespace AxCPW 
{ 
    public partial class Test: UserControl, ITest 
    { 
     private void button1_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("Hello World"); 
     } 
    } 
} 

接下來我在我的asp.net項目中創建了一個網頁,並且我在其中嵌入了我的usercontrol。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
</head> 
<body> 
    <object id="myControl" name="myControl" classid="AxCPW.dll#AxCPW.Test" width="100" height="100"> 
    </object> 
</body> 
</html> 

的問題是,我看到一個破碎的形象,而不是我的用戶,我已經添加了我的本地Web服務器上的受信任的站點IE9,但沒有作品。

我知道的ActiveX是一種過時的解決方案,但我需要使用第三方SDK DLL(通過USB設備進行通信),我認爲唯一可用的解決方案是這樣的

回答

0

ActiveX是一種COM技術(本質上它是「COM-in-a-page」),並不理解.NET技術。

要使用在C#中開發的ActiveX控件,您需要expose the interface through COM。此外,您需要使用RegAsm而不是gacutil註冊該DLL,因爲您需要將COM註冊信息寫入註冊表,而不是將該程序集添加到GAC。最後,classid屬性必須是COM GUID,而不是「友好名稱」。

如果您需要自動部署ActiveX控件以及使用GUID的示例HTML,請查看我對Deploy C# ActiveX in a CAB for Internet Explorer use的回答。

+0

謝謝你的回答非常有用!現在我正在按照這個教程(http://www.olavaukan.com/2010/08/creating-an-activex-control-in-net-using-c/)現在我卡住了,因爲當我加載我的網頁頁面UAC框出現了,但是當我點擊YES時,我的ActiveX就沒有顯示出來......這個頁面是完全空白的 – enginnnn

+0

@enginnnn我只能使它與Windows XP一起工作倖運!恐怕我不能與UAC的問題幫助 - 對不起:( –

+0

禁用UAC我可以安裝我的ActiveX(我看到它在添加/刪除程序),但頁面仍然空白... – enginnnn