Powershellでウェブブラウザを作る6【ボタン操作】

コンピュータ
PowerShellのあれこれ

ウェブブラウザを操作するために進む・戻る・ホームボタンを作ります。

操作

戻る
ホーム
進む
<#
.SYNOPSIS
 ボタン操作・進む・戻る・ホーム
.DESCRIPTION
 説明
#>

using namespace System.Windows.Forms

param (
    [string]$StartUrl = "https://www.google.co.jp/"
)


function Main
{
    param (
        $url
    )

    $form = [Form]::new()

    # 最初のページに移動
    $btnHome = [Button]::new() | % {
        $_.Dock = [DockStyle]::Left
        $_.Text = "△"
        $_.size = "24,24"
        $_
    }
    $btnHome.Add_Click({
        $wb.Navigate([Uri]::new($url))
    })

    # 前のページに移動
    $btnBack = [Button]::new() | % {
        $_.Dock = [DockStyle]::Left
        $_.Text = "<"
        $_.size = "24,24"
        $_
    }
    $btnBack.Add_Click({
        if ($wb.CanGoBack)
        {
            $wb.GoBack()
        }
    })

    # 次のページへ移動
    $btnForward = [Button]::new() | % {
        $_.Dock = [DockStyle]::Left
        $_.Text = ">"
        $_.size = "24,24"
        $_
    }
    $btnForward.Add_Click({
        if ($wb.CanGoForward)
        {
            $wb.GoForward()
        }
    })

    $panel = [Panel]::new() | % {
        $_.Dock = [DockStyle]::top
        $_.size = "24,24"
        $_
    }

    $ab = [Textbox]::new() | % {
        $_.Dock = [DockStyle]::top
        $_.Text = $url
        $_.size = "24,24"
        $_
    }

    # フォーカスをロスト
    $ab.add_LostFocus({
        
        # テキストボックスの値が変更されている
        if ($ab.Modified)
        {
            # アドレスページへ移動
            $wb.Navigate([Uri]::new($ab.Text))
            $ab.Modified = $false
        }
    })

    $wb = [WebBrowser]::new() | % {
        $_.Dock = [DockStyle]::Fill
        $_
    }

    # ページの読み込み完了
    $wb.Add_DocumentCompleted({
        # 現在表示中のページとテキストボックスのアドレスを比較
        if ($ab.Text -ne $wb.Url)
        {
            # 異なる場合Urlをセット
            $ab.Text = $wb.Url
        }
    })

    $panel.Controls.AddRange(($ab, $btnForward, $btnHome, $btnBack))
    $form.Controls.AddRange(($panel,  $wb))

    $form.Add_Load({
        $wb.Navigate([Uri]::new($ab.Text))
    })


    [Application]::run($form)
}

Main $StartUrl

ボタン配置はとりあえずこんな感じなりました。

ボタンとアドレスバーの配置用にパネルを用意していますが、DockStyleの使い方がこれでよいのか自身がありません。アドレスバー用のテキストボックスの下部がパネルの下地が見えているのが気になりますが、サイズ指定との関係が理解できていないので、そのあたりをいつか学びたいと思います。

ここまでで、ウェブブラウザとして基本的な機能が出来上がりました。

 

コメント