超初心者です。
どなたか教えてください。
vb .net2003で、shell関数で指定したファイルを起動できなかった時に、メッセージを表示したいです。
ヘルプを見たら、例外/エラーの欄にFileNotFoundException というそれらしきものがあるのですが、どう記述したらいいのかわかりません。ネットで検索してもJAVAばかりがひっかかります。
どなたか教えてください!
宜しくお願いします!
Try
Shell("c:\test.exe")
Catch ex As System.IO.FileNotFoundException
MsgBox(ex.Message)
End Try
で出来ると思います。
このエラーはファイルが存在しない場合のエラーですので、
他のエラーが発生した場合の事も考慮もした方がいいと思いますよ。
eiさん、ありがとうございます。
でも…実行してみたらcatchのところにひっかかってくれませんでした。
「ファイルが見つかりません。パス及びファイル名が正しいか、必要なライブラリがすべて利用可能かどうか、確認してください。」
というメッセージがでます。
ちゃんと存在するファイルを指定して実行するとうまくいきます。
開こうとしているファイルはpdfです。だからでしょうか?
それとも何か他に必要な記述があるのでしょうか。。。
度々すみませんが、宜しくお願いします!
関連付け起動を行いたい場合は、Shell関数の替わりに、System.Diagnostics.ProcessクラスのStartメソッドを使ってみて下さい。
> 開こうとしているファイルはpdfです。だからでしょうか?
だからでしょう。Shell関数は、exeファイルなどの「実行可能プログラム」を起動するための物です。文書ファイルを開くための物ではありません。
もし、PDFをShell関数で開くのであれば、Acrobat Readerのパスを指定して、そこにPDFを渡すようにコーディングする必要があります。
仮にShell関数で開く場合は
魔界の仮面弁士さんが、おっしゃってる様に
Shell("Acrobat Readerのパス ファイルパス")と実行しますが、
ファイルが存在しない場合のエラー等は、
Acrobat Reader側でエラーとなりますので
If System.IO.File.Exists("ファイルパス") = False Then
MsgBox("ファイルが存在しません。)
Else
起動処理
End If
でファイルの存在チェックを行ってください。
魔界の仮面弁士さん、ありがとうございます!
System.Diagnostics.ProcessクラスのStartメソッド
を使ったらできました!
ただ以前は、shell("cmd.exe /c start " & ファイル名)とやっていたようで、これだと環境変数のPATH以下にファイルを置けばファイル名を渡すだけで開けるんですよね?System.Diagnostics.ProcessクラスのStartメソッドはフルパスしかできないのでしょうか?フルパスでもいいのですが、ちょっとできるのかな〜?と疑問に思いまして。
新たに質問してしまってすみません。
どなたか教えていただければ幸いです。
ツイート | ![]() |