ソースコードを探していたらこんなモノが出てきた。もしかたら以前もBlogに上げておいたかもしれないが、忘れたので、書いておく。ブラウザアプリを作るサンプルになればと思ったり。
スクリプトでWin32OLE触るのは楽しい。今回はNetFramework。
こちらもコンパイル不要でどんどん書きながらTry-and-Errorを出来るから素晴らしいと思う。
確か、これはIronPythonのサンプルコードを探してきたときのコピペだと思うんだ。
転載元を探したんですけど、2年も前のことなので分からなかった。
IronPythonでブラウザっぽいモノ
# -*- coding: shift-jis -*- import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import * from System.Drawing import * from ctypes import * ko = WDLL(r"kernel32.dll") print ko.GetTickCount() print ko.GetTickCount() usr = WDLL(r"user32.dll") print usr.MessageBoxA(0, "Hello", "Hello world", 0) class App(Form): ''' Webブラウザ フォーム ''' # 初期化用のメソッド def __init__(self): ''' 初期化用のメソッド ''' # テーブルレイアウトの作成(列=3、行=3)) self.tbl = TableLayoutPanel() self.tbl.ColumnCount = 3 self.tbl.RowCount = 3 # カラムスタイル (20%、80%、残り) self.tbl.ColumnStyles.Add(ColumnStyle(SizeType.Absolute, 40.0)) self.tbl.ColumnStyles.Add(ColumnStyle(SizeType.Percent, 80.0)) self.tbl.ColumnStyles.Add(ColumnStyle()) #行スタイル (絶対値30px、100%、残り)) self.tbl.RowStyles.Add(RowStyle(SizeType.Absolute, 30.0)) self.tbl.RowStyles.Add(RowStyle(SizeType.Percent, 100.0)) self.tbl.RowStyles.Add(RowStyle()) self.tbl.Dock = DockStyle.Fill # ラベルコントロール self.lbl1 = Label(Text="URL:") self.lbl1.TextAlign = ContentAlignment.MiddleCenter self.lbl1.Dock = DockStyle.Fill # テキストボックス self.text1 = TextBox() self.text1.Dock = DockStyle.Fill # ボタン コントロール self.btn1 = Button(Text=u"読込") self.btn1.Dock = DockStyle.Fill # リストボックス(履歴用) self.lb1 = ListBox() self.lb1.Dock = DockStyle.Fill # ウェブ ブラウザ コントロール self.web = WebBrowser() self.web.Dock = DockStyle.Fill # コントロールをテーブルレイアウトに配置 self.tbl.Controls.Add(self.lbl1, 0, 0) # ラベル self.tbl.Controls.Add(self.text1, 1, 0) # テキストボックス self.tbl.Controls.Add(self.btn1, 2, 0) # ボタン self.tbl.Controls.Add(self.web, 0, 1) # Webブラウザ self.tbl.Controls.Add(self.lb1, 0, 2) # リストボックス # カラム スタイルの設定(Webブラウザとリストボックスは1列のみ) self.tbl.SetColumnSpan(self.web, 3) self.tbl.SetColumnSpan(self.lb1, 3) # コントロールをフォームに追加 self.Controls.Add(self.tbl) # イベントハンドラの設定 self.btn1.Click += self.btn_Click self.web.DocumentCompleted += self.web_Completed self.lb1.DoubleClick += self.lb_DoubleClick self.text1.KeyDown += self.Key_Down #フォームのサイズ設定 self.Text=u"IPYブラウザ" self.StartPosition = FormStartPosition.CenterScreen # 履歴に表示する定数 self.message = " ...Completed!" def btn_Click(self, sender, e): ''' ボタンクリック イベント ''' self.web.Navigate(self.text1.Text) def web_Completed(self, sender, e): ''' ドキュメントの読み込み完了 ''' self.lb1.Items.Add(e.Url.ToString() + self.message) def lb_DoubleClick(self, sender, e): ''' 履歴からのダブルクリック ''' if self.lb1.Items.Count == 0: return selected = self.lb1.Items[self.lb1.SelectedIndex] self.text1.Text = selected.Substring(0, selected.Length - self.message.Length) self.btn_Click( sender, e) def Key_Down(self, sender, e): ''' URLでのEnterキー ''' if e.KeyCode == Keys.Return: self.btn_Click( sender, e) # モジュールの開始条件 if __name__ == "__main__": app = App() Application.Run(app)