- PR -

VC++6.0 SP5常駐プログラムによるVB.NETプログラム起動について

投稿者投稿内容
いっく☆
常連さん
会議室デビュー日: 2003/11/26
投稿数: 35
投稿日時: 2004-02-10 17:09
>私とゆうじゅんさんは、「本当に起動していないのか」と聞いているのです。何らかの理由で>起動できないなら、他の方法で起動させようとしてもムダではないですか?起動していて、ファ>イルが書き込めないならフォルダのアクセス権の設定を変えればいい話だし、別のところに書>き出しているならパスの指定を変えればいい。とても単純ですよね。

すいません。試した事を書いていませんでした。
ファイルの出力パスは定義ファイルから取得しており,単純にexeをダブルクリックするとファイルは出力されるのでフォルダのアクセス権限は問題ではありません。出力先が想定されているフォルダでないというのは,ありえない状態です。
そのプログラムから他アプリケーションで作成したexeは全て実行されます。


イクザス
会議室デビュー日: 2003/12/11
投稿数: 16
お住まい・勤務地: 静岡
投稿日時: 2004-02-10 17:23
はじめまして。

少し気になったので・・・。
ちなみにShellExecuteの戻り値は確認しました?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-10 17:23
引用:

いっく☆さんの書き込み (2004-02-10 17:09) より:

そのプログラムから他アプリケーションで作成したexeは全て実行されます。


 厳密名を付けているとか?厳密名を付けると、付いていないところからの呼び出しに制限があるそうです。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2177&forum=7

 その他、他のアプリケーションとの違いで思い当たる節はありませんか?
イクザス
会議室デビュー日: 2003/12/11
投稿数: 16
お住まい・勤務地: 静岡
投稿日時: 2004-02-10 17:48
引用:

いっく☆さんの書き込み (2004-02-09 10:12) より:
ちなみに起動はShellExecuteを使用しています。
ShellExecute(NULL, "open", "C:\Program Files\TEST\TEST.exe", "", "", SW_SHOW);



ごめんなさい。
少し言葉が足りないかと思い、追記します。

ShellExecute関数の戻り値は32以上が成功です。
戻り値を0(FALSE)かどうか見ていないですか?

単純に上記のパスのままでは、ERROR_FILE_NOT_FOUND が返ってくるような気がします。
ShellExecute関数に渡すパスがロングファイルネーム(スペースを含むパス)の場合、
パスの前後をダブルコーテーションで囲まないと、ShellExecute関数は
スペースに続く文字列がパスなのか、起動するEXEに渡すコマンドライン引数なのか
判断できなくてエラーになるかと思います。
イクザス
会議室デビュー日: 2003/12/11
投稿数: 16
お住まい・勤務地: 静岡
投稿日時: 2004-02-10 19:00
ごめんなさい。
自分の環境で、VB.Netで作成したアプリをShellExecuteを試してみましたが
ロングファイルネームは関係なく起動できました。
(ShellExecute関数、CreateProcess関数共に成功しました)
惑わせるようなことをお書きしてすいません。

ちなみに作成したVB.Netのアプリは
http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml04/easyxml04_02.html
ここにあるような、Form_Load時にファイルを吐き出すアプリです。

ただ、私の作成した環境では、ボタンを押せばShellExecuteを実行するアプリで
常駐型のアプリではないので、その辺りの環境も何かあるのかもしれません。

お役に立てないようで・・・ごめんなさい

スキルアップ/キャリアアップ(JOB@IT)