9

IEのダウンロード通知バーに関する、最近の成果です。

  • IE通知バーの3秒待機、やめました。
  • エミュレーションの300ミリ秒待機、やめました。

確実かつ最速への飽くなき挑戦の軌跡です。

「こうすればもっと確実だし速いよ!もっとパーツを節約できるよ!」な情報、お寄せいただけると嬉しいです。
掛け合わせてより快適にしたいし、ステキな解法ならあっさり乗り換えちゃうかも。

関連スレッドを最下部に引用してます。

 

ダウンロード通知バーの処理に必要な2ステップ

  1. 通知バー表示担保
  2. 保存ボタン押下担保 ← 今回のテーマ

 

公式の1案

  1. 画像マッチング
  2. 指定時間待機

チャット氏の前で「通知バー」とつぶやくと、公式の1案を確認できます。

https://winactor.com/faq_winactor/

 

1.には有効無効状態取得(WIN32)を使ってきました。
きっと1.は既に確実かつ最速だと思い込んでます。
今回、スピードが求められる処理のため、2.の指定時間待機も惜しい状況でした。
ファイルサイズやNWとかPCの重さに左右されるから、3秒だとエラーになるし、10秒だともったいない。
10秒でもエラーになることも。

 

わたし史上最速の1案
(今回試行錯誤して、指定時間待機とエミュレーションの待機を排除できた方法)

  1. 有効無効状態取得の取得結果がブランクじゃなくなるまでループ
  2. ダウンロードファイルを掴めるまでAlt+N、Enterをループ
  • Alt+Nで通知バーがアクティブに=保存ボタンにカーソルが乗る、Enterで保存 → デフォルトのダウンロード先に保存される
  • 最近取り上げた、ループで待機する構造

https://winactor.com/questions/question/webシステムへの確実最速なログイン/

  • エミュレーションの中からも待機を排除
    1000ms、Alt↓、N↓、N↑、Alt↑、1000ms
    1000ms、Enter↓、Enter↑、1000ms

 

パーツ構成

  1. 通知バー表示担保
    繰り返し
     例外処理
      正常系
       有効無効状態取得 *1
      異常系
       何も置かない
     分岐:取得結果 等しくない 値⇒(ブランク)
      True
       繰り返し終了
      False
       何も置かない
    指定時間待機:3秒
  2. 保存ボタン押下担保
    繰り返し
     例外処理
      正常系
       先頭ファイルの取得 *2
       ファイル移動
      異常系
       Alt+N *3
       Enter *3
  • 1.の繰り返しと分岐は、後判定繰り返しでまとめられるものの、解り易さ優先でこの構成を使うことが多い
  • *1 有効無効状態取得の取得結果はTrueかブランクのどちらか(Falseにはならない模様)
  • *2 手前で、ダウンロード先にファイルがない状態を担保
  • *3 Alt+N、Enterは空振っても無害(干渉する要素があるなら別途対策が必要)

 

実感

  • 今のところ確実
  • 最速と言い張れるスピード感
    たぶん人の反射神経と驚速タイピングでも勝てない
  • Alt+N、Enterを分けておくか、1ノードに統合しちゃうか、これも深そう
    わたしは今のところ、待機時間を入れないで分けておく派
    取るに足らないミリ秒だけど、チリツモでもあるので、今後深掘りたい

 

オブジェクト/エレメントで制御しにくい対象に対する思い

  • 画像マッチング:視力/視線/状態頼み
  • 指定時間待機:予定は狂いがち
    → 不安定要素になり得る画像マッチングと指定時間待機は、代替手段があれば採用したい
  • 最低でも止まらないでほしい
    進まないなら補助できるように待ってて/ループしててほしい
  • コンピューターらしく、あわよくば状態を確実に判断して最速で処理してほしい(今回はこれを実現)

 

NTTデータ謹製のIE制御ライブラリ

https://nttdata-mp.com/product.php?id=72

「IE_通知バー操作」を使ってみたことがあります。

https://winactor.com/questions/?q=NTTデータがeラーニングとライブラリを無償提供

ドラッグレースが実現次第、続報します。

 

所要時間の計測、速度/効率の比較に使える標準機能

  • ログ出力ウィンドウの経過時間がミリ秒表示で便利
  • グループ選択で部分実行が使いやすい

※ プチライブラリは秒まで

指定した2つの時間の差分を取得するライブラリ
https://winactor.biz/library/2019/01/30_612.html

 

関連スレッド

https://winactor.com/questions/question/のダウンロード通知バーの操作方法/

https://winactor.com/questions/question/ファイルダウンロード(みんなの最適解)/

https://winactor.com/questions/question/[質問追記][設定方法の参考情報]ieでファイル/

https://winactor.com/questions/?q=IE+ダウンロード

https://winactor.com/questions/?q=通知バー

anothersolution 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。