📈

Autoit で MarketSpeed2 のログインを自動化する

2023/11/18に公開

MS2 のログイン時にパスワードを入れるのがめんどくさいので自動化しました。その時のメモです。

AutoItとは

  • https://www.autoitscript.com/site/
  • AutoItは、Windowsの自動化やGUIスクリプト作成に特化したスクリプト言語
  • ".au3"という拡張子を持つファイルにスクリプトを書いてコンパイルして使う

インストール

テストスクリプト

  • 適当な場所に test.au3 作成
    • (ディレクトリ内で右クリックして新規作成したら、AutoIt V3 Scriptというボタンが出てくるのでそれで作成してもいい。その場合テンプレートが記載されたファイルが作成される。ま、とりあえず .au3 拡張子をもったファイルならいいはず)
    • お好きなエディタで開いて、書き込む
      MsgBox(0, "Hello", "Hello World!")
      
  • test.au3 右クリック > Run Script

MS2自動起動スクリプト

  • デスクトップにあるMarketSpeed2のアイコンをダブクリックして、ログインWindowをだし、そこに平文で書いたパスワードを送信するという危険な方法を書いています。
  • セキュリティ的には絶対ダメな方法です。個人の判断でやってください。何が有っても一切の責任はとりません

前準備

  1. デスクトップ上の MarketSpeed2アイコン上で右クリック -> パスのコピーしてメモ ... ①
  2. Windows の検索ボックスから、 Au3Info.exe を検索して起動
  3. マーケットスピード2を起動してログイン画面を出す
  4. MARKETSPEED Ⅱ ログイン画面のポップアップを指定すると、Au3Info で、Title を確認出来るので、それをメモ... ②
  5. パスワードのテキストボックスを指定すると、Au3InfoControl タブで ID を確認できるので、それをメモ ... ③
  6. カーソルをログインボタンのところに持っていくと、Au3InfoControl タブで ID を確認できるのでそれをメモ ... ④

スクリプト

;; ダブルクリック
ShellExecute("①のリンク")
Sleep(500)
ShellExecute("①のリンク")

;; ログインウィンドウが出るまで10秒待つ
Sleep(10000)

If WinActive("②の文字列", "") Then 
    ControlSetText("②の文字列", "", ③, "パスワード")
    ControlClick("②の文字列", "", ④)
Else
    MsgBox(0,"ERROR", "Login Windowがアクティブではありません")
EndIf

;; マーケットスピード2をアクティベートしておく(任意)
WinActivate("MarketSpeed2", "")
  • ③と④は数値です。
  • これで Run Script すればログイン出来るはずです。

実行ファイルに変換し、Pythonで呼び出す

  1. スクリプトを実行ファイルに変換して、 .exe ファイルを作る
  2. Python で .exe ファイルを呼び出し実行する

という流れです。

実行ファイル作成

  1. Compile Script to .exe をwindows 検索ボックスから検索して起動
  2. Sourceに、スクリプトファイルへのパスを入れる。Browseボタンから探せばよい
  3. Destication には自動でファイルパスが入る。変更したかったら変更すれば良い。
  4. Convertボタンを押すと、実行ファイルが作成される

Python

import subprocess 

# start.exe 
subprocess.run([r"C:\path\to\start.exe"])

Discussion