Imports System.Security.Permissions '必須 
				
				 
				Public Class Form1 
				 
				    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
				 
				        'ObjectForScripting WebBrowser コントロールに表示される Web ページ内のスクリプト コードからアクセスできるオブジェクトを取得または設定します。By MSDN 
				
				        Me.WebBrowser1.ObjectForScripting = New Acces_From_Web 'クラスのインスタンスを渡す 
				
				 
				 
				        'HTMLドキュメント GoogleMapなどjavascriptを読み込んだものでもよい。 
				
				        '当然、PG外部の任意のURLをWebBrowserに表示させてもよい。 
				
				        'ポイントは 
				
				        '「window.external.[VBのパブリックルーチン]」 
				
				        'という形で、javascritから.NETアプリケーションにパラメータ・値を投げられることだと思う。 
				
				        '.NETからDOMの操作はできると想像がつくが、これでその逆もできることになる。 
				
				        Dim htmldoc As String 
				 
				        htmldoc = "<!DOCTYPE html PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">" 
				        htmldoc = htmldoc & vbCrLf & "<html lang=""ja"">" 
				        htmldoc = htmldoc & vbCrLf & "<head>" 
				        htmldoc = htmldoc & vbCrLf & "<meta http-equiv=""content-type"" content=""text/html; charset=Shift_JIS"">" 
				        htmldoc = htmldoc & vbCrLf & "<title>sample</title>" 
				        htmldoc = htmldoc & vbCrLf & "</head>" 
				        htmldoc = htmldoc & vbCrLf & "<script language=""JavaScript"" type=""text/javascript"">" 
				        htmldoc = htmldoc & vbCrLf & "<!--" 
				        htmldoc = htmldoc & vbCrLf & "function call_vb_sub(){" 
				        htmldoc = htmldoc & vbCrLf & "	window.external.CallFromJavascript('called from script code');" 
				
				
				        htmldoc = htmldoc & vbCrLf & "}" 
				        htmldoc = htmldoc & vbCrLf & "// -->" 
				        htmldoc = htmldoc & vbCrLf & "</script>" 
				        htmldoc = htmldoc & vbCrLf & "<body>" 
				        htmldoc = htmldoc & vbCrLf & "<form action="" method=""post"" enctype=""multipart/form-data"" name=""vb1"">" 
				        htmldoc = htmldoc & vbCrLf & "<input type=""button"" name=""call_vb_sub_b"" value=""VBのサブルーチンをコールする"" onclick=""call_vb_sub()"">" 
				        htmldoc = htmldoc & vbCrLf & "</form>" 
				        htmldoc = htmldoc & vbCrLf & "</body>" 
				        htmldoc = htmldoc & vbCrLf & "</html>" 
				        WebBrowser1.DocumentText = htmldoc 
				 
				 
				    End Sub 
				 
				 
				 
				End Class 
				'PermissionSet 複数の異なる種類のアクセス許可を格納できるコレクションを表します by MSDN 
				
				'SecurityAction.Demand  コール スタック内の上位にあるすべての呼び出し元に、現在のインスタンスによって指定されているアクセス許可が与えられていない場合は、実行時に強制的に SecurityException を呼び出します。by MSDN 
				
				'Name:="FullTrust" システムへのフルアクセス 参考http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_08/idnfw11_08_02.html 
				
				'ちなみにこれを書かなくても動く。MSのサンプルにはついている。 
				
				 
				'ComVisibleAttribute 個々のマネージ型またはマネージ メンバ、またはアセンブリ内のすべての型の COM 参照可能範囲を制御します。by MSDN 
				
				'これは、マネージ型が COM から参照できることを示します。 by MSDN 
				
				 
				<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _ 
				<System.Runtime.InteropServices.ComVisibleAttribute(True)> _ 
				Public Class Acces_From_Web 
				    Public Sub CallFromJavascript(ByVal value As String) 
				        MessageBox.Show("これはjavascriptから呼ばれたメソッド" & vbCrLf & value) 
				    End Sub 
				End Class
 
  |