VBで便利な関数のまとめです。
今やネットワークと無縁なソフトを作ることも少ないのではないでしょうか。
ここではネット関連を調べたり操作する関数で使えそうなものをまとめてみました。
インターネット関連
ネット接続をしらべる
接続しているかどうかは「My.Computer.Network.IsAvailable」を調べることで分かります。
以下は「My.Computer.Network.IsAvailable」がFalseなら接続してくださいというメッセージを出します。
If Not (My.Computer.Network.IsAvailable) Then
MsgBox("インターネットに接続してください。")
End If
サーバにPingを送って調べる
サーバが稼働しているかを調べる手段の一つがPingを送ることです。
以下はPingを送って返りを待つサンプルコードです。
Dim pingObj As New System.Net.NetworkInformation.Ping()
Dim pingReply As System.Net.NetworkInformation.PingReply = pingObj.Send("www.yahoo.co.jp")
If pingReply.Status = System.Net.NetworkInformation.IPStatus.Success Then
MsgBox(pingReply.RoundtripTime)
End If
pingObj.Dispose()
ネット上のファイルをダウンロード
インターネット上の画像ファイルなどをダウンロードするには「WebClient 」オブジェクトを利用します。
「DownloadFile」関数でURLリンクと、保存先のファイル名を指定します。
Dim Internet As Net.WebClient = New Net.WebClient()
Dim URL As String = "https://komatter.com/img/banner.png"
Dim fn As String = "C:\_work\temp.png"
Internet.DownloadFile(URL, fn)
ブラウザ関連
ウェブページをフォーム内に表示する
ウェブページをフォームの中に表示させる場合、コントロールをはるのが楽です。
ツールボックスで「WebBrowser」のコントロールを選択。
フォーム上にドラッグして配置します。
プロパティで「Url」のところにリンク先を指定します。
フォームを実行すると、無事このようにKomatter.comのサイトを表示できました。
ブラウザのURLを変更する
フォーム上に張り込んだブラウザのURLを変更する場合、文字列を指定するだけだとエラーになります。
Uri関数を使ってURLリンクを指定すると動作するようになります。
WebBrowser1.Url = New Uri("http://yahoo.com")
ウェブブラウザのスクリプトエラーへ対処する
スクリプトを使っているページではスクリプトエラーが出る場合があります。
対策としてWebBrowserにあるScriptErrorの表示設定をする方法があります。
しかしこれはエラーダイアログを抑えるだけで、ページの機能が使えない可能性は残ります。
ぐぐると、レジストリを変更してレンダリングエンジンを変更する方法があるようです。
Untitled - IE9エンジンをIEコンポーネントブラウザで使う
スクリプトエラーの原因と対策: DOBON.NETプログラミング掲示板過去ログ
Edgeを起動する
Edgeが起動できないか試してみます。
Edgeがインストールされているパスは「C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe」です。
それを指定してアプリの起動を試みます。
が、これではなぜか動きませんでした。
Dim edgepath As String
edgepath = "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe"
System.Diagnostics.Process.Start(edgepath)
ただし既定のアプリをEdgeにしれば、URLのリンクで起動できるとは思います。
まず設定で既定のアプリをEdgeにします。
URLリンクを指定して既定のブラウザが開くようにします。
すると無事Edgeが動きました。
Dim edgepath As String
edgepath = "http://yahoo.co.jp"
System.Diagnostics.Process.Start(edgepath)