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

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

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

メモリストリームをexeのパラメータに指定する方法について

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

■100581 / inTopicNo.1)  メモリストリームをexeのパラメータに指定する方法について
  
□投稿者/ ジェイド (1回)-(2022/09/25(Sun) 12:05:24)

分類:[VB.NET/VB2005 以降] 

VisualStudio2013 VB.Net(.NetFramework4.5)で作れていたプログラムを改修しようとしております。

現在、引数に絶対パスを指定して、起動時にそのパス情報を元にファイル読み込みして読んだイメージを
画面に表示している機能があります。

これをパラメータに指定するのをパスではなく、メモリストリームにしたいと思っているのですが
可能なのでしょうか?

当画面の呼び出し元のプログラムがこの為にローカル環境にファイル保存をしていまして
ファイル保存することなく、ファイルの中身をパラメータでやり取り出来ないかと考えております。

もしやり方をご存じの方がおられましたらご教授いただければ幸いです。
宜しくお願い致します。
引用返信 編集キー/
■100582 / inTopicNo.2)  Re[1]: メモリストリームをexeのパラメータに指定する方法について
□投稿者/ Azulean (1256回)-(2022/09/25(Sun) 12:40:11)
No100581 (ジェイド さん) に返信
> これをパラメータに指定するのをパスではなく、メモリストリームにしたいと思っているのですが
> 可能なのでしょうか?

コマンドライン引数(exe の後にファイルパスを指定するもの)であれば、「文字列」以外を渡せませんので「できません」。


> 当画面の呼び出し元のプログラムがこの為にローカル環境にファイル保存をしていまして
> ファイル保存することなく、ファイルの中身をパラメータでやり取り出来ないかと考えております。

(1) exe を分けず、1 つのアプリケーションに仕立てる
(2) WCF などを使って MemoryStream ではなく、Byte 配列で受け渡す
(3) MemoryMappedFile を使う

といったところが候補になってくると思います。
しかし、いずれも相応に学習コストや対応コストがかかりますので、「この為にローカル環境にファイル保存をしていまして」を辞めたかった理由次第ですが、諦めるのが現実的ではないでしょうか?
引用返信 編集キー/
■100583 / inTopicNo.3)  Re[1]: メモリストリームをexeのパラメータに指定する方法について
□投稿者/ Hongliang (1253回)-(2022/09/25(Sun) 12:48:15)
MemoryStreamとして渡すというのは不可能なので、方法を考える必要があります。

その画像がpngにして大きくても20kBほどなのであれば、pngバイナリをBase64変換して引数に渡すという手があります(引数の最大長は32000文字程度)。

あとは何らかのプロセス間通信を使うことになるでしょう。
例えば
・標準入出力(渡す側はProcess.Standard、受け取る側はConsole.Inなどを使う)
・名前付きパイプ(コマンドライン引数でパイプの名前を受け渡しして名前を共有、System.IO.NamedPipes名前空間のクラスを使う)

起動時に渡すだけならRPC系はちょっと大掛かりすぎますかね。
引用返信 編集キー/
■100584 / inTopicNo.4)  Re[2]: メモリストリームをexeのパラメータに指定する方法について
□投稿者/ ジェイド (2回)-(2022/09/25(Sun) 13:17:20)
Azulean さん
Hongliangさん

ご返信ありがとうございます。

やはり単純にメモリーストリームをパラメータにセットするのは無理ということですよね。
ファイルのサイズにも制限をかけることは出来ないかと思うので、今のやり方になっているのかもしれないですね。
ちょっと断念することにします。

教えていただいた内容を元に他の方法を検討してみます。
お忙しいところ教えていただきありがとうございました。

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

このトピックをツリーで一括表示


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

このトピックに書きこむ