投稿日 | : 2004/08/29(Sun) 14:26 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: shell関数のエラーがでる |
> RetVal = Shell("C:\Program Files\ACAD LT 2000\aclt.exe", 1)
ACAD/ACLTって、単にexe名だけで実行するのではなく、幾つかの引数を
必要とするのでは無いでしょうか? AutoCADを持っていないので、確認できませんけど。
hhttp://cgi33.plala.or.jp/biwakobo/showhtml.cgi?f=ep_yomoyama
あと、花ちゃんさんからの回答にもありますが、両端を「"」で囲った方が
良いかと思います。(もしくは、ショートファイル名で指定するか)
空白を含んだパスをそのまま実行させようとすると、誤動作する事がありますので。
# 例えば、C:\Program.exe というファイルが 万一存在していたとしたら、上記は
# 「Program.exe」に「Files\ACAD」「LT」「2000\aclt.exe」という引数を伴って
# 実行させる事になってしまいます。(普通は、Program.exeなんてありませんけどね)
それから、レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
に、aclt.exe の情報が含まれていないかも確認してみてください。
そして、もしもそこに情報が含まれていたなら、Shell関数の実行前に、
ChDriveとChDirを使って、実行時のカレントディレクトリを、レジストリに
記述されたパスに移動させてから、実行させるようにしてみてください。
それと最後に。
Shell関数の第2引数は、「 1 」などのマジックナンバーを書くのではなく、
「 vbNormalFocus 」などの定数をで指定した方がよろしいかと思いますよ。
(意味は一緒ですが、マジックナンバーだとコードが分かりにくくなりますので)