- PR -

Windowsサービスでアイコンイベント

1
投稿者投稿内容
たけまる
会議室デビュー日: 2004/09/22
投稿数: 3
投稿日時: 2005-10-18 17:28
Windowsサービスをプロジェクト テンプレートより作成し、
サービスにNotifyIconをD&Dし、Mouse_Downイベントより、
フォームを起動しようとしました。
過去ログを参照し、サービスのプロパティに
デスクトップとの会話をできるようにしましたが、
フォームが呼び出されません。

マウスダウンイベントに、イベントログを出力するようにしても、
出力されていないので、どうやら、イベントも出ていないようです。

サービスからNotifyIconを使用する場合は、上記手順だけでは、
イベントは発生しないのでしょうか?

よろしくお願いします。
たけまる
会議室デビュー日: 2004/09/22
投稿数: 3
投稿日時: 2005-10-18 18:11
申し訳ありません、環境を書いてませんでした。

VB.NET
.NET Framework V1.1
VS 2003 EE

です。
たけまる
会議室デビュー日: 2004/09/22
投稿数: 3
投稿日時: 2005-10-27 14:03
自己レスします。

サービスプロジェクトに、Winフォームを追加し、
HIDEでNortifyIconを表示するようにしましたが、
それでも、アイコンからのイベントは発生しませんでした。

サービスプロジェクトでは、NotifyIconからのイベントは、
発生しないとの認識でよろしいのでしょうか?

解決法としては、結局、別のデスクトップアプリプロジェクトを
作成し、そちらで処理を行うようにしました。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-10-27 14:26
考えても見てください。リモートデスクトップや簡易ユーザー切替、ターミナルサービスなどがある以上、ひとつのコンピューターに存在するタスクトレイは一つとは限りません。タスクトレイに限らず、もしサービスからGUI関連の処理を行おうとするなら、どのデスクトップに対して処理を行うのか明示する必要があります。
.NET Frameworkにはその為の命令は用意されていません(MSDNライブラリ:Windows サービス アプリケーションの概要 参照)。Windows APIのEnumDesktopsやOpenDesktop等のWindows APIを用いて、どのデスクトップに対して処理を行うか明示する必要があります。
引用:

解決法としては、結局、別のデスクトップアプリプロジェクトを
作成し、そちらで処理を行うようにしました。


とするのが、たぶん一番無難な解決方法です。
1

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