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はファイル選択ダイアログの表示待ちに入れてみたがあんまり意味ないかも。
ファイル名ベタ書き、複数ファイルアップロード未対応、アップロード後のプリント番号未取得とかいろいろ課題はある。
コンビニプリント申込み自動化備忘 More ログイン