C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: EXEにファイルをD&Dしファイルリストを読み取る


(過去ログ 138 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■81239 / inTopicNo.1)  EXEにファイルをD&Dしファイルリストを読み取る
  
□投稿者/ バジャイ (1回)-(2016/09/04(Sun) 18:31:29)

分類:[.NET 全般] 


VB2010を使っています。

Explorer上でビルドしたEXEファイルに
ファイルをD&Dし、ファイルリストを読み込ませ
プログラムを実行したいのですが
どうすれば良いですか?
https://social.msdn.microsoft.com/Forums/ja-JP/fe7520ea-c515-41c8-91e9-54a3e7f10ae7?forum=csharpgeneralja
ここに多少情報があるのですが
C#でコードが書かれています。
VBではどうすれば良いでしょうか?





引用返信 編集キー/
■81241 / inTopicNo.2)  Re[1]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ 魔界の仮面弁士 (871回)-(2016/09/04(Sun) 18:49:00)
No81239 (バジャイ さん) に返信
> Explorer上でビルドしたEXEファイルに
> ファイルをD&Dし、ファイルリストを読み込ませ

ドラッグされた一覧は、コマンドライン引数として受け取れます。
あとは、受け取ったファイルパスそれぞれについて、必要な処理を記載してみてください。
http://dobon.net/vb/dotnet/programing/commandline.html
引用返信 編集キー/
■81242 / inTopicNo.3)  Re[2]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ バジャイ (3回)-(2016/09/04(Sun) 19:04:48)
ありがとうございます。

コンソールアプリケーションではなく
フォームアプリケーションの場合にはどうしたら良いですか?
 
引用返信 編集キー/
■81243 / inTopicNo.4)  Re[3]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ 魔界の仮面弁士 (872回)-(2016/09/04(Sun) 19:13:11)
No81242 (バジャイ さん) に返信
> コンソールアプリケーションではなく
> フォームアプリケーションの場合にはどうしたら良いですか?

一緒です。そのページの最後に紹介されている手法を使うか、
もしくは、そのページの中ほどで紹介されている
「アプリケーションのエントリポイントを自作する」
の方法を試してみてください。
引用返信 編集キー/
■81245 / inTopicNo.5)  Re[4]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ バジャイ (5回)-(2016/09/04(Sun) 19:47:15)
ありがとうございます。
もう一度ページをよく読んでみたのですが
このコードはどこのモジュール、クラスに書けば良いのですか?

Sub Form1_Loadなどに書いても認識されないのですが・・・
よろしくお願いいたします。

引用返信 編集キー/
■81250 / inTopicNo.6)  Re[5]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ 774RR (450回)-(2016/09/05(Mon) 09:07:00)
「認識されない」というのがどういう現象なのか読者には理解できないので
・コンパイルエラーなのだったらソースコード+エラーメッセージを提示
・実行時エラーなのだったら操作内容+エラーメッセージ
・その他なのだったら、読者にわかるよう「再現できる最小限の手順」
が必要だろう。

EXE ファイル本体にファイルを D&D だと System.Environment.CommandLine にファイル名が与えられる
EXE のショートカットにファイルを D&D してもショートカット内に書いた commandline が有効
アドバタイズドショートカットに D&D しても無効
起動した「フォーム」に D&D する場合には DragDrop イベント発生


VS2005 C# FormApp で次のコードはあなたの期待しているとおりに動く

private void Form1_Load(object sender, EventArgs e)
{
    String[] args = System.Environment.GetCommandLineArgs();
    label1.Text = args[1];
}
# D&D しないと IndexOutOfRangeException が投げられるあたりまで期待通り

引用返信 編集キー/
■81252 / inTopicNo.7)  Re[6]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ バジャイ (7回)-(2016/09/05(Mon) 11:38:47)
ありがとうございます。

できました。

ちなみにForループを使わずに一度にString配列にコピーしたいのですが

Dim file() As String = CType(My.Application.CommandLineArgs, String())

とやってもうまくいきません。
どうすれば良いですか?
 
引用返信 編集キー/
■81256 / inTopicNo.8)  Re[7]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ 魔界の仮面弁士 (875回)-(2016/09/05(Mon) 11:57:21)
No81252 (バジャイ さん) に返信
> ちなみにForループを使わずに一度にString配列にコピーしたいのですが
> Dim file() As String = CType(My.Application.CommandLineArgs, String())
> とやってもうまくいきません。

そのままでも、
  Dim file = My.Application.CommandLineArgs
  Dim a As String = file(0)
  Dim b As String = file(1)
のように呼び出すことはできますが、どうしても配列に入れたいのでしょうか?


> どうすれば良いですか?
CommandLineArgs は、『ReadOnlyCollection(Of String)』型であり、
単に CType しただけでは、String 配列とはなりません。

どうしても配列にしたいのであれば、
 = My.Application.CommandLineArgs.ToArray()
と記述してみてください。
引用返信 編集キー/
■81260 / inTopicNo.9)  Re[8]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ bajai (1回)-(2016/09/05(Mon) 18:28:14)
No81256 (魔界の仮面弁士 さん) に返信
> ■No81252 (バジャイ さん) に返信
>>ちなみにForループを使わずに一度にString配列にコピーしたいのですが
>> Dim file() As String = CType(My.Application.CommandLineArgs, String())
>>とやってもうまくいきません。
>
> そのままでも、
>   Dim file = My.Application.CommandLineArgs
>   Dim a As String = file(0)
>   Dim b As String = file(1)
> のように呼び出すことはできますが、どうしても配列に入れたいのでしょうか?
>
>
>>どうすれば良いですか?
> CommandLineArgs は、『ReadOnlyCollection(Of String)』型であり、
> 単に CType しただけでは、String 配列とはなりません。
>
> どうしても配列にしたいのであれば、
>  = My.Application.CommandLineArgs.ToArray()
> と記述してみてください。
引用返信 編集キー/
■81261 / inTopicNo.10)  Re[9]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ バジャイ (8回)-(2016/09/05(Mon) 18:29:48)
重ね重ねありがとうございます。うまくいきました。
ちなみに、
= My.Application.CommandLineArgs.ToArray()
でコピーをするとき
0〜xまで入った配列を
1〜x+1の範囲にずらしてコピーすることは可能でしょうか?
一度コピーしてからForループでずらすしかないですか?
 
 
引用返信 編集キー/
■81266 / inTopicNo.11)  Re[10]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ 魔界の仮面弁士 (877回)-(2016/09/05(Mon) 19:25:25)
No81261 (バジャイ さん) に返信
> 0〜xまで入った配列を
> 1〜x+1の範囲にずらしてコピーすることは可能でしょうか?

こういうことで良いのかな…。

Dim a() As String = {"A", "B", "C", "D"}
Dim b() As String = New String() {"X"}.Concat(a).ToArray()

引用返信 編集キー/
■81269 / inTopicNo.12)  Re[11]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ バジャイ (9回)-(2016/09/05(Mon) 22:07:20)
すいません、できれば
逆に
1〜x+1まで入った配列の一つ目の要素を削除して
0〜xの範囲にずらしてコピーする方法もあればお教え願えないでしょうか?
 
引用返信 編集キー/
■81270 / inTopicNo.13)  Re[12]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ 魔界の仮面弁士 (879回)-(2016/09/05(Mon) 22:12:49)
No81269 (バジャイ さん) に返信
> 1〜x+1まで入った配列の一つ目の要素を削除して
> 0〜xの範囲にずらしてコピーする方法もあればお教え願えないでしょうか?

Dim a() As String = {"A", "B", "C", "D"}
Dim b() As String = a.Skip(1).ToArray()
引用返信 編集キー/
■81272 / inTopicNo.14)  Re[13]: EXEにファイルをD&Dしファイルリストを読み取る
□投稿者/ バジャイ (10回)-(2016/09/05(Mon) 22:14:39)
最強でした。どうもありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -