|
お返事が遅くなって申し訳ありません。
私はAutoCADにコマンドを送る場合に最近では、
SendKeysで送る時とAPIのSendMessageStringで送る時を使い分けています。
基本的な使い分けとしてAPIのSendMessageStringでは幾つかのコマンドで応答の無い場合がありましたので
SendMessageStringでは電卓の数字など確実に送っても大丈夫な確実に使用し、
複雑な処理ではスクリプトファイルを作成しておきその実行をSendKeysで送るようにしています。
Sendkeysでは
Close #fpOut
AppActivate "AutoCAD" 'アクティブにする。
SendKeys "filedia 0 " & "script" & vbCr & OutFileName$ & vbCr, True
SendMessageStringでは
Dim dat As COPYDATA 'データ格納構造体
If IsWindow(Acad.MainhWnd) = False Then Exit Sub '先に取得したhWndが無い
dat.dwData = 1
dat.lpData = cmd$ + Chr$(0) '最後はChr$(0)で終わる
dat.cbData = LenB(StrConv(dat.lpData, vbFromUnicode)) '文字長(BYTE指定)
Call SendMessageString(Acad.MainhWnd, WM_COPYDATA, 0&, dat) 'コマンドの送出
Call postMessage(Acad.MainhWnd, WM_NULL, 0&, 0&) 'タイムラグ防止
DoEvents
のような感じです。
SendMessageでも「WM_SETTEXT」ではなく、「WM_COPYDATA」ではコマンドを送れると思います。
|
|