パスワードを忘れた? アカウント作成
15328560 journal
日記

route127の日記: コンビニプリント申込み自動化備忘

日記 by route127

コンビニのマルチコピー機で写真を何枚か印刷しようとPCから登録していた。
以前自動化できないもんかとPerl+WWW::Mechanize::Chromeで書いてはみたものの結局上手くいかなかった。
最近になってAutohotkeyで書いて一応動くようにはなったがCOMオブジェクト生成とかIEの読込み待ちあたりでVBAとかWSHとか張り切って使っていた頃を思い出した。

IEのサポートが終了するというのにブラウザオートメーションとか使うのも気が引けるし、スクリーンレベルの自動化であんまり筋がよろしくないような気はするが、結局MechanizeでCSSで要素引いてクリックしてたのを座標指定してクリックに置き換えてるだけでやってる事は大して変わらないか。

IE := ComObjCreate("InternetExplorer.Application")
IE.Visible := True
IE.Navigate("https://networkprint.ne.jp/Lite/start?lang=jajp")
 
;アクティブウィンドウ最大化
WinMaximize, A
 
;読込み待ち
Loop {
  Sleep 100
} Until !(IE.ReadyState != 4 || IE.Document.ReadyState != "Complete" || IE.Busy)
 
;同意
Click, Left, 768, 720
 
;ファイルを選択
Click, Left, 765, 770
 
WinWait, A,, 10
if ErrorLevel
{
  MsgBox, WinWait timed out.
}
else
{
  ;ダイアログでフルパス入力
  Send, "C:\hoge\fuga.jpg{Return}" ;
  Loop {
    Sleep 100
  } Until !(IE.ReadyState != 4 || IE.Document.ReadyState != "Complete" || IE.Busy)
  Click, Left, 780, 550
}
 
;ウィンドウの大きさを元に戻す。
WinRestore, A

アクティブウィンドウ最大化はクリック座標決め打ちするためのものなので他にウィンドウ幅を固定する方法で置き換えてもよい。
読込み待ちは伝統的な方法を使ってるがAHKだとタイトルバーのテキストで待ち合わせるとかもあるらしい。
クリックする座標はあらかじめWindowSpy.ahkで調べておく。
WinWaitはファイル選択ダイアログの表示待ちに入れてみたがあんまり意味ないかも。

ファイル名ベタ書き、複数ファイルアップロード未対応、アップロード後のプリント番号未取得とかいろいろ課題はある。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...