[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/12(Wed) 13:39
投稿者名:まさよし
Eメール:
URL :
タイトル:
sendkeys関数について
はじめて投稿いたします。
VB6でAutoCADLTの外部アプリを作成しています。
一応完成はしましたが、ちょっと変な感じです。
↓がソースの一部ですが
-------------------------------------------------------------------------------------------
-
'AutoCAD LT 2004を起動
     Ret = Shell("C:\Program Files\AutoCAD LT 2004\aclt.exe", vbMaximizedFocus)
    'AutoCADをアクティブにします。
    AppActivate "AutoCAD"
    '3000ミリ秒待機させる(3秒)
     Sleep (3000)
    'コマンドラインに送信
     SendKeys "filedia" & Chr$(13) & "0" & Chr$(13) & &
quot;script" & Chr$(13)
& "c:\temp\scriptC.scr" & Chr$(13), True
-------------------------------------------------------------------------------------------
-
外部アプリを実行するとAutoCADLTが起動します。(shell関数)
しかし、この時点ではsendkeysの文字列を送信しません。
そこで、再度、プログラムを実行するとsendkeysの文字列を送信してちゃんと動きます。
結局、一度目の実行でAutoCADLTのウインドウが起動するだけ、二度目の実行でもうひとつ
ウインドウが起動してプログラムが動作します。とりあえずこれで使っていますが
やはり、ウインドウは一つの方がいいのでどうしても修正したいのですが
スキルがない為ここで止まっています。どこがおかしいのでしょうか?
レベルの高い皆様でしたら解決策をご存知かと思われます。
なにとぞ*ご教授願えませんでしょうか?宜しくお願い致します。

投稿時間:2005/01/12(Wed) 15:47
投稿者名:INA
Eメール:
URL :
タイトル:
Re: sendkeys関数について
AutoCADは使ったことがないのですが、VBAがありますよね?
AcriveX オートメーションで外部アプリ制御した方が良くないでしょうか?

投稿時間:2005/01/12(Wed) 16:07
投稿者名:まさよし
Eメール:
URL :
タイトル:
Re^2: sendkeys関数について
> AutoCADは使ったことがないのですが、VBAがありますよね?
> AcriveX オートメーションで外部アプリ制御した方が良くないでしょうか?
すみません。AutoCAD-LTには、VBAはありません。あればsendcommandを使っています。
LTとは、安価なCADでしてなにもサポートしていないんですよ(^^ゞ
ですから、VB6だけでプログラムを作成している次第でして...
LT-Basicなどのカスタマズができるツールなどは販売していますが、
高いし、VBだけで作成して勉強もしたいと考えたわけです。

投稿時間:2005/01/12(Wed) 16:12
投稿者名:INA
Eメール:
URL :
タイトル:
Re^3: sendkeys関数について
そうでしたか。それは失礼いたしました。mm

そうなると Sendkeys が上手く行くように、いろいろ試すしかなさそうですね。

起動したウィンドウを閉じるようなことは処理ではダメなのですよね・・・

投稿時間:2005/01/12(Wed) 16:17
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: sendkeys関数について
そもそも SendKeysステートメントには、色々問題があるので使わない方がいいですよ。

ここの逆引きヘルプのアクティブウインドウにキーストロークを送るをご覧下さい。

投稿時間:2005/01/12(Wed) 17:33
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: sendkeys関数について
> 'AutoCAD LT 2004を起動
>      Ret = Shell("C:\Program Files\AutoCAD LT 2004\aclt.exe", vbMaximizedFocus)
>     'AutoCADをアクティブにします。

aclt.exe が立ち上がっていない状態で下記を実行しても・・・・
ここにも   Sleep (8000) が必要では

>     AppActivate "AutoCAD"
>     '3000ミリ秒待機させる(3秒)
>      Sleep (3000)

投稿時間:2005/01/12(Wed) 20:08
投稿者名:まさよし
Eメール:
URL :
タイトル:
Re^2: sendkeys関数について
花ちゃんさん!有難うございます<(_ _)>
shellの次にsleepを足したら無事1回目でプログラムが正常動作しました。
感謝です(^○^)感謝です(^○^)感謝です(^○^)