DOBON.NET DOBON.NETプログラミング掲示板過去ログ

lnkファイル や urlファイルを、VBから実行するには

環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 3.5]
分類:[.NET]

【解決したい問題】

リストビューコントロールに、拡張子がlnkのショートカット、拡張子がurlのリンク、フォルダー名のフルパス、拡張子がexeなどの実行ファイルなどが、入っています。

これをちょうどエクスプローラーでダブルクリックした時のように、lnkなどは関連付けられたアプリケーションで実行し、urlは規定のブラウザー(Internet Explorer)で開き、パスはエクスプローラーで開くように、Visual Basicでコードすることは可能でしょうか。

【解決するために何をしたか】

リストビューをクリックして、ターゲットのファイル名、パス名、lnkやurlを、フルパス表示の文字列として取得することはできています。

これを
System.Diagnostics.Process.Start(myFile)
で実行してもうまくいきません。

これらを一つのフォルダーに集めて、エクスプローラーを経由することも考えましたが、ダブルクリックになるのと、スペース的にもあまりスマートにできませんでした。

環境はWindowsXP Pro、Visual Studio 2008 Stdです。VB3.1より前に始り、VB6.0が長く、.NETはまだ2ケ月足らずです。VB6.0のAPIは少し使いますがCは苦手です。
■No24639に返信(WOTAさんの記事)
> System.Diagnostics.Process.Start(myFile)
あれ?
 s = "C:\Documents and Settings\All Users\デスクトップ\sample.lnk"
 Process.Start(s)
で、問題無く起動しましたが…。

> で実行してもうまくいきません。
どうなってしまうのでしょうか?
魔界の仮面弁士さん
今回も早速のご教示ありがとうございました。
解決しました。

わかってみれば、myFileを再構成するとき、最後のフォルダーが抜けていました。
こんなことで何故半日も悩んでいたのか、全く面目次第もありません。

WOTA>>System.Diagnostics.Process.Start(myFile)
魔界の仮面弁士さん> あれ?
>  s = "C:\Documents and Settings\All Users\デスクトップ\sample.lnk"
>  Process.Start(s)
> で、問題無く起動しましたが…。

正しいmyFileにしたら、問題なく起動できました。
ただ現在、
'アイテムがアクティブになった時
Private Sub ListView1_ItemActivate(ByVal sender As Object, _
ByVal e As EventArgs)
Dim lv As ListView = CType(sender, ListView)
Dim myFile As String = myFolder & "\" & lv.FocusedItem.Text
Process.Start(myFile)
End Sub
のように使っているのですが、多重起動になっています。
これは別の問題なので、何とか自力で解決するべくやってみます。
できる筈と信じて、エラーメッセージをもう一度入念にチェックしたらすぐ解決できました。ファイルがないよとはっきりでていたのでした。とほほ
本当にありがとうございました。
           WOTA
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板