履歴やクッキーを残さない為、 一時的な調べもの等で、活躍しています。
でも、これを、 プログラミングから実行させようとすると、なかなか ... です。
理屈が分ってしまえば、どうって事ないのですが ... 。
自分の書いたプログラムの中から、他のソフトを立ち上げるには、
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 件のコメント:
コメントを投稿