EXEアイコンにドロップしたTEXTファイル
投稿者 るしぇ  (社会人)
投稿日時
2009/8/7 02:20:32
OSの機能としてコマンドライン上では、ファイルのパスが EXE の引数として処理されます。
そこから取得しますが。。。3種類あるのかな。
[@IT .NET TIPS コマンドライン引数を取得するには?]
http://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html
[Command 関数]
http://msdn.microsoft.com/ja-jp/library/a4y0hhcc.aspx
そこから取得しますが。。。3種類あるのかな。
[@IT .NET TIPS コマンドライン引数を取得するには?]
http://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html
[Command 関数]
http://msdn.microsoft.com/ja-jp/library/a4y0hhcc.aspx
投稿者 ヴァン  (社会人)
投稿日時
2009/8/7 02:22:38
ファイルのパスが判ればFileStream、StreamReaderで読み込めばいいと思います。
投稿者 るきお  (社会人)
投稿日時
2009/8/7 08:22:33
つまり、こうです。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileName As String = My.Application.CommandLineArgs(0)
Dim content As String = IO.File.ReadAllText(fileName)
TextBox1.Text = content
End Sub
投稿者 まだまだ  (中学生)
投稿日時
2009/8/7 18:45:58
るきおさんとは違うやり方でやってみました。(同じだったらすみません)
Dim aa() As String = System.Environment.GetCommandLineArgs()
If aa.Length > 1 Then
Try
Dim file As String = aa(1)
Dim txtRead As StreamReader = New StreamReader(file)
TextBox1.Text = txtRead.ReadToEnd()
txtRead.Close()
Catch ex As Exception
MessageBox.Show("ERROR")
End Try
End If
投稿者 トマト  (小学生)
投稿日時
2009/8/7 18:52:42
まだまださんと、るきおさんのやり方だと、「C:\Program Files\~」とかだと「C:\Program」として認識されてしまいます。
Command関数を使ったほうが良い気がします。
自分で言っておいてなんですが、ビルドしたのをそのまま実行すると「C:\Program Files\~」などの場合、動作を停止しました。と表示されます。これもまた問題ですが。
Command関数を使ったほうが良い気がします。
自分で言っておいてなんですが、ビルドしたのをそのまま実行すると「C:\Program Files\~」などの場合、動作を停止しました。と表示されます。これもまた問題ですが。
投稿者 るきお  (社会人)
投稿日時
2009/8/7 22:29:30
>まだまださんと、るきおさんのやり方だと、「C:\Program Files\~」とかだと「C:\Program」として認識されてしまいます。
言われてみると、そう言えばそうだったと思ったのですが、
VB2005でやってみるとパス名にスペースがあってもGetCommandLineArgsメソッドはちゃんとドロップされたファイル全体をひとつのコマンドライン引数として取得してくれるみたいでした。
Commandを確認してみるとちゃんと前後に " がついています。
言われてみると、そう言えばそうだったと思ったのですが、
VB2005でやってみるとパス名にスペースがあってもGetCommandLineArgsメソッドはちゃんとドロップされたファイル全体をひとつのコマンドライン引数として取得してくれるみたいでした。
Commandを確認してみるとちゃんと前後に " がついています。
投稿者 トマト  (小学生)
投稿日時
2009/8/8 02:49:50
ごめんなさい。GetCommandLineArgsは試しませんでした。
コマンドラインを拾うだけでも一苦労ですね。
コマンドラインを拾うだけでも一苦労ですね。
投稿者 るしぇ  (社会人)
投稿日時
2009/8/8 03:35:19
情報だけ垂れ流しでごめんなさい。
検証ありがとうございます。
こういうことがあるので検証までしたくなくってしてなかったりしますが(^^;
普通にデグレじゃないの?って思っちゃうような動きですねー。
> コマンドラインを拾うだけでも一苦労ですね。
実際に動かす為には、そもそもの Microsoft 仕様に問題がある場合に加えて、
実行環境との違いによる不具合など、実際にやってみないと分からないことが
常に存在する世界ですから。。。
そのため、テスト工数に開発工数の倍くらい掛けることも普通です。
今回の指摘は大変すばらしいと思います。
こういう情報が出てくるのが掲示板のいいところですね。
検証ありがとうございます。
こういうことがあるので検証までしたくなくってしてなかったりしますが(^^;
普通にデグレじゃないの?って思っちゃうような動きですねー。
> コマンドラインを拾うだけでも一苦労ですね。
実際に動かす為には、そもそもの Microsoft 仕様に問題がある場合に加えて、
実行環境との違いによる不具合など、実際にやってみないと分からないことが
常に存在する世界ですから。。。
そのため、テスト工数に開発工数の倍くらい掛けることも普通です。
今回の指摘は大変すばらしいと思います。
こういう情報が出てくるのが掲示板のいいところですね。
投稿者 Knyacky  (中学生)
投稿日時
2009/8/10 19:23:51
皆さん、ありがとうございます。
まだファイル入出力の勉強中なので....
まだファイル入出力の勉強中なので....
投稿者 るきお  (社会人)
投稿日時
2009/8/10 22:02:35
>皆さん、ありがとうございます。
>まだファイル入出力の勉強中なので....
誰もがたくさんのことを勉強する必要があるので、勉強中であることは何の問題もないです。
今回の件では、やりたいことができるようになりましたか?
それとも、みなさんの回答にもかかわらずまだ実現できていませんか?
>まだファイル入出力の勉強中なので....
誰もがたくさんのことを勉強する必要があるので、勉強中であることは何の問題もないです。
今回の件では、やりたいことができるようになりましたか?
それとも、みなさんの回答にもかかわらずまだ実現できていませんか?
投稿者 Knyacky  (中学生)
投稿日時
2009/8/10 23:13:06
>今回の件では、やりたいことができるようになりましたか?
>それとも、みなさんの回答にもかかわらずまだ実現できていませんか?
実現出来ました!ありがとうございます!
>それとも、みなさんの回答にもかかわらずまだ実現できていませんか?
実現出来ました!ありがとうございます!
投稿者 Knyacky  (中学生)
投稿日時
2009/8/11 04:43:29
ところで、まだまださんのコードでは、
のところで
"型’StreamReader'が定義されていせん。
とでました。System.IOのインポートをし忘れてるようです。
つまり、
か、プロシージャ群の前に
とするようです。
Dim txtRead As StreamReader = New StreamReader(file)
のところで
"型’StreamReader'が定義されていせん。
とでました。System.IOのインポートをし忘れてるようです。
つまり、
Dim txtRead As IO.StreamReader = New IO.StreamReader(file)
か、プロシージャ群の前に
Imports System.IO
とするようです。
投稿者 まだまだ  (中学生)
投稿日時
2009/8/11 05:05:24
そうでしたね。
すっかり忘れていました。ごめんなさい。
すっかり忘れていました。ごめんなさい。
VB2008です。