くりっく365 リッチクライアントとレート収集ユーティリティ自動再起動

  • ネット回線が切断された時など、リッチクライアントには再起動を促すダイアログが表示されます。この時、
    • くりっく365 リッチクライアント
    • レート収集ユーティリティ(FX・インヴァスト)
    を自動で再起動して、接続を回復する方法です。

UWSCで監視

スケジュール設定

UWSCで、「接続状況が不安定です」ダイアログが表示されるのを監視し、自動再起動用スクリプトを実行します。

スケジュール設定

UWSCのスケジュール設定で、relogin_invast.uwsを指定します。

タイマー設定

タイマー設定

UWSCのタイマー設定で、

  • Titleを、インヴァスト証券 くりっく365
  • Classを、#32770
  • 「別プロセスで実行」にチェックを入れて下さい。UWSCのHELPによると「スクリプト実行中でも起動する事」ができるそうです。

にします。

以上の設定で、「接続状況が不安定です」ダイアログが表示されたら、relogin_invast.uwsが実行されます。

接続状況が不安定です

但し、「インヴァスト証券 くりっく365」のタイトルでClassが「#32770」のダイアログは、

  • くりっく365を終了しますか? → メインウインドウを閉じる時に表示されます。

    くりっく365を終了しますか?

  • サーバーへの接続に失敗しました。 → ログイン時に繋がらなかった場合表示されます。

    サーバーへの接続に失敗しました。

  • 営業日の更新が通知されました。 → 朝方頃表示されます(例:2010-01-27には、7:13に表示された)

    営業日の更新が通知されました

のダイアログもあります。この時にも、relogin_invast.uwsが実行されるので、ログイン用スクリプト(login_invast.uws)でダイアログの種類を区別します。

自動再起動用スクリプト

  • relogin_invast.uws として保存して下さい。
  • このスクリプト中で、3つのスクリプトを呼び出します。
    • login_invast.uws
    • rate_invast_open.uws
    • mail.uws

設定

  • // 送信元
  • // 送信先

を設定して下さい。

CALL login_invast.uws

IFB loginCheck = TRUE THEN
	CALL rate_invast_open.uws
ENDIF

CALL mail.uws
コンピュータ名 = doscmd("echo %computername%")	//http://www.nagomi-jp.net/~liners/p01.htm
GETTIME(0)
時刻 = G_TIME_HH2 + "時" + G_TIME_NN2 + "分" + G_TIME_SS2 + "秒"

IFB loginCheck = TRUE THEN
	subject ="リッチクライアント 再ログイン成功"
	body = コンピュータ名 + "リッチクライアントに再度ログインしました。<#CR>"  + 時刻
ELSE
	subject ="リッチクライアント ログイン失敗"
	body = コンピュータ名 + "リッチクライアントに再度ログインしようとし失敗したか、想定している以外の状態です。<#CR>"  + 時刻
ENDIF

mailfrom = "example@example.com"     // 送信元
mailto = "example2@example.com"      // 送信先
sendMail(mailfrom,mailto,subject,body)     //件名,本文

くりっく365 リッチクライアント ログイン用スクリプト

  • login_invast.uws として保存して下さい。
  • パスワードとリッチクライアントのパスを設定を行ってください。
  • 初期設定では、接続切断後の再ログイン時に「サーバーへの接続に失敗しました」でログインできなかった場合は、ログインが出来るまでログインを繰り返します。行わないなら、loginRepeatをFALSEにして下さい。
  • 初期設定では、表示されたダイアログの種類をメールで送信します。行わないなら、dialogMailをFALSEにして下さい。
  • 「インヴァスト証券 くりっく365を終了しますか?」のダイアログが表示されたら、「はい」ボタンを押します。押さない場合は、
    CLKITEM(ID,"はい",clk_acc or clk_short,true,1)
    をコメントアウトして下さい。
CALL mail.uws

// 設定
passWord = "*******"	//ログイン用パスワードを設定
invastClick365Path = "C:\Program Files\INVAST CLICK365\module\InvastClick365.exe" //リッチクライアントのパスを設定

//ログイン時に、接続を失敗したらログインを繰り返すならTRUE。行わないならFALSE
loginRepeat = TRUE

//ダイアログの種類をメールで送信するなら、TRUE。行わないならFALSE
dialogMail = TRUE

//メール送信を行うなら、設定する。
mailfrom = "example@example.com"     // 送信元
mailto = "example2@example.com"      // 送信先

待機秒数 = 60

PUBLIC loginCheck	//処理が正常に終了したならTRUEになる。
loginCheck = FALSE

check = FALSE
id = GETID("インヴァスト証券 くりっく365","#32770")
IFB POS("接続状況が不安定です。インヴァスト証券 くりっく365を終了し、再度ログインしてください。",GETSTR(id,2,1)) > 0 THEN
	CLKITEM(ID,"OK",clk_acc or clk_short,true,1)
	IFB dialogMail THEN
		sendMail(mailfrom,mailto,"リッチクライアント","接続状況が不安定です。")
	ENDIF
	check = TRUE
	SLEEP(3)
ELSEIF POS("営業日の更新が通知されました",GETSTR(id,2,1)) > 0 THEN
	CLKITEM(ID,"はい",clk_acc or clk_short,true,1)
	IFB dialogMail THEN
		sendMail(mailfrom,mailto,"リッチクライアント","営業日の更新が通知されました")
	ENDIF
	EXITEXIT	//スクリプト全てを終了。
ELSEIF POS("インヴァスト証券 くりっく365を終了しますか?",GETSTR(id,2,1)) > 0 THEN
	CLKITEM(ID,"はい",clk_acc or clk_short,true,1)
	IFB dialogMail THEN
		sendMail(mailfrom,mailto,"リッチクライアント","くりっく365を終了しますか?のダイアログが表示されたので、終了しました。")
	ENDIF
	SLEEP(5)
	EXIT
ELSEIF POS("サーバーへの接続に失敗しました。ネットワークの設定を確認してください。",GETSTR(id,2,1)) > 0 THEN
	PRINT ("サーバーへの接続に失敗しました")
	IFB dialogMail THEN
		sendMail(mailfrom,mailto,"リッチクライアント","サーバーへの接続に失敗しました。")
	ENDIF
	IFB loginRepeat THEN
		//ログインできるまで、ログインを繰り返す場合
		CLKITEM(ID,"OK",clk_acc or clk_short,true,1)
		check = TRUE
		SLEEP(待機秒数) //待機秒数待つことで、UWSCのプロセスが3つ以上同時に実行されないように調整する。
	ELSE
		EXIT
	ENDIF
ELSEIF id >=0 THEN
	PRINT ("想定外のダイアログが表示された。")
	IFB dialogMail THEN
		sendMail(mailfrom,mailto,"リッチクライアント",GETSTR(id,2,1) + " のダイアログが表示されました。")
	ENDIF
	SLEEP(2)
	EXIT
ENDIF

// リッチクライアントのメインウインドウが表示されていたら一端終了させる。
IFB check = FALSE AND GETID("インヴァスト証券 くりっく365","Afx:00400000") >= 0 THEN
	CTRLWIN(GETID("インヴァスト証券 くりっく365","Afx:00400000"), CLOSE)
	SLEEP(5)
	
	ID = GETID("インヴァスト証券 くりっく365","#32770",0.1)
	IFB POS("インヴァスト証券 くりっく365を終了しますか?",GETSTR(ID,2,1)) > 0 THEN
		CLKITEM(ID,"はい",clk_acc or clk_short,true,1)
		SLEEP(10)
	ENDIF
ENDIF


// リッチクライアントを起動する。
IFB check=FALSE THEN
	EXEC(invastClick365Path)
ENDIF

// ログイン画面が表示されるまでSleepする。
現在時刻秒 = GETTIME(0)
WHILE (GETID("ログイン","#32770",0.1) < 0 ) AND (GETTIME(0) < 現在時刻秒 +待機秒数)	//待機秒数で中断
	SLEEP(1)
WEND
SLEEP(2)

// ログインする。
ID2 = GETID("ログイン","#32770",0.1)
CTRLWIN(GETID("ログイン","#32770",0.1), ACTIVATE)
SLEEP(1)
SENDSTR(ID2, passWord , 2, TRUE)
CLKITEM(ID2,"Login",clk_btn or clk_short,true,1)
SLEEP(2)

// リッチクライアントが起動するまでSleepする。
現在時刻秒 = GETTIME(0)
WHILE (GETID("インヴァスト証券 くりっく365","Afx:00400000") < 0 ) AND (GETTIME(0) < 現在時刻秒 +待機秒数)	//待機秒数で中断
	SLEEP(1)
WEND
SLEEP(2)

// メインウインドウが表示されていたら loginCheck をTRUEにする。
IF GETID("インヴァスト証券 くりっく365","Afx:00400000") >= 0 THEN loginCheck = TRUE

レート収集ユーティリティ(FX・インヴァスト) 起動用スクリプト

  • rate_invast_open.uws として保存して下さい。
  • ファイル名とファイルへのパスを設定して下さい。
//ファイル名とファイルへのパスを設定して下さい。
ファイル名 = "rate_invast_1_4.xls"
パス = "C:\"

// ファイルが開かれていたら閉じる
id = GETID(ファイル名,"XLMAIN",0.1)
CTRLWIN(id, CLOSE)	// 先にファイルのウインドウを閉じる
SLEEP(1)
CTRLWIN(id, CLOSE2)

// 「インヴァスト証券 くりっく365」メインウインドウが表示されるまで待機する。
id2 = GETID("インヴァスト証券 くりっく365","Afx:00400000",0.1)
現在時刻秒 = GETTIME(0)
WHILE (id2 < 0) AND (GETTIME(0) < 現在時刻秒 + 60)	//60秒間で中断
	id2 = GETID("インヴァスト証券 くりっく365","Afx:00400000",0.1)
WEND

//ファイルを開く
SLEEP(5)	//念のため5秒待機。適宜調節して下さい。
id2 = GETID("インヴァスト証券 くりっく365","Afx:00400000",0.1)
IFB id2<>-1 AND GETID(ファイル名) < 0 THEN
	Excel = CreateOLEObj("Excel.Application")
	Excel.Visible = True
	Excel.WorkBooks.Open(FileName:=パス + ファイル名, readOnly:=False)
ENDIF
  1. // ファイルが開かれていたら閉じる
    まず、rate_invast_1_4.xlsが表示されていたら閉じます。
    Excelアプリケーションのウインドウ内最大にrate_invast_1_4.xlsが表示されている必要があります。ウインドウタイトルを取得して判断しているためです。
  2. 「インヴァスト証券 くりっく365」メインウインドウが表示されるまで待機する。
    「インヴァスト証券 くりっく365」メインウインドウされるまで、待機します。最大60秒待機し、表示されなかったら、Excelファイルを開きません。
  3. //ファイルを開く
    「インヴァスト証券 くりっく365」メインウインドウが表示されたのを確認してから、念のため5秒(適宜調整して下さい)待ち、Excelアプリケーションを別プロセスで起動してファイルを開きます。

ユーザーアカウント制御(UAC)

UAC

  • スクリプトをテストする前に、ユーザーアカウント制御を「通知しない」にし再起動を行ってください。
  • スクリプトを実行するには、「通知しない」にしておく必要があります。

確認したバージョン

くりっく365 リッチクライアント Ver 1.0.1.0で確認しました。

動作条件

Excel 2007 + Windows 7(64bit)で開発・確認しています。


使用規約

  • このソフトウェアを使用したことによる一切の損害について作者は責任を負いません。

履歴

  • 2010-01-26 login_invast.uwsを変更。その他修正。
  • 2010-01-20 login_invast.uwsを変更
  • 2010-01-10 login_invast.uwsを変更
  • 2009-12-03 掲載