• 締切済み

App.Pathの失敗について

実行プログラムを選択するフォーム上で以下のようにプログラムを指定し: FullExePath = App.Path & "\program1.exe" 中略:選択条件 FullExePath = App.Path & "\program2.exe" 中略:選択条件 FullExePath = App.Path & "\program3.exe" プログラムを実行するフォーム上で以下のように実行すると、ときどき失敗することがあります: RetVal = Shell(FullExePath) If RetVal = 0 Then MsgBox FullExePath & "の実行に失敗しました。" End If 失敗した場合に備えて上記のようなメッセージボックスを指定しておくと、実行に失敗したときには正しいフルパスが表示されます。 なぜ、プログラムの実行に失敗することがあるのでしょうか? 失敗するのは最初に選択して実行したときではなくて、2回目以降選択したときのようです。 Visual Basic Version 6を使用しています。 Windows XP、Windows 98いずれでも同じ状況です。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 1. 多分違うと思いますが、App.Pathがドライブ名(C:\)の場合は、"\"が2つ重なってしまうのでダメです。 2. 多分こっちだと思いますが、パスに半角スペースが入っていると、Shell関数がうまく動作しないことがあります。 FullExePath = """" & FullExePath & """" としてから、 RetVal = Shell(FullExePath) とすればいけると思います。 参考URLもどうぞ。 http://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp417%2F0%2F89%2Easp&LN=JA

k8sato
質問者

お礼

maruru01さん、ご回答をありがとうございます。 余分なスペースまたは\の混入を確認するために If RetVal = 0 Then MsgBox "##" & FullExePath & "##の実行に失敗しました" End If として、##との間のスペースの有無を表示してみましたが余分なスペースも\も挿入されていないようです。しかし、メッセージボックスに単にExecution Errorと表示されることもあるので、もう一度よく調べてから結果をご報告いたします。取り急ぎお礼申し上げます。 k8sato

k8sato
質問者

補足

maruru01さん、ありがとうございました。 urlが参考になりました。おかげさまでエラーの原因がわかりました。 FullExePath = App.Path & "\program3.exe" 中略 RetVal = Shell(FullExePath) If RetVal = 0 Then MsgBox FullExePath & "の実行に失敗しました。" Else Set MyObject1 = CreateObject("Scripting.FileSystemObject") Set MyObject2 = MyObject1.GetFile(SrcPath & "\" & SrcFile) End If 質問には書かなかったのですが、上記Else以下で実行結果ファイルのコピー先を 指定していました。FullExePathが正常に実行されているときにShellから0以外が 返されるため、ファイルのコピー先が指定されないでエラーとなっていました。 exeファイルが正常に実行されてもShell()から0が返されないことがあるようですね? k8sato

関連するQ&A

  • javac.exeのパスが通りません。

    すr大変困っています。 JAVAのプログラミングを勉強したいと思い、 JDKのインストールなど完了したのですが ソースファイルをコンパイルできません。 javac.exeの実行がきないんです、 コマンドプロンプトからjava.exeの実行はできているので パスの設定はうまくできていると思うんですが、、、、 同じでデレクトりのjavac.exeのパスがとおりません。 コマンドプロンプトで最後のデレクトりまで指定すれば プログラムは実行します。 管理者特権として実行するにチェックしても 互換性モードを使用しても だめです。 何がだめなんでしょうか?? OSがビスタだから なにかあるのでしょうか?? まいってます、お助けを、、、

    • ベストアンサー
    • Java
  • 相対パスのショートカットでファイルを実行する設定法

    Windows10ですが、ショートカットでリンクして実行ファイルを起動したいと思います。 アイコン化したリンクファイルをクリックすると、同じフォルダにあるサブのフォルダ\programの下のa.exeを実行したいとします。リンクファイルのショートカットのプロパティで、 リンク先./program/a.exe あるいは、.\program\a.exe 作業フォルダ./programあるいは.\program などと、相対的に指定したいのですが、できません。絶対パスではもちろん通るのですが。そのリンクの絶対パスが通じているなら相対パスで指定できるのではないでしょうか。理屈上はできるはずなので文法のエラーでしょうか。同一市内だったら市街局番なしで電話できるのと同じ理屈です。よろしくお願いします。

  • CreateFile が ERROR_PATH_NOT_FOUND のエラーになる

    VC++を使っています。OSは Windows2000 です。 CreateFile で指定するファイル名をフルパスで指定し、EXEを同じ ディレクトリに置いて実行したところエラーとなり、詳細コードが ERROR_PATH_NOT_FOUND でした。 プログラムは以下のようになっています。 #define AAA "c:winnt\\system32\\AAA.log" hOpen = CreateFile( AAA, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 上記プログラムの AAA.exe を system32下に置いて実行すると、 パスが不正だと怒られてしまいます。。。 AAA.exe を別ディレクトリで実行すると、sysytem32下にちゃんと ファイルが作成されます。 AAA.exe を CreateProcess する BBB.exe を造って試しましたが、 やはり BBB.exe が system32下にあると駄目でした。 どうやらカレントディレクトリが同じだと駄目みたいです。 「"AAA.log"」とせずにフルパスとしているのは以下の理由のためです。 ・ファイルは必ず system32下に作成したい。 ・AAA.exe は必ず system32下にある。 しかし、BBB.exe が必ず system32下にあるとは限らないため、 「"AAA.log"」とした場合、BBB.exe を実行したディレクトリに 作成されてしまう。 CreateFile には今回のような制限があるのでしょうか??? #ヘルプを見る限り、書いてないです。。。

  • C#でのProcess.Startと変数path

    C:\Program Files\a\にa.exeがあって、a.exeにパスが通っていて、 C:\> a.exe でaが実行できる状態にあるのですが、 System.Diagnostics.Process.Start("a"); でなぜか An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll Additional information: 指定されたファイルが見つかりません。 と言われ実行できません。 a.exeをパスを指定しないで実行するにはどうしたらいいのでしょうか。

  • [C#]実行中プロセスのパスを調べる方法について

    いつもお世話になっております。 現在実行中のプロセスの中から、特定のアプリのexeファイルのpathを表示させる方法が分からず苦戦しております。 言語はC#になります。 以下のコードでテキストボックスに、C#でコンパイルしたプログラムのpathは分かったのですが、私が表示させたいのは、コンパイルしたプログラムのpathではなく、現在実行中のプロセスの中のあるアプリのexeファイルのpathになります。 string appPath= System.Windows.Forms.Application.ExecutablePath; textBox1.Text = appPath; 良いお知恵がございましたらお力添えいただきたく、宜しくお願いいたします。

  • パスについて、教えてください!

    ファイルR684.exeをlinux環境で実行したいです。 ************************* windowsで 下記のコマンドで `C:/temp/R684.exe`; ファイルR684.exeを実行してくれますが、 *********************** linux:ファイルR684.exeの置く場所 pwdで/home/henjinで表示した場合、 コマンドで上記windowsのように実行したい場合、 パスはどうなるでしょうか? 教えてください! お願いします。

  • Excel vbs AppActivate エラー

    Sub TeraPad_SF() 'Keyboard Shortcut: Ctrl+Shift+Q Dim RetVal As Integer Dim sA As String Dim sP As String Dim sV As String Dim sTxt As String sV = ActiveCell.Value sTxt = Left(sV, 1) & ".txt" '開くファイル名 sA = "D:\WebCamRegistor\txtFolder\" & sTxt '実行するプログラムのパス sP = "C:\Program Files\TeraPad\TeraPad.exe " RetVal = Shell(sP & sA, 1) If RetVal = 0 Then MsgBox "起動に失敗しました" AppActivate RetVal SendKeys "%SF" & sV, True End Sub '現在セルの値でAdobeReaderでxx.pdfを検索する Sub AdobeReader_SF() 'Keyboard Shortcut: Ctrl+Shift+Q Dim RetVal Dim sA As String Dim sP As String Dim sV As String Dim sTxt As String sV = ActiveCell.Value sTxt = Left(sV, 1) & ".pdf" '開くファイル名 sA = "D:\WebCamRegistor\pdfFolder\" & sTxt '実行するプログラムのパス sP = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe " RetVal = Shell(sP & sA, 1) If RetVal = 0 Then MsgBox "起動に失敗しました" Application.Wait Now + TimeSerial(0, 0, 2) AppActivate RetVal SendKeys "^F", True End Sub Excel VBA で上は正常に動作しますが、下はAppActivate RetValでエラーとなります。修正の方法をお教えください。

  • 「パスは見つかりません」&exeが実行できない!

    皆様こんにちは。 はじめまして。 Windows2000にてソフトをアンイスンストールしたあと、 いろいろなソフトを実行しようとしたら 「指定されたパスは見つかりません」 とでて”exe"fileがことごとく実行できません。 プロパティにあるリンクの先も間違ってないと思うのに、 ファイルがことごとく実行できないので、かなりあせってます。 この解決策と、想定される原因がわかる方がいらっしゃいましたらよろしくお願い致します。 以上

  • Windows環境でjavaのAppの実行方法

    EclipseのPleiadesの開発環境でGUIプログラムを作成していますし、Eclipseの 環境では、Appプログラムを実行出来ます。 ソースファイル名:Sample.java コンパイル出力:Sample.class Q1)MSのWindows上で、完成した上記Appプログラムを実行する方法を   お教え頂けないでしょうか?   注)exeファイルが無い様です。 以上、宜しくお願いします。

  • Pathの記述の仕方

    以下のようなパスの記述をしても問題ないでしょうか? /aaa/bbb/ccc/.../.../bbb/ccc/config.txt 理由としては、以下のシェルのようにconfigファイルを読み込むのに dirnameコマンドを使用して取得するためです。 このコマンドは、コマンドラインから実行する場合と、JOBNETなどの別プロセス(実行ディレクトリは別ディレクトリ)から実行される可能性があります。 Sample.csh #!/bin/csh set SHELL_PATH = `dirname $0` set APP_ROOT = ${SHELL_PATH}"/../.." setenv SERVER_INFO_FILE ${APP_ROOT}"/aaa/bbb/config.txt sample.exe ご回答宜しくお願い致します。