• ベストアンサー

WSHでタブ移動は可能ですか

WSHでブラウザーのある指定URLを開くまで実現できました(下記の例)が、タブキーで移動する操作を実現させ、移動した部分の文字がある特定の文字の時、またそこのURLに移動させたいのですが、可能でしょうか。 Set objIE = CreateObject ("InternetExplorer.Application") objIE.Navigate("about:blank") strURL = "http://・・・/" Set objShell = CreateObject("Wscript.Shell") objShell.Run(strURL)

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

#5>実際のプログラムです なるほど、 objIE とobjShell が別のプロセスなのが原因じゃないかと思います。 これだとobjIE を使う理由は無いような気がします。 画面の表示が完了しているなら SendKeys を使って BACKSPACE を送るか ALT+← で戻るが実現できると思います。

tach_ei
質問者

お礼

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

その他の回答 (5)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

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

tach_ei
質問者

補足

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()

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#3>どうもタブキーでリンク先に移動しても履歴が残らずgobackが有効にならないようです。 ?? #3の話ですか? そうじゃないんですよね。 タブで移動した場合、クリックに相当するものとしてENTERを送ってやる必要がありますが、そういうことじゃないですか?

tach_ei
質問者

補足

説明が不正確で失礼しました。 どうもタブキーでリンク先に移動してENTERを送っても履歴が残らずgobackが有効にならないようです。 上記の意味です

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>「戻る」を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 '終了

tach_ei
質問者

補足

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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>移動した先の文字の取り出しがわかりません。 実現可能かどうか試してないのですが、一応いくつかアイデアはあるのですが、とても面倒です。 タブ移動とは直接関係なく DOMを使って文字を取り出すのが良いと思います。 その場合は、WEBページの構造がわかっていないといけませんが。 ところで タブキーによる移動とかをWSHから行おうとする目的はなんですか? 目で見て行う必要があるなら、直接キーボードから操作をすればいいし、 自動で行うなら、タブキーを使う必要がない(DOMで内容を読み出し特定の文字のリンクを取り出すことはできます)と思うのですが。

tach_ei
質問者

補足

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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

SendKeys を使ってタブやエンターを送ることでできるような気がします。 最初に開いたURLのページの構造が判っているのだったら、 IEからDOM的手法で表示されているページの部分を切り出すことも可能と思います。

tach_ei
質問者

補足

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

関連するQ&A