最終更新日 2024-09-25

「hmPy・IronPython」ミニブラウザ

概要

.NETにおいては、「http://」URLをプロセスとして実行すると、
Webに通常関連付けられているブラウザが起動しますが、
対象のWebページが「Webアプリ的なも」や「社内のhtmlページ的なもの」など定型・定型アプリであるとわかっているならば、
フル機能を持つWebブラウザではなく、Webコンポーネントを利用するのもアリでしょう。

以下のものを「miniweb.mac」として保存してみましょう。

#PY = loaddll( hidemarudir + @"\hmPy.dll" );
 
$url = "http://www.google.com/";
 
#_ = dllfuncw(#PY, "DoString", R"IPY(

import clr

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Web")
clr.AddReference("System.Drawing")

import System
import System.IO
import System.Windows.Forms

from System.Windows.Forms import *
from System.Web import HttpUtility
from System.Drawing import *

from System import *

url = hm.Macro.Var["$url"]

import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import (
    Form,
    DockStyle,
    WebBrowser,
    TextBox,
    Keys
)

class MyWebForm(Form):

    def __init__(self):
        self.Text = 'ミニブラウザ'
        self.Width = 800
        self.Height = 600

        self.wb = WebBrowser()
        self.wb.Navigate(url)

        self.tb = TextBox()
        self.tb.Text = url


        # Layout
        self.tb.Dock = DockStyle.Top
        self.wb.Dock = DockStyle.Fill
        self.tb.KeyPress += self.OnKeyPress
        self.wb.Navigated += self.OnNavigated

        self.Controls.Add(self.wb)
        self.Controls.Add(self.tb)

    # Event handling
    def OnKeyPress(self, sender, event):
        if event.KeyChar == '\r':
            self.wb.Navigate(self.tb.Text.strip())

    def OnNavigated(self, sender, event):
        self.tb.Text = event.Url.ToString()

f = MyWebForm()
f.ShowDialog()

)IPY"
);

freedll( #PY );