VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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 」などの定数をで指定した方がよろしいかと思いますよ。
(意味は一緒ですが、マジックナンバーだとコードが分かりにくくなりますので)


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -