- PR -

C#でWindowsサービスアプリケーション(ユーザーインターフェイスあり)の作成

1
投稿者投稿内容
T2
会議室デビュー日: 2005/12/05
投稿数: 6
投稿日時: 2005-12-05 13:10
C#でユーザーインターフェースがあるサービスアプリケーションを作成したいのですが、
「ファイル」→「新規作成」→「プロジェクト」で作成するWindowsサービスでは
ユーザーインターフェース付のアプリが作成できないようです。

色々インターネットで検索して探してはいるのですが、
該当するHPが見つかりません。

やはり無理なのでしょうか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-05 13:54
引用:

やはり無理なのでしょうか?



無理です。

通常は Windows サービスとそれを制御する GUI アプリケーションは別々に作ります。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-05 14:05
こんにちは。

引用:

T2さんの書き込み (2005-12-05 13:10) より:
C#でユーザーインターフェースがあるサービスアプリケーションを作成したいのですが、



具体的にどんなサービスと、どんなUIが必要なのでしょうか?
サービスをやめて、タスクトレイ常駐型アプリにするとかではダメですか?


サービスである必要があるのでしたら、
UI部は別プログラムとして作ればいいと思います。

例えば、サービスの設定を行いたいのであれば、レジストリに設定値を書き込むUIを作るとか。
サービスとUIでプロセス間通信をするとか。

UIは、普通のWindowsアプリでもいいでしょうし、
コントロールパネルアプレットを作れば、コントロールパネルから操作することができます。


どうでしょうか?
T2
会議室デビュー日: 2005/12/05
投稿数: 6
投稿日時: 2005-12-05 14:40
早速のレス、ありがとうございます。

そうですか。無理ですか。

今回なぜサービスにするかというと、
Windowsアプリ(フォルダを監視してファイルが存在したら処理をおこなう。処理の内容が分かるような画面があります。)を
スタートアップに入れて、OSが起動するたびに起動されるようにしているのですが、
ターミナルサービスで別PCから接続した際にも、スタートアップに入れているモジュールがまた起動されます。
これを防ぎたく、サービス化することを考えたのですが、無理なようでした。。。

ちなみに、別々に作成するとは、次のような事になりますか?
@Windowsアプリ用のプロジェクトを作成し、アプリを作成。
Aサービス用のプロジェクトを作成し、ソース内で@のアプリを呼び出す用にする。

それとも、同一ソリューションにサービス用のプロジェクトとWindowsアプリ用のプロジェクトを追加して作成する。

すみません。あまりよく分かっていません。
よろしくお願いします。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-05 16:00
こんにちは。

引用:

T2さんの書き込み (2005-12-05 14:40) より:

今回なぜサービスにするかというと、
Windowsアプリ(フォルダを監視してファイルが存在したら処理をおこなう。処理の内容が分かるような画面があります。)を



スミマセン。既存のWindowsアプリの仕様がイマイチよく理解できませんでしたが…

引用:

スタートアップに入れて、OSが起動するたびに起動されるようにしているのですが、



正確に言いますと、スタートアップはOS起動時ではなくユーザーがログインした時点で起動されますね。
サービスですとOS起動時に(ユーザーがログインしなくても)、起動させることができます。

引用:

ターミナルサービスで別PCから接続した際にも、スタートアップに入れているモジュールがまた起動されます。
これを防ぎたく、サービス化することを考えたのですが、無理なようでした。。。



具体的にサービスでおこないたいことは、次のどちらでしょう。
 1.既存のWindowsアプリをローカルログイン時のときのみ、起動させるようにしたい。
 2.フォルダを監視してファイルが存在したら処理をおこなう。

1.のほうは、なんとなくサービスとしては間違った使い方のような気がします。

2.のほうですと、サービスとUIは次のように機能分解できるでしょうか。

 ・サービス:あるフォルダを監視してファイルが、存在したら特定の処理をおこなう。
 ・UI:サービスが処理したの内容をモニタする画面

引用:

ちなみに、別々に作成するとは、次のような事になりますか?
@Windowsアプリ用のプロジェクトを作成し、アプリを作成。
Aサービス用のプロジェクトを作成し、ソース内で@のアプリを呼び出す用にする。


サービスでどのようなことをするつもりなのか分かりませんので、お答えするのが難しいです。

引用:

それとも、同一ソリューションにサービス用のプロジェクトとWindowsアプリ用のプロジェクトを追加して作成する。


別に”同一ソリューション”でなくても、とくに問題はないでしょう。
サービスとUIが、どのような連携をとるのかが問題だと思います。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-06 21:04
引用:

T2さんの書き込み (2005-12-05 14:40) より:
今回なぜサービスにするかというと、
Windowsアプリ(フォルダを監視してファイルが存在したら処理をおこなう。処理の内容が分かるような画面があります。)を
スタートアップに入れて、OSが起動するたびに起動されるようにしているのですが、
ターミナルサービスで別PCから接続した際にも、スタートアップに入れているモジュールがまた起動されます。
これを防ぎたく、サービス化することを考えたのですが、無理なようでした。。。




多分一番簡単なのは、

サービスでフォルダを監視して処理してログをDBに書き込む。
(時々古いログを消去する)
クライアントアプリ(画面)は、そのDBを読み込んで表示する。

という方法かな。


[ メッセージ編集済み 編集者: ジブ 編集日時 2005-12-06 22:58 ]
T2
会議室デビュー日: 2005/12/05
投稿数: 6
投稿日時: 2005-12-07 10:36
返信が遅くなってスミマセン。

渋木宏明(ひどり)さん、Tdnr_Symさん、ジブさん、返信ありがとうございます。

引用:--------------------------------------------------------------------------
具体的にサービスでおこないたいことは、次のどちらでしょう。
 1.既存のWindowsアプリをローカルログイン時のときのみ、起動させるようにしたい。
 2.フォルダを監視してファイルが存在したら処理をおこなう。

1.のほうは、なんとなくサービスとしては間違った使い方のような気がします。

2.のほうですと、サービスとUIは次のように機能分解できるでしょうか。

 ・サービス:あるフォルダを監視してファイルが、存在したら特定の処理をおこなう。
 ・UI:サービスが処理したの内容をモニタする画面
--------------------------------------------------------------------------------
確かに、1のやり方だと、ユーザ毎のスタートアップにショートカットをセットするだけで対応できると思うので、サービスにする必要は無いと思いますが。。。

引用:--------------------------------------------------------------------------
サービスでフォルダを監視して処理してログをDBに書き込む。
(時々古いログを消去する)
クライアントアプリ(画面)は、そのDBを読み込んで表示する。
--------------------------------------------------------------------------------
う〜ん。もう少し考えて見ます。

色々と、ありがとうございました。
また、色々と質問させて頂くことがあると思いますので
その際は、またスミマセンがよろしくお願いいたします。

1

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