プロが教える店舗&オフィスのセキュリティ対策術

WSHでブラウザーのある指定URLを開くまで実現できました(下記の例)が、タブキーで移動する操作を実現させ、移動した部分の文字がある特定の文字の時、またそこのURLに移動させたいのですが、可能でしょうか。

Set objIE = CreateObject
("InternetExplorer.Application")
objIE.Navigate("about:blank")
strURL = "http://・・・/"
Set objShell = CreateObject("Wscript.Shell")
objShell.Run(strURL)

A 回答 (6件)

#5>実際のプログラムです


なるほど、
objIE とobjShell が別のプロセスなのが原因じゃないかと思います。
これだとobjIE を使う理由は無いような気がします。
画面の表示が完了しているなら
SendKeys を使って
BACKSPACE を送るか
ALT+←
で戻るが実現できると思います。
    • good
    • 0
この回答へのお礼

BLUEPIXY様へ

できました。{BS}でOKでした。ありがとうございます。

お礼日時:2006/03/28 20:24

>どうもタブキーでリンク先に移動してENTERを送っても履歴が残らずgobackが有効にならないようです。


ENTER を送ったときに画面は変移しているのですよね?
画面が表示されて
IEの←戻るのボタンが使えるようになっていれば
GoBack( ) は使えます。
#3でもやっているように、
While IE.Document.readyState <> "complete": Wend '読込待ち
とかして読込が完了してからでないと、GoBack( ) も使えません。
おそらくそういうことだと思いますが・

この回答への補足

while ・・・を追加して読み込みを完了していても(この前にwsh.sleep(6000)を挿入しております。)
エラーメッセージ(エラーを特定できません)は同じでした。
以下実際のプログラムです

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
strURL = "http://・・・"

Set objShell = CreateObject("Wscript.Shell")
objShell.Run(strURL)
WScript.Sleep(3000)

for i= 1 to 16
objShell.SendKeys("{TAB}")
WScript.Sleep(100)
next
objShell.SendKeys("{ENTER}")
WScript.Sleep(6000)
While objIE.Document.readyState <> "complete": Wend
objIE.GoBack()

補足日時:2006/03/28 07:40
    • good
    • 0

#3>どうもタブキーでリンク先に移動しても履歴が残らずgobackが有効にならないようです。


??
#3の話ですか?
そうじゃないんですよね。
タブで移動した場合、クリックに相当するものとしてENTERを送ってやる必要がありますが、そういうことじゃないですか?

この回答への補足

説明が不正確で失礼しました。

どうもタブキーでリンク先に移動してENTERを送っても履歴が残らずgobackが有効にならないようです。

上記の意味です

補足日時:2006/03/27 21:49
    • good
    • 0

>「戻る」をWSHで実現する方法


勘違いしているかもしれませんが、簡単なサンプルを作ってみました。
動作としては、このQNo.2046770を開き、その他のプログラムをクリックしてカテゴリページを開き「戻る」を実行するというものです。
----------------------------------------------------------------
Dim IE
Dim Links, aLink

Set IE = WScript.CreateObject("InternetExplorer.Application")

'このページ
IE.Navigate ("http://okwave.jp/kotaeru.php3?qid=2046770")
IE.Visible=true '表示する
While IE.busy: Wend
While IE.Document.readyState <> "complete": Wend

Set Links =IE.Document.links
'全てのリンクを調べる
for each aLink in Links
if aLink.innerText = "その他(プログラミング)" then 'リンクの文字列を調べる
exit for '探していたリンクが見つかったらループを抜ける
end if
next
aLink.click 'このリンクをクリックする
While IE.Document.readyState <> "complete": Wend '読込待ち
IE.GoBack() '戻る
'IE.quit '終了

この回答への補足

BLUEPIXYさん、回答ありがとうございます。ただ、GOBACKでエラーになります。調べましたが、どうもタブキーでリンク先に移動しても履歴が残らずgobackが有効にならないようです。

補足日時:2006/03/27 21:01
    • good
    • 0

>移動した先の文字の取り出しがわかりません。


実現可能かどうか試してないのですが、一応いくつかアイデアはあるのですが、とても面倒です。
タブ移動とは直接関係なく
DOMを使って文字を取り出すのが良いと思います。
その場合は、WEBページの構造がわかっていないといけませんが。

ところで
タブキーによる移動とかをWSHから行おうとする目的はなんですか?
目で見て行う必要があるなら、直接キーボードから操作をすればいいし、
自動で行うなら、タブキーを使う必要がない(DOMで内容を読み出し特定の文字のリンクを取り出すことはできます)と思うのですが。

この回答への補足

BLUEPIXYさん、また回答いただきありがとうございます。DOMを利用する方法を調べてみます。タブキーを利用するのはIEの「戻る」と合わせてダウンロードするサイトを移動するためです。今、この「戻る」をWSHで実現する方法で困っているのですが、ご存じありませんか。よろしくお願いします。

補足日時:2006/03/26 07:50
    • good
    • 0

SendKeys を使ってタブやエンターを送ることでできるような気がします。


最初に開いたURLのページの構造が判っているのだったら、
IEからDOM的手法で表示されているページの部分を切り出すことも可能と思います。

この回答への補足

sendkeysがあるのを知りませんでした。これで一歩進めます。あとTABで移動したとき、移動した文字の取り出しがわかりません。

補足日時:2006/03/25 05:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!