ActiveX開発心得

3880 ワード

C#とVB.netを通じてActiveXをしたいなら、できるだけ早くこの考えを打ち消すことをお勧めします.のNetはActiveX技術が時代遅れだと思っているので、C#もVb.netもActiveXはできません.C#とVB.netは似たようなものを作ることができますが、ActiveXではなくwindowsコントロールと呼ばれ、クライアントマシンが.net frameworkをインストールしなければ実行できないことを前提としています.しかし、現在多くの機器に.net frameworkがインストールされていないため、少なくともVistaの普及が悪くないまで待たなければ、ActiveX技術は歴史の舞台を脱退することはできない.
では、ActiveXを開発するにはどんな技術を採用すればいいのでしょうか.VB 6とC++またはC++.netを使用できます.私はC++が分からないので、C#と差が少ないと思っていたが、VSでMFC ActiveXプロジェクトを新設し、開けてみるとコードが天書のように全く読めないので、VB 6を採用することにした.VBは私もできませんが、VBは相対的に簡単で、資料も多いです.
VBでActiveXをどのように開発するかはここで詳しくは言わないが、この文章を参考にすることができる:ASPとActiveXコントロールのインタラクティブな実戦(http://blog.csdn.net/online/archive/2004/08/09/68872.aspx)は、非常に詳細に述べている.
ここでは、私が直面しているいくつかの難題だけを紹介します.1.ActiveXの内部で、どのようにしてWebページのフォームを提出しますか?
jsでformをAcitveXに渡すことができます.Html要素(dom)をVBで操作するには、プロジェクト>リファレンス>Microsoft HTML Object Library>OK
次に、コードにクライアントformを受け入れる方法を追加します.Public HtmlForm As HTML Form'htmlform値Public SubInit(ByRef form As HTML Form)Set HtmlForm=formEnd Sub
クライアントhtmlはformをActiveX内部に渡します:http://www.w3.org/1999/xhtml”>         window.onload = function(){       document.getElementById("KelliLogin").Init(form 1);//formをActiveX内部に渡す     }       
   
           
   

フォーマットをActiveXに渡すと、ActiveXはこのformを操作できます.ユーザーがActiveXの内部にあるボタンをクリックして、このフォームをコミットします.Private Submit_Click()    HtmlForm.Action = "test.aspx?username=123"    ...jsのようにformを任意に設定できる方法と属性    HtmlForm.SubmitEnd Sub
次に2番目の質問2.Activexコントロールをセキュリティスクリプトとしてマークする方法について説明します.この問題は、最初の質問から発生します.通常、ActiveXコントロールは開発および登録された後、Webページで実行されると、IEはスクリプトが安全だとは思いません.このサイトがActiveXコントロールを安全ではない方法で使用することを阻止していることを示すIEがポップアップします.そのため、このページは現実的かもしれません.正しくありません.
この問題を解決しなければ、私たちの前の仕事は無駄です.どうすればいいですか?クライアントレジストリを変更する必要があります.
次のような項目を追加します({06889605-B8D0-101A-91F1-00608CEAD5B3}の代わりにコントロールのクラスIDを使用します).キーを次のクラスIDに関連付けます.
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4} 

HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}

しかし、クライアントマシンのレジストリをどのように変更しますか?ActiveXコントロールのインストール時に操作する必要があります.そのため、ActiveXインストーラを作成する必要があります.ここではVisual Studio 2005を使用してインストーラを作成します.
1.vsを開き、インストールプロジェクトを新規作成します.2.ソリューションエクスプローラウィンドウでプロジェクトを右クリック>追加>ファイルの追加>Hello.ocx.3などの生成したAtiveXファイルを選択します.プロジェクトを右クリックし、ビュー>レジストリを選択します.   1>上記のレジストリノードの順にレジストリを追加    2>レジストリの最後のセクションで右クリック>プロパティウィンドウ>AlwaysCreateをtrueに設定します.このレジストリ項目は、空であってもインストール項目の一部として使用されます.これにより、設定後、インストール時にクライアントレジストリが自動的に変更されます.4.インストール手順を生成する5.インストーラを実行する6.ActiveXを含むページを参照します
あなたは、そのヒントがなく、IEに信頼サイトを追加する必要がなく、直接使用できることに気づきます!特に爽やかではありませんか?
ここまで、紹介の差は多くありません.もういくつかの問題があります.1.インストールパッケージを作らないで、上の問題は解決できますか.2.ActiveXにデータを保存する方法.例えば、ユーザー名を1回入力してから、2回目に覚えておきます.興味のある方は私と一緒に検討したり、教えてくれたりして、ありがとうございます.参考資料:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/_core_upgrading_an_existing_activex_control_to_be_used_on_the_internet.asp http://wenhaobing.spaces.live.com/blog/cns!9d6443eb4bff9145!143.entry