|
Triple-9 技術情報 |
|
ここは、Triple-9 for Windowsのサポートコーナーです。使用上、不明な点がある場合は、まずここを捜して見てください。
クラス名やタイトルが実行毎に異なるウィンドウの見つけ方
タイトルは一部分でもマッチしますので、不変部分のみをタイトルに指定してください。またできるだけクラス名も指定してください。同一タイトルで別のウィンドウを見つける誤りを少なくできます。
まれにですが、クラス名も変化するものがあります(Netscapeで確認)。クラス名は全体がマッチする必要がありますので、この場合はクラス名は空にしてください。クラス名を空にすると誤ったウィンドウを見つける可能性が高くなりますが、2.50からは条件を満足するウィンドウが複数あった場合には、不可視のウィインドウよりも可視のウィンドウを優先するようにしました。2.40以前で誤る場合は、2.50にアップするとうまくいく可能性があります。
それでも誤ったウィンドウを見つけるという場合は、GetWindow, GetClassName, GetText, IsWindowVisible関数などを使って、すべてのウィンドウを検索して調べる方法があります。GetWindowの使い方は、HelpのGetWindow関数の項目を参照してください。
ClickMenuやSelectMenuがうまく動作しない
自分で記述したメニュー操作がうまく動作しない場合は、一度高水準記録モードで記録してみてその内容を確認してみてください。次のいずれかの原因が考えられます。
1) | Menuの各項目の描画をWindowsにまかせるのでなく、アプリケーションで独自に行っているようなアプリケーションでは、メニュー項目に表示されているテキストで指定するのではうまく再生できません。Triple-9でそのMenu項目に表示されている文字列を調べることができないためです。この場合、通常のテキストの代わりに #n と書き、そのメニューの中で上から数えてn番目(先頭は0)の項目であるということを示すように書き換えると動作します。
例: ClickMenu('ファイル(&F),#3');
このようなMenuには、Menu項目の左端にアイコンが表示されているようなものに多く見られます。
|
2) | WORD98やEXCEL97など、ToolBarのような感じのメニューは、Windows標準のメニューとは異なるものであり、ClickMenuやSelectMenuでは操作できません。ToolbarClick, MouseClickを使う必要があります。自分で記述するよりは高水準記録モードで記録して使ってください。 |
Netscape Communicatorで、フォームの中のボタン操作が記録されない
Netscape Communicatorを使って、Formのあるようなホームページを表示している場合、「送信」や「リセット」ボタンなどの操作が記録されないことがあります。これは通常ボタンを押すと発生するWM_COMMANDメッセージがNetscapeでは発生しないことがあるためです(なぜか最初の一回だけ発生することがある)。Triple-9側での対応は困難です。手作業でPushButtonを挿入して対応してください。
コントロールパネルを開くには
コントロールパネルの中の実行したい項目に対応したcplファイル(\Windows\Systemディレクトリにある)を指定して、Control.exeを実行させます。たとえば、「マウスのプロパティ」でマウスの設定を行いたい場合は、次のように実行します。
Execute('Control.exe Main.cpl', 3000);
DOS窓でキーボード入力が記録されない
DOS窓ではキーボード入力の記録はできません。ただし、再生の方はSendKeysでできます。手作業でスクリプトにSendKeysコマンドを挿入してください。
毎日定時に自動実行させるには
スケジュール機能がありますが、Triple-9の現バージョンでは、指定時間に一回実行するのみで、繰り返し実行する機能はありません。毎日実行させるには、スタートアップにショートカットを作成し、そのコマンドラインの内容を "Triple9.exe -mtx Sample.sh9" のようにしておくとよいでしょう。オプションの意味は、ヘルプの「起動方法」の説明を参照してください。
途中で手作業による入力をしたい
たとえば、メニューの[ファイルを開く]までは自動で操作し、ダイアログボックスでファイル名を入力するところは手動で入力し、その後[OK]ボタンを押してからまた自動で操作するということを行いたい場合の例を示します。
ClickMenu(h0, 'ファイル(&F),開く(&O)...');
h1 := FindPopup('ファイルを開く', 5000);
WaitClose(h1, 0, 0);
// 次の処理
上記のコードで、WaitCloseで待っている間、マウスやキーボードの手動による操作ができます。WaitCloseは、[ファイルを開く]ダイアログボックスが閉じるまで待ちます。
秀丸エディタで、SendKeysによるキー入力再生が途中で止まる
キー再生のスピードが速い場合に、{ENTER}の次のところから入力を受け付けなくなる現象が発生するようです。SendKeysの前にPace手続きを挿入して、キー再生の速さを遅めにしてみてください。
例: Pace(25, 10); // Pace手続きの第一引数の値を大きめにする。
SendKeys('....');
実行ボタンを押してから再生開始まで数十秒時間がかかる
ご使用のTriple-9の版が2.51またはそれより前の版の場合、スクリプトの先頭に
Execute('xxxxxxx.exe', 30000);
FindWindow('xxxxx', 'xxxxxxx', 5000);
という行があるかどうかを確認してください。これがある場合には、3.00以降にすると改善される可能性があります。
あるいは、上記をたとえば
Execute('xxxxxxx.exe', 0);
FindWindow('xxxxx', 'xxxxxxx', 30000);
というように変えて試してみてください。
3.00より前のExecute関数は、アプリケーションを起動し、それに結びついた画面が開くまで待ちます。ほとんどのアプリケーションでは、画面が開くと同時にExecute関数がリターンするはずですが、特別なアプリケーションでは画面が開いてもリターンせず、タイムアウトに指定した30秒を経過するまで待ち続けるものがあります。これはたとえば、自分自身ではウィンドウを開かず、代わりに子プロセスを起動して子プロセスがウィンドウを開くようなアプリケーションです。
Triple-9 3.00では、Executeは入力待ちでアイドル状態になるまで待つように変更し、この問題を改善しています。
コンパイルしたexeでも、マウスのSmooth/Jumpを切り替えたい
Triple-9をインストールしたディレクトリに、Run999.dpr というファイルがあります。この中の、WndProcという関数の先頭部分に、MouseSmoothMode := False; という行を挿入したうえで、Triple-9でもう一度コンパイルしてください。
例:
function WndProc(MyWnd: HWND; iMsg: UINT; ………
{$IFDEF USE_TASKTRAY}
var Pt: TPoint;
{$ENDIF}
begin
MouseSmoothMode := False; // ← この行を追加
Result := LRESULT(False);
case iMsg of
{$IFDEF USE_TASKTRAY}
WM_COMMAND:
:
:
コンボボックスの選択をうまく切り替えられない
ComboBoxSelectでコンボボックスの選択を変更した時、見かけ上は正しく選択できたようにみえるのに実際には変化していない場合があります。たとえば、「ファイルを開く」や「ファイル名を付けて保存」ダイアログボックスにある、ディレクトリを選択するコンボボックスをComboBoxSelectで変更すると、表示上は変更できたようにみえますが、実際には変更前のディレクトリを参照しているということがあります。
これは、「ファイルを開く」や「ファイル名を付けて保存」ダイアログボックスが、キーやマウス操作があったときに初めてコンボボックスの値が変化したことを認識するように作られているためです。これは次のようにすると解決できます。
例1: ComboBoxSelect(handle, 0, 'MyFolder');
SetFocus(handle);
SendKeys('{DOWN}{ESC}');
例2: SetFocus(handle);
SendKeys('{DOWN}{DOWN}{ESC}');
例1では、まずComboBoxSelectで、コンボボックスの望みの項目を選択します。次に下矢印キー{DOWN}により、コンボボックスのドロップダウンリストを表示させ、その直後エスケープキー{ESC}を入力してドロップダウンを閉じます。この操作でダイアログボックスは、コンボボックスでキー操作が行われたと認識します。
例2は、あらかじめ希望の項目がドロップダウンの何番目の項目かがわかっている場合の方法です。一個目の下矢印キーでドロップ
ダウンを表示させ、次に先頭からn番目の項目を選択したいのなら、n-1個の下矢印キーを入力します。
ダブルクリックするだけで実行開始するようなEXEを作成したい
Triple-9は、コンパイルボタンを押すだけで、コンパイルしてEXEファイルを作成できます。これで作成できるのは、次の2種類です。
a) ランチャー形式
b) タスクトレイでメニューを選択する形式
さらに、以下の1)〜2)を行えば上記に加え
c) 単純にダブルクリックするだけで再生開始する
ようなEXEを作成できます。
1) | このファイル(Run999.dpr)をダウンロードして、Triple-9をインストールしたディレクトリにある同名のファイルを上書きします。 |
2) | Triple-9で、自分のスクリプトをコンパイルします。この時、「条件」コンボボックスで、「USE_AUTO」を選択します。 |
もっと違う形式にしたい場合は、直接ソースファイル Run999.dpr を編集してください。
2001/10/28 更新