DOBON.NET DOBON.NETプログラミング掲示板過去ログ

notifyiconについて

  • 題名: notifyiconについて
  • 著者: C#初心者
  • 日時: 2009/08/26 2:17:02
  • ID: 25294
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[OS : Windows XP / 言語 : C# / .NET Framework : 2.0]
分類:[.NET]

【解決したい問題】

notifyicon コンポーネントを使用して、タスクトレイにアイコンを表示するようにしましたが、スタートメニューに登録し立ち上げ時にアイコンが表示されません。 4秒ルール(JP418138 http://support.microsoft.com/kb/418138/JA)で失敗しているのはわかるのですが、C#で回避する方法がわかりません。

【解決するために何をしたか】

DHCPやSSDPを停止すると表示されるので、ネットワークの処理に時間がかかっていると思っています。
■No25294に返信(C#初心者さんの記事)
> 【解決したい問題】
>
> notifyicon コンポーネントを使用して、タスクトレイにアイコンを表示するようにしましたが、スタートメニューに登録し立ち上げ時にアイコンが表示されません。 4秒ルール(JP418138 http://support.microsoft.com/kb/418138/JA)で失敗しているのはわかるのですが、C#で回避する方法がわかりません。

  どんな言語で作成しても同じです。
  また、JP418138で書かれている通り仕様なので、一番の解決は・・・
  そのソフトを遅延起動させるしかないのでは?

  どっか別の掲示板でも書いたことありますが、OS起動時のスタート
  アップでは、CPUが忙しいので、CPUがある程度ヒマになるのを
  待ってアイコン登録するようすれば、登録に失敗しなくなるはずです。

  CPUの負荷率を取得する機能と、その負荷率がある一定値以下にな
  ってから一定時間待って所定の動作を行うようにする。

以上。参考まで
■No25295に返信(オショウさんの記事)
> ■No25294に返信(C#初心者さんの記事)
>>【解決したい問題】
>>
>>notifyicon コンポーネントを使用して、タスクトレイにアイコンを表示するようにしましたが、スタートメニューに登録し立ち上げ時にアイコンが表示されません。 4秒ルール(JP418138 http://support.microsoft.com/kb/418138/JA)で失敗しているのはわかるのですが、C#で回避する方法がわかりません。
>
>   どんな言語で作成しても同じです。
>   また、JP418138で書かれている通り仕様なので、一番の解決は・・・
>   そのソフトを遅延起動させるしかないのでは?
>
>   どっか別の掲示板でも書いたことありますが、OS起動時のスタート
>   アップでは、CPUが忙しいので、CPUがある程度ヒマになるのを
>   待ってアイコン登録するようすれば、登録に失敗しなくなるはずです。
>
>   CPUの負荷率を取得する機能と、その負荷率がある一定値以下にな
>   ってから一定時間待って所定の動作を行うようにする。
>
> 以上。参考まで


早速のお返事ありがとうございます。

JP418138では、

この動作を考慮したアプリケーション側での対処としては、以下のようなものが考えられます。 (Shell_NotifyIcon() の呼び出しが FALSE を返し、GetLastError() の値がERROR_TIMEOUT だった場合)

Sleep() などで、リトライするまでの間、少し待機します
NIM_MODIFY を指定して Shell_NotifyIcon() を呼び出し、Shell_NotifyIcon() が FALSE を返すことを確認します (TRUE を返した場合には、以前の登録が正常に行われていたものと判断します)
NIM_ADD を指定して Shell_NotifyIcon() を呼び出します。 FALSE が返された場合には、1 の手順から繰り返します。

とあるのですが、notifyicon コンポーネントを使用している限り、この処理を加えること 又は よく似た処理はできないのでしょうか?
■No25300に返信(C#初心者さんの記事)
> とあるのですが、notifyicon コンポーネントを使用している限り、この処理を加えること 又は よく似た処理はできないのでしょうか?

NotifyIcon コンポーネントは Shell_NotifyIcon の戻り値をチェックしていませんので残念ながら、正常に追加できたか、タイムアウトしたかを知ることはできません。
■No25302に返信(Azuleanさんの記事)
> ■No25300に返信(C#初心者さんの記事)
>>とあるのですが、notifyicon コンポーネントを使用している限り、この処理を加えること 又は よく似た処理はできないのでしょうか?
>
> NotifyIcon コンポーネントは Shell_NotifyIcon の戻り値をチェックしていませんので残念ながら、正常に追加できたか、タイムアウトしたかを知ることはできません。

そうですか.....
APIを使用するか、起動を遅らすか、がんばってみます。
ありがとうございます。
  • 題名: Re[5]: notifyiconについて
  • 著者: C#初心者
  • 日時: 2009/10/04 23:42:56
  • ID: 25499
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No25303に返信(C#初心者さんの記事)
> ■No25302に返信(Azuleanさんの記事)
>>■No25300に返信(C#初心者さんの記事)
> >>とあるのですが、notifyicon コンポーネントを使用している限り、この処理を加えること 又は よく似た処理はできないのでしょうか?
>>
>>NotifyIcon コンポーネントは Shell_NotifyIcon の戻り値をチェックしていませんので残念ながら、正常に追加できたか、タイムアウトしたかを知ることはできません。
>
> そうですか.....
> APIを使用するか、起動を遅らすか、がんばってみます。
> ありがとうございます。
>

起動を遅らせても状況によって不確定なため、APIを使用して解決しました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板