「hmPy・IronPython」HTMLのエンコード・デコード

  • 概要

    .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 );