> この1文ですが、formsとはログインフォームのformと同じなのでしょうか?
o = o("forms",0)
は0番目のformタグ内の中身(エレメント)を取ってきてるだけです。
タグは複数回定義できるので、以下のHTMLのようにformタグが2回出てきて、
先頭のformタグ(name="m0")を取得したいときは o("forms",0) とするわけです。
その次(name="m1")が欲しいなら、 o("forms",1) になります。
<form name="m0">
<input name="edit">
<input type="submit" value="送信">
</form>
<form name="m1">
<input name="edit">
<input type="submit" value="送信">
</form>
>例えばformが存在しないただのbuttonやinputをクリックするには
クリックしたいbuttonやinputの
IDがわかってるなら、getElementById で、
名前がわかっているなら、 getElementsByName で、
クラス名がわかっているなら、getElementsByClassName で、(※古いIEでは使えない)
タグ名がわかっているなら、 getElementsByTagName
を使って探さないといけないです。
書いてあるHTMLによってボタンの特定処理が変わってくるかと思いますけども…。
簡単なサンプルを作ってみました。
方法1〜5までありますが、どれもformで囲まれていないボタンを押すサンプルになります。
http://hsp.moe/test/bbs/test.html
// お試し用なので、エラー処理は考慮されていません
// 5回ダイアログが表示されます。
newcom ie, "InternetExplorer.Application"
//IEを表示する
ie("Visible")=1
//IEで開く
ie->"Navigate" "http://hsp.moe/test/bbs/test.html"
//IEがページを読み込み終わるのを待つ
repeat
wait 10 : if( ie("Busy") == 0 ) { break }
loop
o = ie("Document")
repeat
wait 10 : if( o("readyState") == "complete" ) { break }
loop
// C:の送信ボタンを押してみる(formがない!)
pDoc = ie("Document")
// 方法1:
// id="ccc"のdivタグ内にはinputタグが2つ定義されている。
// value="送信" となっているものが送信ボタンなので、探して押してみる方法。
dialog "方法1"
comres pDiv
pDoc->"getElementById" "ccc"
comres pTags
pDiv->"getElementsByTagName" "input"
repeat pTags("length") // タグが列挙されるので順番に見ていく…
pElem = pTags("item", cnt)
// pElem("type") == "button" でもいける
if pElem("value") == "送信" {
pElem->"click" : break // Cが表示される
}
loop
// 方法2:
// id="ccc"のdivタグ内にはinputタグが2つ定義されている。その1番目を押してみる方法
dialog "方法2"
comres pDiv
pDoc->"getElementById" "ccc"
comres pTags
pDiv->"getElementsByTagName" "input"
pElem = pTags("item", 1)
pElem->"click" // Cが表示される
// 方法3:
// このHTMLではinputタグが8つ定義されているので、その5番目を押してみる方法
dialog "方法3"
comres pTags
pDoc->"getElementsByTagName" "input"
pElem = pTags("item", 5)
pElem->"click" // Cが表示される
// 方法4:
// ボタンにIDがついている場合。簡単。
dialog "方法4"
comres pInput
pDoc->"getElementById" "ddd_sub"
pInput->"click" // Dが表示される
// 方法5:
// value="あいう" のinputタグの次は送信用のボタンであるので、それを押してみる方法
// 方法3の亜種
dialog "方法5"
comres pTags
pDoc->"getElementsByTagName" "input"
repeat pTags("length") // タグが列挙されるので順番に見ていく…
pElem = pTags("item", cnt)
if pElem("value") == "あいう" {
pInput = pTags("item", cnt + 1) // 次のタグを取ってくる
pInput->"click" // Cが表示される
break
}
loop
>「h r e f」が原因でした。
自動投稿系のスパムによく入ってくるキーワードだからではないかと。
「/url」「/center」もNGワードとして登録されていますね。
> COMオブジェクトに関する質問
DOMの操作ですかね。
JavaScriptとかやってると、避けては通れない操作な気がします。
「DOM IE」とかでググるといいかもしれません。(他言語が多いですけども…)