VBでファイルを開く
投稿者 るしぇ  (社会人)
投稿日時
2010/5/10 10:54:05
参考リンクの最初に
>プログラム名はフルパスで
と書いてあります。
>プログラム名はフルパスで
と書いてあります。
投稿者 XVMAX  (中学生)
投稿日時
2010/5/10 10:57:05
すみません
自分の読み忘れでした。
自分の読み忘れでした。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2010/5/10 11:13:45
> http://hanatyan.sakura.ne.jp/vbhlp/tap_shell.htm
それは VB6 向けの記事です。VB.NET ならこっち。
http://hanatyan.sakura.ne.jp/dotnet/App03.htm
# ちなみに、そこのサイト(VBレスキュー)にも掲示板はありますよ。
# http://hanatyan.sakura.ne.jp/index.html
ちなみに、こちらのサイト(VB中学校)のサンプルはこちら。
http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample093ShellEx.htm
> Ret = Shell("Resources\a.exe",VBNormalFocus)
VB6 の Shell の戻り値は Long 型でしたが、
VB.NET の Shell の戻り値は Integer 型です。
> 早速質問ですが、「Resources」フォルダのEXEファイルを開くには、どうすればよいですか?
プロジェクトに Resources を含めているのだと思いますが、その場合、
ソリューション エクスプローラーから、Resources\a.exe のプロパティを見た場合、
【出力ディレクトリにコピー】の設定はどうなっていますか?
もしそれが、コピーする設定になっている場合は、exe の置かれるフォルダの下に
Resources というサブフォルダが出来、その中に a.exe が配置されるため、
パスさえ正しければ、Shell 関数や Process.Start で起動できます。
しかし、コピーしない設定になっている場合(通常はこの状態だと思います)には、
a.exe はプログラム中にバイナリデータとして埋め込まれた状態です。
埋め込まれたバイナリを取り出すには、
Dim binary() As Byte = My.Resources.a
などとして、バイト配列に受けることができますが、そのバイト配列から
Shell や Process.Start でプログラムを直接起動することはできませんので、
System.IO.File.WriteAllBytes などを用いて、一度 exe ファイルとして
ディスク上に配置してから、改めてそれを実行する事になります。
ただし、その a.exe が .NET Framework で作成された物であるならば、
リフレクションを用いて起動できる可能性があります。
Imports System.Reflection
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim binary() As Byte = My.Resources.a
Dim asm As System.Reflection.Assembly
asm = Assembly.Load(binary)
asm.EntryPoint.Invoke(asm, BindingFlags.Default, Nothing, Nothing, Nothing)
End Sub
End Class
http://bbs.wankuma.com/index.cgi?mode=al2&namber=47083&KLOG=79
それは VB6 向けの記事です。VB.NET ならこっち。
http://hanatyan.sakura.ne.jp/dotnet/App03.htm
# ちなみに、そこのサイト(VBレスキュー)にも掲示板はありますよ。
# http://hanatyan.sakura.ne.jp/index.html
ちなみに、こちらのサイト(VB中学校)のサンプルはこちら。
http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample093ShellEx.htm
> Ret = Shell("Resources\a.exe",VBNormalFocus)
VB6 の Shell の戻り値は Long 型でしたが、
VB.NET の Shell の戻り値は Integer 型です。
> 早速質問ですが、「Resources」フォルダのEXEファイルを開くには、どうすればよいですか?
プロジェクトに Resources を含めているのだと思いますが、その場合、
ソリューション エクスプローラーから、Resources\a.exe のプロパティを見た場合、
【出力ディレクトリにコピー】の設定はどうなっていますか?
もしそれが、コピーする設定になっている場合は、exe の置かれるフォルダの下に
Resources というサブフォルダが出来、その中に a.exe が配置されるため、
パスさえ正しければ、Shell 関数や Process.Start で起動できます。
しかし、コピーしない設定になっている場合(通常はこの状態だと思います)には、
a.exe はプログラム中にバイナリデータとして埋め込まれた状態です。
埋め込まれたバイナリを取り出すには、
Dim binary() As Byte = My.Resources.a
などとして、バイト配列に受けることができますが、そのバイト配列から
Shell や Process.Start でプログラムを直接起動することはできませんので、
System.IO.File.WriteAllBytes などを用いて、一度 exe ファイルとして
ディスク上に配置してから、改めてそれを実行する事になります。
ただし、その a.exe が .NET Framework で作成された物であるならば、
リフレクションを用いて起動できる可能性があります。
Imports System.Reflection
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim binary() As Byte = My.Resources.a
Dim asm As System.Reflection.Assembly
asm = Assembly.Load(binary)
asm.EntryPoint.Invoke(asm, BindingFlags.Default, Nothing, Nothing, Nothing)
End Sub
End Class
http://bbs.wankuma.com/index.cgi?mode=al2&namber=47083&KLOG=79
投稿者 (削除されました)  ()
投稿日時
2010/5/10 11:14:43
(削除されました)
「[「TTSneo」、「なでしこ」(日本語プログラミングソフト)]、「Visual C++ 5.0」(家にあったもの) などで、プログラミングをしていました。
今回、VB2010でのプログラミングをやってみようと思いました。
早速質問ですが、「Resources」フォルダのEXEファイルを開くには、どうすればよいですか?
例;
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label2.Text = "OSバージョン ;" & (Environment.OSVersion.ToString())
Dim Ret As Long
Ret = Shell("Resources\a.exe",VBNormalFocus)
End Sub
参考;「http://hanatyan.sakura.ne.jp/vbhlp/tap_shell.htm(VBレスキュー(花ちゃん) - 他の実行形式(*.EXE)ファイルの実行)」
教えてください。お願いします。