ruby-robotの夢

cygwin-ruby,qgisの達人を目指す奮闘記

SendKeyと組み合わせたダウンローダの留意点

CYGWIN-ruby-win32oleでかなりのデータを取得できる。

しかし、例えば、気象庁のダウンロードサービス等で、ダウンロードメニューを使う時、「保存又は開きますか?」のポップアップが出てきて、キーバインドを求められる。WIN32OLE.new("InternetExplorer.Application")

IE11の設定で、ポップアップを出さない設定があるような記事を見る

_________________________

https://www2.mouse-jp.co.jp/ssl/user_support2/sc_faq_documents.asp?FaqID=17966 - 質問 -
ファイルをダウンロードする際に保存の確認メッセージが表示されない場合
- 回答 -
インターネット上でファイルをダウンロードする際、保存前の確認メッセージが表示され保存前の確認メッセージの設定方法は以下の通りです。
1. Internet Explorer を起動します。
2. 画面右上にある 「 ツール 」 アイコンをクリックします。
3. 「 ダウンロードの表示 」 をクリックします。
4. 「 ダウンロードの表示 」 画面が表示されます。
ファイルを右クリックして、「 この種類のファイルを開く前に常に確認する 」 にチェ>※ 通常はチェックが入っている状態です。
以上です。

_________________________

が、私の環境では、そのようにできない。「 この種類のファイルを開く前に常に確認する 」 が出てこない。

仕方が無いので、SendKeyを組み合わせる。

SendKeyは、wsh=WIN32OLE.new("WScript.Shell")で、wsh.AppActivate(名前)の後、 wsh.Sendkeys(KEY)というふうに使う。

この時の留意点を記す。[使用条件] Windows10, IE11,ruby 2.6.4

  • AppActivate(名前)では、Windowsのタスクバーなどに出てくる名前を用いる。
  • サイトによっては、ダウンロードするタイミングで、名前が遷移するため、Sendkeyすべきタイミングにおける名前を用い、何度も試すようにする。
  • AppActivate(URL)で、1回目ができない場合がある。これは、IEやOS等の設定により、IErubyで起動した際に、警告されてタスクバーにオレンジで表示される場合。手動で、activateした後は、できるのだが。メモリーが増えて、繰り返し実行が必要な場合、イタイ。オレンジにならないPCもあるが・・・違いが不明。(  補足 ruby2.3.6⇒2.6.4にアップデートすると共に、IEの設定をなにか変えると、メモリーの使い方が上手になったのか、ieのページを2000回更新してIEのメモリーが300Mbyteを超えたところで200Mbyteまで圧縮することがわかった。何回でも行けるかもしれない。)
  • Sendkeyしている間は、他の作業はできなくなる。このため、並行作業できるよう、それ専用のPCを用いる。同一PCで使い分けるのは、大いなる損失。
  • Sendkeyのタイミングは、回線の状況、サーバーの状況によって異なる。適切なタイミングを調整するため、何度か試行し、プログラムを調整する必要がある。このため、細かくチェックプリントを出力させる。
  • Sendkey用のPCで実行しながら、編集用のPCでプログラム調整を行う。