2015年10月1日木曜日

VB アプリからプライベートでブラウザを立ち上げる

ブラウザを使っていて、場合によっては、プライベートなモードが重宝します。
履歴やクッキーを残さない為、 一時的な調べもの等で、活躍しています。
でも、これを、 プログラミングから実行させようとすると、なかなか ... です。
理屈が分ってしまえば、どうって事ないのですが ... 。


自分の書いたプログラムの中から、他のソフトを立ち上げるには、
Process を Start させますね。

何も、実行ファイルの完全パスが分らなくても、 OS に探してもらえば良いので、
単に、実行ファイル名だけ で呼び出します。
また、ファイルには、拡張子に紐付けられたプログラムがある場合が殆どでしょうから、
ファイル名だけ で、登録されたソフトが 該当ファイルを開いて立ち上がりますね。

普通は、これで、充分です。

しかし、一歩、踏み込んで、コマンドに引数を与えて、特殊なモードで起動する 場合には、工夫が必要です。
先ず、手始めには、 cmd.exe 等を立ち上げて、 その調査をする事になります。
そうして、 引数や コマンドの手順が分れば、 それを、自分のプログラムに組み込んで行く事になります。

ここでは、 あるアプリから、ブラウザをプライベートなモードで立ち上げる場合について説明します。


この例では、ComboBox をひとつ、Button を3つ設けて、
ComboBox に用意した URL にアクセスする例です。
ひとつ目の Button では、新規の Private モードでブラウザを立ち上げ、
ふたつ目は、現在 選択されているモードでタブを増やし、
三つ目は、押す度に、新規の Private モードで、次々とタブを開くものです。 (他の IE を途中で選択しない場合)
一応、ブラウザは IE (Internet Explorer) を想定しています。
  ふたつ目の Button では、 普通モードのブラウザが 現在 選択(Active に)されていれば、そちらでタブが開かれる点に留意です。


コードはこちら。

 Public Class Form1
    Private inPrivateCounter As Integer = 0

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Button1.Text = "Show Priv."
        Me.Button2.Text = "Show Add"
        Me.Button3.Text = "Show Auto"
        Me.ComboBox1.Items.Add("http://www.Google.co.jp/")
        Me.ComboBox1.Items.Add("http://www.bing.com/")
        Me.ComboBox1.SelectedIndex = 0

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        startBrowsePrivate(Me.ComboBox1.Text)
    
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        startBrowseAdd(Me.ComboBox1.Text)

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If inPrivateCounter = 0 Then
            startBrowsePrivate(Me.ComboBox1.Text)
        Else
            startBrowseAdd(Me.ComboBox1.Text)
        End If
        inPrivateCounter = inPrivateCounter + 1
    End Sub

    Private Sub startBrowsePrivate(ByVal pageURL As String)
        Dim startInfo As New ProcessStartInfo("IExplore.exe")
        startInfo.Arguments = "-private " & pageURL
        Process.Start(startInfo)

        '新しい inPrivate な IE を起動
    End Sub

    Private Sub startBrowseAdd(ByVal pageURL As String)
        Dim startInfo As New ProcessStartInfo(pageURL)
        Process.Start(startInfo)

        '現在 Active な IE 上に新規のタブで表示 inPrivate なら、そこに。
    End Sub

End Class

尚、各ブラウザによって、プライベート モードの起動に係るオプション(コマンド引数)には違いがあります。
無論、バージョンアップ等で、 実行ファイル名や 引数の仕様変更があれば、 まともには 動かなくなります。
現在 (2015/09) の仕様では、問題なく動いていますが ... 。



さて、 個人的には、 Firefox も使っていますので、 その場合のヒント。  注: VB のコードではありませんよ。.
'Notice:
'Case FireFox (On cmd.exe) >start firefox -private-window "http://www.bing.com/"
'                     Needs timeout command, among [New] -private-window and [Add] URL. (Wait to Activation the browser.)
具体的なコードは書いていませんが ... 。  分りますよね。 :) 。



0 件のコメント:

コメントを投稿