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

スポンサーリンク

UWSCの作者は死去していた

auカブコム証券のkabuステーションをUWSCという、自動操作スクリプト言語を使って自動実行するプログラムを以前書きました。

しかし、UWSCの作者の方が死去していたという情報があり、今後のメンテナンスも望めないことから、AutoItという別の自動操作スクリプト言語に移植することにしました。

AutoItは海外のチームで開発されており、現在世界で一番広く使われている自動操作スクリプトということです。

もう1つAutoHotKeyというスクリプト言語もあり、こちらはオープンソースということで、開発チームが解散などしたあとでも、より継続的なメンテナンスが見込めるのですが、今回はとりあえず一番広くつかわれていそうなAutoItに移植することにしました。

スクリプトの内容は、UWSCの場合とそう変わりありません。

記事は重複もありますが、前の記事をみてもらうのも面倒でしょうから、そのまま掲載します。

実施手順

AutoItのインストール

AutoItはコンパイルしてexeファイルにすることが可能なので、必ずしもVPSにインストールする必要はありません。別のPCにインストールし、exeファイルのみVPSに置くこともできます。

kabuステーション自動起動の設定

kabuステーションはClickOnceアプリケーションなので、ファイルをキックしても自動起動できない

冒頭でも書きましたが、kabuステーションの自動起動は直観的にはできません。kabuステーションはよくあるexe形式のファイルのアプリケーションではなく、ClickOnceと呼ばれる形式のアプリケーションだからです。

kabuステーションをインストール時に作成される以下のファイルは、アイコンからショートカット形式のファイルに見えますが、実はそうではなく、appref-ms形式というClickOnce特有の形式です。この形式のファイルは参照先が実行可能形式のファイルではないので、Windowsのコマンドプロントから直接起動することも、cmdコマンドの引数にファイル名を指定して起動することもできません。

ClickOnceアプリケーションであるkabuステーションを起動するには、Internet ExplorerからURLを指定すればよい

このappref-ms形式ファイルの実体は実はただのテキストファイルで、kaubステーションのappref-msファイルをテキストエディタで開くと、以下のようになっています。

http://download.r10.kabu.co.jp/kabustation/KabuStation.application#KabuStation.application, Culture=neutral, PublicKeyToken=51166bf540f0e773, processorArchitecture=msil

つまり、ClickOnceのappref-msファイルというのは、つまるところHTMLリンクファイルにすぎません。ClickOnce形式のアプリケーションというのは、もともと「ブラウザからリンクをクリックするだけで、ローカル端末に配布され実行される」というコンセプトのアプリケーションです。そのため、appref-msファイルはその「リンクをクリックする」という操作を代替するものなのです。

また、auカブコム証券のWebサイトにログインすると、kabuステーションを起動するボタンがあるのですが、それは上記のURLへのリンクになっています。

したがって、ClickOnceアプリケーションであるkabuステーションアプリケーションを自動起動する方法としては、一度Internet Explorereを起動して、そのリンク先として上記のURLを指定するということになります。

ちなみに、IE以外だとファイルがダウンロードされたり(Chrome)、ポップアップが出力されたり(Edge)して、うまく自動起動できませんでした。

この方法で起動すると、ショートカットで起動した場合とは異なり、kabuステーションアプリケーションの更新時にWindowsの警告が表示され、処理が止まってしまいます。
そのため、予め.exeファイルのダウンロード時に警告を出さないように設定しておく必要があります。

AutoItを用いてIEを起動するスクリプトを作成

AutoItを用いてIEを起動するAutoItのスクリプトファイルを作成します。

いろいろなサイトにやり方は書いてあると思いますが、私が使用しているスクリプトファイルの内容を載せておきます。

; Internet Explorer COMオブジェクトを作成
$oIE = ObjCreate("InternetExplorer.Application")

; IEウィンドウを表示(True)または非表示(False)にする
$oIE.Visible = True

; 指定したURLをIEで開く
$oIE.Navigate("http://download.r10.kabu.co.jp/kabustation/KabuStation.application#KabuStation.application")

ちなみに上記のスクリプトは、ChatGPT3.5に

autoitで、internet explorerを起動して、特定のurlをアドレスバーに入力するスクリプトを作ってください。

とお願いして作ってもらったものです。

コメント