auカブコム証券でのシステムトレードの方法(4) auカブコムのkabuステーションを、WindowsのVPSで自動起動する方法:AutoIt編

スポンサーリンク

kabuステーションの起動画面にユーザID、パスワードを入力するスクリプト(VPSでリモートデスクトップ切断時用)

リモートデスクトップ切断時も動作するAutoItスクリプトにはコツがある

Control系のコマンドを使う

ネット上にあるAutoItのサンプルスクリプトを見ると、よくWinActivateなどの関数を使い、ウィンドウを選択状態にしてから、自動操作を行うものが多いのですが、この「ウィンドウを選択状態にする」というところが、VPSのリモートデスクトップ切断時にはうまく動きません。

そこで、ウィンドウを選択状態にしなくても操作を行えるControlSendや、ControlClickなどの関数を使用すると、リモートデスクトップ切断時も普通に操作することができます。

ControlIdはWinAPI系のコマンドを使用して取得するのが確実

Controle~ではじまるAutoItのコマンドは、引数にControlIdというものを取ります。

これは、Windowsアプリケーション開発で用いられる概念で、開いているウィンドウがWindowsの内部で順番付けされたものです。

AutoItのコマンドを使って、

ウィンドウタイトル → ハンドルID(複雑なID)→ControlId

の順番に取得することができます。

; タイトルが「ログイン」である、kabuステーションのログインウィンドウが開くまで待機
; ウィンドウが開いたら、ハンドルIDを取得
Local $hWnd = WinWait("ログイン")

; autoItからWinAPIを使って、ハンドルIDからControlIdを取得
Local $ctrlID = _WinAPI_GetDlgCtrlID ( $hWnd )

; 画面タイトル、ControlIdを指定して、kabuステーションのログインウィンドウに
; パスワードを入力(ユーザIDは自動保存されている前提)
ControlSetText ( "ログイン", "", $ctrlID, "kabuステーションのパスワード" )

;「ログイン」ボタンを押す代わりに、「ENTER」を入力
ControlSend ("ログイン", "", $ctrlID, "{ENTER}")

kabuステーションログイン用AutoItスクリプト全文

; タイトルが「ログイン」である、kabuステーションのログインウィンドウが開くまで待機
; ウィンドウが開いたら、ハンドルIDを取得
Local $hWnd = WinWait("ログイン")

; autoItからWinAPIを使って、ハンドルIDからControlIdを取得
Local $ctrlID = _WinAPI_GetDlgCtrlID ( $hWnd )

; 画面タイトル、ControlIdを指定して、kabuステーションのログインウィンドウに
; パスワードを入力(ユーザIDは自動保存されている前提)
ControlSetText ( "ログイン", "", $ctrlID, "kabuステーションのパスワード" )

;「ログイン」ボタンを押す代わりに、「ENTER」を入力
ControlSend ("ログイン", "", $ctrlID, "{ENTER}")

; タイトルが「ログイン」である、kabuステーションのログインウィンドウが開くまで待機
; ウィンドウが開いたら、ハンドルIDを取得
Local $hWnd = WinWait("ログイン")

; autoItからWinAPIを使って、ハンドルIDからControlIdを取得
Local $ctrlID = _WinAPI_GetDlgCtrlID ( $hWnd )

; 画面タイトル、ControlIdを指定して、kabuステーションのログインウィンドウに
; パスワードを入力(ユーザIDは自動保存されている前提)
ControlSetText ( "ログイン", "", $ctrlID, "kabuステーションのパスワード" )

;「ログイン」ボタンを押す代わりに、「ENTER」を入力
ControlSend ("ログイン", "", $ctrlID, "{ENTER}")

タスクスケジューラで、kabuステーション起動後に動作するように設定する

上記のAutoItスクリプトを、ビルドするとexeファイルになるので、

タスクスケジューラで起動するように設定します。

コメント