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

投稿時間:2007/04/18(Wed) 12:14
投稿者名:k
Eメール:
URL :
タイトル:
Shell関数の例外
お世話になります。

VBのShell関数について、
例外(らしい現象)が発生しております。
現象としては
1、Shell関数を実行できない。
2、Shell関数の実行結果が0だが対象のアプリケーションは起動している。

上記のような現象が発生する原因をどなたかご存知ないでしょうか?

よろしくお願いします。

投稿時間:2007/04/18(Wed) 12:30
投稿者名:いな
Eメール:
URL :
タイトル:
Re: Shell関数の例外
> 上記のような現象が発生する原因をどなたかご存知ないでしょうか?

http://hanatyan.sakura.ne.jp/vbhlp/tap_shell.htm
にある
'   ↑  これでは起動しない
のケースに合致している、とかありませんか?

投稿時間:2007/04/18(Wed) 13:53
投稿者名:k
Eメール:
URL :
タイトル:
Re^2: Shell関数の例外
> > 上記のような現象が発生する原因をどなたかご存知ないでしょうか?
>
> http://hanatyan.sakura.ne.jp/vbhlp/tap_shell.htm
> にある
> '   ↑  これでは起動しない
> のケースに合致している、とかありませんか?

特にありません。

正常に実行できる端末と実行できない端末があるので
プログラム的には問題ないと思います。
やはり環境的な要素が原因でしょうか・・・。

投稿時間:2007/04/18(Wed) 14:23
投稿者名:もげ
Eメール:
URL :
タイトル:
Re^3: Shell関数の例外
具体的には、
どんな文字列をShell関数で実行していますか?

また、
具体的には、実行できるPC/できないPCにどのような差異がありますか?
・OS
・サービスパック
・ユーザ
・その他

> 正常に実行できる端末と実行できない端末があるので
> プログラム的には問題ないと思います。
> やはり環境的な要素が原因でしょうか・・・。

環境が異なる複数のPCにおいて実行されることが想定されているのであれば、

> 正常に実行できる端末と実行できない端末がある
というのは、

> プログラム的問題
と一般的(特にエンドユーザ)には解釈されても不思議は無いですね。

投稿時間:2007/04/18(Wed) 15:11
投稿者名:いな
Eメール:
URL :
タイトル:
Re^3: Shell関数の例外
> やはり環境的な要素が原因でしょうか・・・。

ん〜、環境的な要素が原因・・・。ということでは
最近技術系掲示板で質問があった

http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200704/07040025.txt

のケースには当てはまりますか?

#はずしていたらすいません。

投稿時間:2007/04/18(Wed) 16:51
投稿者名:k
Eメール:
URL :
タイトル:
Re: Shell関数の例外
お世話になります。

ソースコード載せます。
vRet = Shell("プログラムのパス", vbNormalNoFocus)
If vRet = 0 Then
    'エラー処理
Else
    '正常処理
End If
※パスは環境変数より取得しますが正当な値です。

また、環境としては
Win2000/XP
VB6SP5
となっております。
ただし、お客様の都合によりSPに関してはいろいろなパッチを当てています。
(全ての端末で同一となっておりません)

それと、現在わかっている例外の内容としては
エラー番号:5
エラーの説明:プロシージャの呼び出し、または引数が不正です。
となっております。(Errオブジェクトより取得)

Shell関数の第2引数にVB内部定数を指定していますが
ランタイムのバージョンによって値が変動するということは
あるのでしょうか?

よろしくお願いします。

投稿時間:2007/04/18(Wed) 17:02
投稿者名:スクリプトプログラマ
Eメール:
URL :
タイトル:
Re^2: Shell関数の例外
> vRet = Shell("プログラムのパス", vbNormalNoFocus)

少なくとも、
vRet = Shell("""プログラムのパス""", vbNormalNoFocus)
としないと駄目でしょう。

投稿時間:2007/04/18(Wed) 17:17
投稿者名:YK
Eメール:
URL :
タイトル:
Re^2: Shell関数の例外
> また、環境としては
> Win2000/XP
> VB6SP5
> となっております。

XPの時 SP6 を当てた方が宜しいかと

投稿時間:2007/04/18(Wed) 17:46
投稿者名:スクリプトプログラマ
Eメール:
URL :
タイトル:
Re^2: Shell関数の例外
> ※パスは環境変数より取得しますが正当な値です。

ということは

> vRet = Shell("プログラムのパス", vbNormalNoFocus)

のパスは変数を使っているのでは?
なら、エラー時に表示するなりして確認すべきでしょう。

> If vRet = 0 Then
>     'エラー処理
> Else
>     '正常処理
> End If

なんてやってるところをみると
On Error Resume Next
でエラーを無視しているのでは?
もしそうならここより前にエラーを起こして、ゴミを持って来てるのかも。