最終更新日 2024-09-25

「hmPy・IronPython」ミニブラウザ

概要

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#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 );