- PR -

Windowフォームのコマンドラインからの起動

投稿者投稿内容
shin2
ベテラン
会議室デビュー日: 2004/03/10
投稿数: 58
投稿日時: 2006-03-27 06:54
引用:

囚人さんの書き込み (2006-03-27 00:21) より:
引用:

指定されたファイルが無い場合、コンソール画面に「ファイルが無いから、終了しますよ」というメッセージを出力したいと思います。


なので、パイプなりを使ってコンソールがメッセージを受けたらよいです。

引用:

MainForm内でAutomationを実行することはわかりましたが、
Application.Run(new MainForm());
がソースにあるため、フォームが表示されてしまいます。ここでフォームを表示させず、処理を実行するためにはどのようにしたらよいのでしょうか??


Automation() がどういった処理を行うのかわかりませんが、そういうことならフォームのメソッドにしなければいいだけなのではないでしょうか。
というより、Windows アプリケーションである必要はあるのでしょうか?
何をなさりたいのかイマイチよく分かりません。




わかりにくい説明ですみません。このパイプなりを使ってコンソールがメッセージを受け取る方法を教えていただけないでしょうか??

またこのような手段をとった理由ですが、通常はGUIを使ってWindowsアプリケーションとして利用していたのですが、ある日このソフトを使って自動処理をしなければならなくなりました。あるファイルを読み込んで図化する処理(Automation)を行うのですが、ならばいちいちGUIを表示させること無く、バッチ処理で行えば実行処理が短くて扱いやすいと思ったので、コンソールからの起動方法について考えるようになったのです。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-27 08:49
引用:

わかりにくい説明ですみません。このパイプなりを使ってコンソールがメッセージを受け取る方法を教えていただけないでしょうか??


コード:

hoge.exe | more


調べていただいたらすぐに分かると思います。


_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-27 09:27
引用:

shin2さんの書き込み (2006-03-27 06:54) より:

またこのような手段をとった理由ですが、通常はGUIを使ってWindowsアプリケーションとして利用していたのですが、ある日このソフトを使って自動処理をしなければならなくなりました。あるファイルを読み込んで図化する処理(Automation)を行うのですが、ならばいちいちGUIを表示させること無く、バッチ処理で行えば実行処理が短くて扱いやすいと思ったので、コンソールからの起動方法について考えるようになったのです。


このロジックの部位だけを見てると GUI を伴いませんので、
クラス ライブラリ化し、相互から利用する手段も考えられますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-03-27 18:25
引用:

囚人さんの書き込み (2006-03-27 00:21) より:
引用:

指定されたファイルが無い場合、コンソール画面に「ファイルが無いから、終了しますよ」というメッセージを出力したいと思います。


なので、パイプなりを使ってコンソールがメッセージを受けたらよいです。



それだと、使い方に妙な制限が出来てしまいますね。

「Windows Forms アプリケーション」として実行ファイルを生成した場合、プロセス起動時に標準入出力が割り当てられないのが Windows OS の仕様です。

なので、コマンドライン引数などによって GUI/CUI を切り返したい場合、そこがちょっと問題になります。

一番簡単なのは、じゃんぬさんが書かれているように機能部分を .dll 化して、GUI/CUI 用の .exe を別にに作ってそれを呼び出すことです。
shin2
ベテラン
会議室デビュー日: 2004/03/10
投稿数: 58
投稿日時: 2006-03-27 19:46
>それだと、使い方に妙な制限が出来てしまいますね。

> 「Windows Forms アプリケーション」として実行ファイルを生成した場合、プロセス起動時に標準入出力が割り当てられないのが Windows OS の仕様です。

> なので、コマンドライン引数などによって GUI/CUI を切り返したい場合、そこがちょっと問題になります。

> 一番簡単なのは、じゃんぬさんが書かれているように機能部分を .dll 化して、GUI/CUI 用の .exe を別にに作ってそれを呼び出すことです。


確かにDLLの呼び出しはできますね。 じゃんぬねっとさん、渋木さんありがとうございました。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-27 20:43
引用:

それだと、使い方に妙な制限が出来てしまいますね。


確かに。
引用:

ある日このソフトを使って自動処理をしなければならなくなりました。


自動処理しなければならないのなら、コンソールにメッセージを出力しても無駄のような気はしますが。
素直にファイルにでもログを書くほうが得策ではないでしょうか。

引用:

確かにDLLの呼び出しはできますね。


ちなみに、exe のままでも他のアセンブリから参照できます。(呼びたい機能がpublicなら)
_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-27 21:21
引用:

囚人さんの書き込み (2006-03-27 20:43) より:

ちなみに、exe のままでも他のアセンブリから参照できます。(呼びたい機能がpublicなら)


その秘儀を使うのであれば、private でも良いですよ。
「それがどうした?」といった感じですけど。(;^-^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-27 21:23
引用:

その秘儀を使うのであれば、private でも良いですよ。


わはは。確かに^^;

_________________
囚人のジレンマな日々

スキルアップ/キャリアアップ(JOB@IT)