ユーザ定義関数、コマンドライン文字列取得のための初期化関数  LTCustomizer21 for AutoCAD LT リファレンスマニュアル

ActiveX
    Sub enable_extra_command([enable As Boolean = True], [check_time As Long = 100])
C/C++
    int WINAPI LTC_enable_extra_command(BOOL enable,int check_time=100,HWND hwnd=NULL,unsigned int resID=0);

パラメータ
enable:True(TRUE)にすると特定文字の監視を始めます。この機能を止める場合はこのパラメータにFalse(FALSE)を指定します。
check_time:AutoCAD/LTのコマンドラインを監視する時間間隔(単位はミリ秒,デフォルトは0.1秒)
この値をマイナスにすると、コマンドラインのすべての文字列と、\n'(chr(10))の後にコマンドラインの履歴の文字列を通知してきます(最後に表示されたコマンドプロンプトから最後の文字列まで抽出します)。
hwnd,resID(C/C++のみ):特定文字列を取得したときのウィンドウハンドルとメッセージIDを指定します。LTCustomizer21はこの情報を元に特定文字列を取得した際、PostMessage(hwnd,WM_COMMAND,resID,0);を実行します。 LTCustomizer21使用アプリケーションはこのメッセージを受信後、 LTC_set_extra_word()を使用して特定文字列を取得します。

この関数を実行すると、AutoCAD/LTのコマンドラインを一定間隔監視します。
そこで特定文字(デフォルトは#)に囲まれた文字列を見つけたとき、ActiveXの場合、イベントOnGetUserDefinedCmd()にその文字列を通知します。

 check_timeの値をマイナスにするとすべてコマンドラインの文字列と'\n'(chr(10))の後にコマンドラインの履歴の文字列を通知してきます(最後に表示されたコマンドプロンプトから最後の文字列まで抽出します)。また、その状態でadd_watch_cmdline_string()を呼び出すことで特定文字列に囲まれた文字列に関係なく、指定した文字列のみ通知が可能です。

C/C++環境の場合は、引数のhwnd,resIDを設定しなければ、LTCustomizer21を使用するプログラムでタイマープロセスを作るか、ワーカースレッドの中である一定時間間隔の中でLTC_get_extra_string()を呼び出して取得します。hwnd,resIDを設定すれば、特定文字列を取得したらLTCustomizer21が指定したリソースIDにメッセージを送信しますのでそれを受信後、 LTC_get_extra_string()を実行して特定文字列を取得します。

この関数の第一引数をTrueにして文字列の監視を行った後で、文字列の監視をOnにしたまま、時間間隔だけを後で変えることが可能です。
例:enable_extra_command(True,200) '文字列の監視間隔を0.2秒間隔にします。

それ以外の通知メッセージ
1.AutoCAD/LTが終了したことを示すメッセージ"LTC_CLOSE_ACAD"を通知します。
2.AutoCAD/LTのアクティブな図面名が変更されたことを示すメッセージ"LTC_CHANGED_DWG"を通知します。
LTC_CLOSE_ACADが通知されたら、AutoCAD/LTのコマンドラインの監視機能は自動的に終了します。(enable_extra_command(False)を実行しなくても良い。)
LTC_CHANGED_DWGが通知されたときは、この文字列と一緒にアクティブになった図面名も一緒に通知されます。つまり"LTC_CHANGED_DWGアクティブになった図面名"として通知されます。このメッセージはAutoCAD/LTのnewコマンドやopenコマンド、saveasコマンドでアクティブになった図面が前の図面名と違う場合は通知されます。LT2000から採用された複数図面をサポートしたバージョンでは、複数の図面の中でアクティブになった図面を逐一通知します。