C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: SendCommandno


(過去ログ 127 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■75421 / inTopicNo.1)  SendCommandno
  
□投稿者/ akkun (1回)-(2015/03/23(Mon) 12:21:57)

分類:[VB6 以前] 

AutoCADのコマンドラインにメッセージを送るソフトを作成していますが、
CADのバージョンによって、正常に動作する場合と、全然反応しない場合はあります。
特に2004LTは動作しますが、2006LTはダメでした。
OSとの相性なのか、かじったばかりのため皆目見当がつきません。
反応しない場合とはどうゆうときなのか、どのように対処したらよいか
ご教示をお願いします。
環境 OS:Win7、VB5.0

以下のような関数を作成し、MWndCMDはCADのコマンドラインのハンドル番号です。

Public Function SendCommand(ByVal AcadCommand As String) As Boolean
Dim lngrc As Long 'APIの返却値
Dim i
Dim lngdt As Long
Dim strdt As String
' 1文字ずつ送信 
For i = 1 To Len(AcadCommand) '1文字
strdt = Mid(AcadCommand, i, 1) '改行文字を復元
lngdt = Asc(strdt) 'ASCIIコードに変換
lngrc = SendMessage(MWndCMD, WM_IME_CHAR, lngdt, 0) '1文字送信
Sleep 5 '指定ミリ秒待つ
Next i
SendCommand = True
End Function

引用返信 編集キー/
■75422 / inTopicNo.2)  Re[1]: SendCommandno
□投稿者/ 魔界の仮面弁士 (257回)-(2015/03/23(Mon) 16:31:43)
No75421 (akkun さん) に返信
> AutoCADのコマンドラインにメッセージを送るソフトを作成しています
> 環境 OS:Win7、VB5.0

LT ということは、VBA ではなく 単体パッケージの VB5 の事ですね。

VB5 は Windows 9x 世代のツールでしたよね。
VB5 のランタイムは、Windows 7 での動作保証が無かったと記憶しています。
https://www.microsoft.com/ja-jp/dev/support/tools_archive.aspx


> 特に2004LTは動作しますが、2006LTはダメでした。
WM_IME_CHAR が正常に届いているか、相手先のウィンドウを
Spy++ で確認してみては如何でしょうか。


> OSとの相性なのか、かじったばかりのため皆目見当がつきません。
相手のウィンドウで IME が有効であるかどうかで、
WM_IME_CHAR の動作が変わることがあります。


> 反応しない場合とはどうゆうときなのか、どのように対処したらよいか
別案として、SendInput API による送信も試してみてください。
具体的なサンプルはネット上で見つかるはず。


> MWndCMDはCADのコマンドラインのハンドル番号です。
コマンドラインウィンドウの HWND (ウィンドウハンドル)ということでしょうか?


> Dim i
型を指定しましょう。As 句が無い場合、「既定のデータ型」と看做されます。
特に設定していない場合、Variant が既定のデータ型です。


> '改行文字を復元
このコメントは、どういう意味でしょうか?


> Sleep 5 '指定ミリ秒待つ
UI スレッドから Sleep を使うことは避けてください。
待機が必要な場合は、代わりに MsgWaitForMultipleObjects(Ex) API を
利用するか、もしくは Timer コントロールのイベントを利用するようにします。
引用返信 編集キー/
■75423 / inTopicNo.3)  Re[2]: SendCommandno
□投稿者/ akkun (1回)-(2015/03/24(Tue) 08:38:24)
魔界の仮面弁士 さん
丁寧な説明ありがとうございます。
大変参考になりました。

VB5 のランタイムは、Windows 7 での動作保証がないということなので
安定しないようなのは、そのためなんですね。たぶん

VB.NETでコーディングし直すべきなんでしょうが、ちょっと敷居が高く敬遠しています。
VB.NETだと、安定して動作するでしょうか。
やっぱり、今後を踏まえ、切り替えるのが賢明でしょうか。

なんか相談のようになってしまいましたが、よろしくお願いします。
引用返信 編集キー/
■75465 / inTopicNo.4)  Re[3]: SendCommandno
□投稿者/ akkun (2回)-(2015/03/27(Fri) 08:52:16)
No75423 (akkun さん) に返信

VisualBasicexpress版をDLして、本も購入し少し眺めてみました。
どうにかできそうなので、トライしてみます、
これから質問させていただくと思いますが、
宜しくお願いします。
解決済み
引用返信 編集キー/
■75466 / inTopicNo.5)  Re[4]: SendCommandno
□投稿者/ shu (724回)-(2015/03/27(Fri) 09:53:18)
No75465 (akkun さん) に返信
> ■No75423 (akkun さん) に返信
>
> VisualBasicexpress版をDLして、本も購入し少し眺めてみました。
> どうにかできそうなので、トライしてみます、
> これから質問させていただくと思いますが、
> 宜しくお願いします。
使用条件満たしているようならComunityを使われた方が良いと思います。
http://www.microsoft.com/ja-jp/dev/products/community.aspx


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -