サーバレス練習帳

着眼大局着手小局

【Windowsアプリ】MSHTML操作のノウハウ

IE (Internet Exploere)でHTMLを操作するために必要なノウハウをまとめておきました。

 

(1) VC++を準備

私は、Visual Studio Expressを準備しました。

serverless.hateblo.jp

 

 

(2) Windowsアプリ作成の基礎

serverless.hateblo.jp

 

(3) MSHTMLの原理 

このリンク先の図だけイメージできていれば良いと思います。

HTML描画機能です。

serverless.hateblo.jp

 

(4) MSHTMLプログラミング

全般的に、このサイトが参考になります。凄い勉強になる!

http://eternalwindows.jp/browser/mshtml/mshtml00.html

 

その中でも、特に次の3つが参考になりました!

 

(4-1) IE内のHTMLでエレメントを追加 (但し、idがある場合)

http://eternalwindows.jp/browser/mshtml/mshtml05.html

⇒ このスクリプトは、このままでは動きませんでした。htmlのdivに "id=sample"を追加すると動くようになります。

 

(4-2) IE内のHTMLをidが設定されていなくても操作する

http://eternalwindows.jp/browser/mshtml/mshtml02.html

 

(4-3) IE内のHTMLのボタンを押すといったイベントをレシーブする

http://eternalwindows.jp/browser/mshtml/mshtml07.html

⇒ すぐにループを抜けてしまうために、このスクリプトは、このままでは動かないものと思われる。試していませんけどね。

⇒ 試しました。私の間違いでした。「終了します」メッセージボックスを押さない状態であれば、ボタンを押すと反応します。 

(5) Windowsプログラミングの注意

 変数命名はハンガリアン記法が良いそうです。

serverless.hateblo.jp

 

(6) 文字列操作

とても難しいです。HSMTMLで使う文字列はBSTR型になります。

・・・昔から、C言語の文字列操作に苦手意識あります。

 

(6-1) 変数定義 → メモリ確保 → メモリ解放

必ず、以下の3行がセットです。

allocでメモリ確保するのでメモリ解放必須です。

忘れやすいので注意!

BSTR bstrText; //変数定義

bstrText = SysAllocString(L"testString");//メモリ確保

SysFreeString(bstrText); //メモリ解放

 

(6-2) 命名規則

ハンガリアン記法による変数名はBSTRならbstrから始まり、

charの文字列ならszから始まるようにしたいですね。

 

(6-3) 特殊な文字

bstr内の文字列を改行したい場合は"\n"が使えます。

(6-4) BSTR → Char変換

この文字列を扱いたいときは、まずはBSTR → Charに変換します。 

serverless.hateblo.jp

 

(6-5) 含まれている文字列を探す

char型に変換したらstrstrを使いましょう。

serverless.hateblo.jp

 

(7) 応用編

例えば、次のように使います。

(7-1) フォーマット自動記入

serverless.hateblo.jp

 

(7-2) ボタンクリックの検知 

serverless.hateblo.jp