EXEアイコンにドロップしたTEXTファイル への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 まだまだ  (中学生) 投稿日時 2009/8/11 05:05:24
そうでしたね。
すっかり忘れていました。ごめんなさい。
投稿者 Knyacky  (中学生) 投稿日時 2009/8/11 04:43:29
ところで、まだまださんのコードでは、
     Dim txtRead As StreamReader = New StreamReader(file)

のところで
"型’StreamReader'が定義されていせん。
とでました。System.IOのインポートをし忘れてるようです。
つまり、
Dim txtRead As IO.StreamReader = New IO.StreamReader(file)

か、プロシージャ群の前に
Imports System.IO

とするようです。
投稿者 Knyacky  (中学生) 投稿日時 2009/8/10 23:13:06
>今回の件では、やりたいことができるようになりましたか?
>それとも、みなさんの回答にもかかわらずまだ実現できていませんか?

実現出来ました!ありがとうございます!
投稿者 るきお  (社会人) 投稿日時 2009/8/10 22:02:35
>皆さん、ありがとうございます。
>まだファイル入出力の勉強中なので.... 
誰もがたくさんのことを勉強する必要があるので、勉強中であることは何の問題もないです。

今回の件では、やりたいことができるようになりましたか?
それとも、みなさんの回答にもかかわらずまだ実現できていませんか?
投稿者 Knyacky  (中学生) 投稿日時 2009/8/10 19:23:51
皆さん、ありがとうございます。
まだファイル入出力の勉強中なので....
投稿者 るしぇ  (社会人) 投稿日時 2009/8/8 03:35:19
情報だけ垂れ流しでごめんなさい。
検証ありがとうございます。
こういうことがあるので検証までしたくなくってしてなかったりしますが(^^;
普通にデグレじゃないの?って思っちゃうような動きですねー。

> コマンドラインを拾うだけでも一苦労ですね。
実際に動かす為には、そもそもの Microsoft 仕様に問題がある場合に加えて、
実行環境との違いによる不具合など、実際にやってみないと分からないことが
常に存在する世界ですから。。。
そのため、テスト工数に開発工数の倍くらい掛けることも普通です。

今回の指摘は大変すばらしいと思います。
こういう情報が出てくるのが掲示板のいいところですね。
投稿者 トマト  (小学生) 投稿日時 2009/8/8 02:49:50
ごめんなさい。GetCommandLineArgsは試しませんでした。

コマンドラインを拾うだけでも一苦労ですね。
投稿者 るきお  (社会人) 投稿日時 2009/8/7 22:29:30
>まだまださんと、るきおさんのやり方だと、「C:\Program Files\~」とかだと「C:\Program」として認識されてしまいます。
言われてみると、そう言えばそうだったと思ったのですが、
VB2005でやってみるとパス名にスペースがあってもGetCommandLineArgsメソッドはちゃんとドロップされたファイル全体をひとつのコマンドライン引数として取得してくれるみたいでした。
Commandを確認してみるとちゃんと前後に " がついています。

投稿者 トマト  (小学生) 投稿日時 2009/8/7 18:52:42
まだまださんと、るきおさんのやり方だと、「C:\Program Files\~」とかだと「C:\Program」として認識されてしまいます。
Command関数を使ったほうが良い気がします。

自分で言っておいてなんですが、ビルドしたのをそのまま実行すると「C:\Program Files\~」などの場合、動作を停止しました。と表示されます。これもまた問題ですが。
投稿者 まだまだ  (中学生) 投稿日時 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 08:22:33
つまり、こうです。
  
Private Sub Form1_Load(ByVal sender As System.ObjectByVal 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 02:22:38
ファイルのパスが判ればFileStream、StreamReaderで読み込めばいいと思います。
投稿者 るしぇ  (社会人) 投稿日時 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
投稿者 Knyacky  (中学生) 投稿日時 2009/8/7 00:53:46
EXEアイコンにドロップしたTEXTファイルを読み込むには,どうすれば良いですか?
VB2008です。