none
VB6でタスクトレイアイコンの再描画 RRS feed

  • 質問

  • 環境など

    Visual Basic 6.0 sp5

    Windows 2000Professional SP4

    Windows xp Home Edition SP2

    Windows xp Professional Edition SP2

    (いずれも自動更新にて常に最新状態)

     

    はじめまして。

    VB6にてタスクトレイにアイコンを表示して常駐するアプリケーションを開発しているのですが、そのアイコンが消えてしまう現象に悩んでいます。

     

    アプリケーションのアイコンをタスクトレイに登録する方法は、本やweb等でサンプルを参考に作成することができました。

    しかし、登録したアイコンが消えてしまう現象があり、対処方法を探しているのですが、いずれもC言語でのサンプルしか見つけることができず、わたくしはC言語を理解できないものですから、活用できないでいます。

    また、xpに限定されますが、タスクトレイへのアイコン登録がタイムアウトになる場合の対処は実装できました。

    アイコンが消えてしまう現象は、何らかの原因でタスクバーが再起動してしまうために、起きているものと認識しています。しかし、そこで復活するアイコンと復活しないアイコンがあり、復活するアイコンのプログラムなどは、タスクバーの再起同時に送信されるメッセージを受け取ってタスクトレイへのアイコンを再登録していることがわかりました。

     

    VB6にてタスクバーの再起動を認識して、タスクトレイへのアイコン再登録を行う技を説明している書籍、webなどご存じの方ひとつ、ご教授願いたいのですが。

    2007年5月22日 10:00

回答

  • > VB6にてタスクバーの再起動を認識して、タスクトレイへのアイコン再登録を行う技を説明している書籍、webなどご存じの方ひとつ、ご教授願いたいのですが。

    以下のようにウィンドウメッセージを登録して、登録したメッセージが
    飛んできたら、またタスクトレイに追加すればOKです。

    UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));

    C言語で書いたものですが、この辺をキーワードに検索してみれば
    いいのではないでしょうか。

    2007年5月22日 13:13

すべての返信

  • > VB6にてタスクバーの再起動を認識して、タスクトレイへのアイコン再登録を行う技を説明している書籍、webなどご存じの方ひとつ、ご教授願いたいのですが。

    以下のようにウィンドウメッセージを登録して、登録したメッセージが
    飛んできたら、またタスクトレイに追加すればOKです。

    UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));

    C言語で書いたものですが、この辺をキーワードに検索してみれば
    いいのではないでしょうか。

    2007年5月22日 13:13
  • おかげさまで解決することができました。社本 ワック さん助言ありがとうございました。

     

    頂きましたキーワードにて検索したところ、海外ではありますがそのままズバリ目的とするコードが掲載されているサイトを見つけることができました。

    とりあえず、参考元のURLを記載しておきますが、このURLが半永久的なものかはわかりません。

    こちら

    2007年5月23日 4:06