タスクトレーに常駐、イベントでポップアップ表示するには?


じんくん  2004-02-17 15:00:51  No: 111838  IP: [192.*.*.*]

いつもいつも、勉強させて頂いております。

今、簡単なアプリケーションを作ったのですが、このEXEファイルを
常駐アプリとしたいのです。
普段はタスクトレー(アイコン表示)で、見たり、操作したい時や、
イベントが起きた時に、このEXEファイルを表示させたいと思います。

普通に、最小化すると、タスクバーの方に収納されてしまいますので…。

常駐化そのものの仕方が、よく分かりません。

設定(プロパティ?)か、簡単なソースコードを書いていただけると幸いです。

環境:VB6,OS:Win2000Pro

よろしくお願い致します。

編集 削除
魔界の仮面弁士  2004-02-17 15:25:24  No: 111839  IP: [192.*.*.*]

VB6のCD-ROMに、タスクトレイにアイコンを配置するための
ActiveXコントロールのサンプルvbpファイルがありますので、
それを参考にしてみてください。

コントロールではなく、クラスモジュール形式の方が良ければ、
ももたろさんの CTray.cls あたりを利用させてもらっては如何でしょう。
http://www.momo-lab.net/inu/ctray.html

編集 削除
じんくん  2004-02-17 15:47:24  No: 111840  IP: [192.*.*.*]

魔界の仮面弁士殿>早速の回答、ありがとうございます。

VB6CD−ROMのサンプル及び、ももたろさんCTray.clsを
参考にしてみます。
CTray.clsは自由に使って良いみたいなので助かります。

うまく出来たら、[解決]とします。

ありがとうございした。

編集 削除
じんくん  2004-02-17 18:43:09  No: 111841  IP: [192.*.*.*]

上記前者(VB6CD−ROMサンプル)と後者の(CTray)について、
あれから、いろいろ試しましたが、
まず、後者の方ですが、アイコンがタスクトレイに表示、削除というのは
分かりましたが、これがイベントによって、EXEファイルの画面がPC上に
表示したりというのは可能なのでしょうか?
(よくある、メール受信や、メッセージソフトで、相手のメッセージを
受けると、ポップアップ表示したりするソフトと同じく作りたいです。
普段は、タスクトレイで常駐するソフトを。)

前者の方ですが、対象のサンプルソースがどのソース名か良くわからず、
ActiveXコントロールのサンプルvbpが探し出せませんでした。
このソースのファイル名、もしくはソースを書いていただければ幸いです。

是非、引き続きご教授願います。

編集 削除
魔界の仮面弁士  2004-02-17 21:05:49  No: 111842  IP: [192.*.*.*]

> これがイベントによって、EXEファイルの画面がPC上に
> 表示したりというのは可能なのでしょうか?

普段はフォームを非表示にしておき、何らかのイベントに応じて、
そのフォームを表示する(FormをShowさせる)ようにすればOKです。

例えば…定期的に(例えば、毎日正午に)表示させたいような場合は、
TimerコントロールのTimerイベントを利用すれば良いでしょうし、
タスクトレイ上のアイコンを操作された時に表示したいのであれば、
あのCTrayクラスのイベント(Click/DblClick/MouseDown/MouseMove/MouseUpイベント)を
使うことが出来ますよね。

# CTrayクラスのイベント処理の手順に憑いては、ダウンロードページに
# 書かれていた[使用例]や、付属のサンプルをご覧になって下さい。


> 対象のサンプルソースがどのソース名か良くわからず
下記一覧の、「SYSTRAY.VBP」がそれにあたります。
http://support.microsoft.com/default.aspx?scid=kb;EN-US;191546

エディション等により、ディスク構成が異なる(含まれていない事もある)ので、
具体的にどのディスクに含まれているかは示せませんが、指しあたって、
    [Visual Basicをインストールしたフォルダ]、
    [Visual Basic/Visual Studioの格納されいているCD-ROM]
    [MSDNライブラリのCD-ROM]
などの中から探してみてください。

編集 削除
じんくん  2004-02-19 10:13:41  No: 111843  IP: [192.*.*.*]

魔界の仮面弁士殿>連絡が遅くなり、申し訳ありません。

FormをHideすれば良いことを知りません(気づきません)でした。
見えないけど、起動してるってことですね。
それで、Showすれば良いと。

それで、やってみたのです。ところが…。

処理的には良さそうなのですが、タスクトレイに表示するアイコンが、
にこチャンマーク?(標準の)は表示したのですが、
これを任意に作ったアイコンを表示するには、
どこを書き換えれば良いのでしょうか?(CTrayサンプルソース中。)

多分、初歩的な設定だと思いますが、分かりません。
LoadResPictureにアイコンファイルをフルパス指定だと、
実行時エラー’326’識別子…リソースが見つかりません。
となってしまいます。

何度もの質問で申し訳ありません。
また、CTrayの処理となると、この場で聞くのは場違いかもしれません。
宜しければ、ご教授願います。

よろしくお願いします。

編集 削除
魔界の仮面弁士  2004-02-19 10:32:12  No: 111844  IP: [192.*.*.*]

> また、CTrayの処理となると、この場で聞くのは場違いかもしれません。
本来は、管理者(ももたろさん)のサイトで聞くべきでしょうね。(^_^;)
あそこには、サポート掲示板もあるわけですし。
(まぁ、彼も最近は忙しいみたいなので、他の方が回答される事も多いのですが)


> これを任意に作ったアイコンを表示するには、
そのアイコンを、フォームのIconプロパティ、Imageコントロール、PictureBoxコントロール、ImageListコントロール、リソース、HDD上の画像ファイル……などとして保持しておき、それを指定してください。

画像を利用する方法については、MSDN ライブラリの

[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
  └[Visual Basic の使用方法]
    └[プログラミング ガイド]
      └[Visual Basic を使ってできること]
        └[テキストおよびグラフィックスの操作]
          └[グラフィカル コントロールの使い方]
            └[アプリケーションへのピクチャの追加]

や、その関連ページに説明がありますので、そちらを参考にして下さい。


> LoadResPictureにアイコンファイルをフルパス指定だと、
LoadResPictureは、exe中のリソースデータから取得する命令です。
(VB6の場合は、アドインの[リソース エディタ]でリソースを編集できます)
ファイルから取得する場合は、LoadResPictureではなく、LoadPictureを使ってください。

編集 削除
じんくん  2004-02-19 15:47:36  No: 111845  IP: [192.*.*.*]

魔界の仮面弁士殿>何度も何度も、ありがとうございます。

無事に、タスクトレイのアイコンを任意のアイコンに表示出来ました。
(LoadPictureを使用しました。)

もう1つ、欲張って聞いてもよろしいでしょうか?

これは、CTrayに限らないと思いますので、こちらに質問させて頂きます。
タスクトレイに表示あれたアイコンをダブルクリックでFormを表示
させたりは出来たのですが、そのタスクトレイのアイコン上で、
右クリック時に、ポップアップメニューを表示したいと思っています。

PopupMenuメソッドの使い方が分かりません。(引数3つとも)
(あ、これは、CTrayのメソッド使用した場合ですが…。)
特に引数の「表示するメニュー」とは、どこで設定するのでしょうか?
例えば、アイコンを右クリックした際、ポップアップメニューに、
[表示]→Form1.show
[設定]→Form2.show
[終了]→unload  Form1
としたいと思います。

サンプルソースを書いていただけると、大変助かります。
初心者すぎて、申し訳ありませんが、是非、ご教授願います。

編集 削除
魔界の仮面弁士  2004-02-19 16:21:23  No: 111846  IP: [192.*.*.*]

> もう1つ、欲張って聞いてもよろしいでしょうか?

その前に、ヘルプを読んでみてくださいな。

[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
  └[Visual Basic の使用方法]
    └[プログラミング ガイド]
      ├[Visual Basic の基本]
      │└[フォーム、コントロール、およびメニュー]
      │  └[メニューの基礎]
      └[Visual Basic を使ってできること]
        └[ユーザー インターフェイスの作成]
          └[アプリケーションでのメニューの利用]

編集 削除
じんくん  2004-02-19 18:50:13  No: 111847  IP: [192.*.*.*]

魔界の仮面弁士殿>度々すみません。
ヘルプを読みました。
メニューエディタで、

表示(&O)
設定(&E)
・・・・
終了(&X)

と設定したのですが、
・・・・(境界線)が、コントロールがありませんと言われて、
設定できませんでした。

仕方なく、境界線を無くして、メニュー3個にしましたが、
Formの上段に横型に表示されます。

私の理想は、この上段のメニューは必要無く、
タスクトレイのアイコンを右クリックした時に、
縦長にポップアップメニューを出したいと思います。

表示(&O)
設定(&E)
−−−−  (境界線)
終了(&X)

是非、引き続きご教授願います。

編集 削除
魔界の仮面弁士  2004-02-19 19:37:07  No: 111848  IP: [192.*.*.*]

> ・・・・(境界線)が、コントロールがありませんと言われて、
> 設定できませんでした。

[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
  └[Visual Basic の使用方法]
    └[プログラミング ガイド]
      └[Visual Basic を使ってできること]
        └[ユーザー インターフェイスの作成]
          └[アプリケーションでのメニューの利用]
            └[メニュー エディタでのメニューの作成]

上記ページの真ん中あたりに書かれている
   『 メニュー エディタで区分線を作成するには 』
を参照してみてください。


> 横型に表示されます

上記ページの上の方に書かれている
  『 メニュー エディタのリスト ボックスの使い方 』
を参照してみてください。


> この上段のメニューは必要無く、

前回の回答で紹介した [アプリケーションでのメニューの利用] のページにある
『メニュー バーに表示されないメニュー項目を作成するには、〜〜』の文を見てください。

編集 削除
じんくん  2004-02-20 15:45:38  No: 111849  IP: [192.*.*.*]

魔界の仮面弁士殿>おかげさまで、下記まで出来るようになりました。

1.Formを非表示で、タスクトレイにアイコン表示。
2.イベント時に、Formを表示。
3.アイコン右クリックでメニューの表示、選択。(境界線付)

以上です。

やはり、調べながら、考えて作るのが、よさそうですね。

さらに、進めたいのが、3項アイコンの右クリックポップアップメニューですが、
アクセスキー(&E)等指定しても、メニュー表示後、キー操作が出来ません。
登録はメニューエディタで、(&E)等指定しただけです。
ショートカットとかは指定していません。なぜ、キーが受けつかないのでしょうか?

また、右クリックでポップアップメニューを表示した時に、キャンセルしたい時、
他のアプリは、どこか適当なところにマウスを動かすと、メニューが消えるのが
ありますが、あれはどうするのでしょうか?(メニュー項目にキャンセル無し)
今のままだと、何か選択しないとメニューは消えません。
下記が右クリック時にメニューを表示する処理。消す(キャンセル)処理が
必要なのでしょうか?

Private Sub mTray1_MouseDown(ByVal Button As Integer)
    Select Case Button
        Case vbRightButton
            PopupMenu mnuMenu
    End Select
End Sub


更に、CTrayが関係しているのかわかりませんが、アプリのアイコンが、
にこちゃんマークになってしまいます。
各Formのアイコン設定や、プロジェクトのプロパティ「実行可能ファイルの作成」
での表示アイコンは、私が指定したアイコンになっているにも関わらず、
実行ファイルを作成すると、必ずにこちゃんマークになってしまいます。
関係していると思われる行は、下記しか思いあたりません。なぜなんでしょうか?

'表示するアイコン
Private mIcon(1) As StdPicture      ←上段/下段どちらか。
'Private mIcon(1) As IPictureDisp   ←      (どちらも駄目)

Private Sub Form_Load()
    'アイコンを取得

    Set mIcon(0) = LoadPicture("任意アイコン1.ico")  ←ここは私指定のアイコン
    Set mIcon(1) = LoadPicture("任意アイコン2.ico")  ←ここは私指定のアイコン
−以下省略−

以上(以下)、3件、引き続き教えて下さい。(長文になりすみません。)
1.ポップアップメニューで、アクセスキー(&E)等、キー操作が出来ない件。
2.ポップアップメニューをキャンセルする方法。
3.実行ファイルのアイコンが「にこちゃんマーク」になってしまうのを変更する方法。

よろしくお願いします。

編集 削除
じんくん  2004-02-24 19:00:24  No: 111850  IP: [192.*.*.*]

度々の質問で申し訳ありません。
やはり、上記1〜3が、どうしても解決出来ません。

1項、2項は出来なくてもかまいませんが、特に3項は、
アプリの大事な顔「アイコン」でもありますので、
どうにか、にこちゃんマークから、任意指定のアイコンに
設定したいと思います。
(3項は、ももたろさんのHP掲示板にも記載したが、いまだレス無し。)

良い方法あれば教えて下さい。

よろしくお願いします。

編集 削除
SKY  2004-02-25 08:50:02  No: 111851  IP: [192.*.*.*]

>(3項は、ももたろさんのHP掲示板にも記載したが、いまだレス無し。)
それってマルチポストにならない?

編集 削除