[ファイル]-[新規作成]-[サービス アプリケーション] を使って
サービスを作り始めました。タスクトレイにアイコンを表示させたくて
Shell_NotifyIcon を使って表示させようとしたのですが、戻り値=0
が返ってきて表示されません。
タスクトレイへのアイコン表示は、下記のURLのソースを参考にしました。
http://www.geocities.jp/fjtkt/problems/2004_0029.html
FillChar(FIconData, SizeOf(FIconData), 0);
FIconData.cbSize := SizeOf(FIconData);
FIconData.Wnd := FWndHandle;
FIconData.uID := 1;
FIconData.uCallbackMessage := TRAY_CALLBACK;
FIconData.hIcon := Icon;
FIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
strPLCopy(FIconData.szTip, szTip, SizeOf(FIconData.szTip) - 1);
FInTray := Shell_NotifyIcon(NIM_ADD, @FIconData);
試しに、メインフォームを持つ普通のテストアプリを作って、
同じルーチンを走らせてみたところ、タスクトレイにアイコンが
表示されました。
このルーチンの中では
FWndHandle := AllocateHWnd(SysTrayIconMsgHandler);
とやってウインドウハンドルを作っているので、メインフォームがない
サービスでも動きそうなのですが、サービスアプリケーションで
タスクトレイにアイコンを表示させるには、どうしたら良いでしょうか?
色々試したり、調べてみましたが、
サービスアプリケーションがタスクトレイにアイコンを
表示することはできなさそうなので、
サービスアプリケーション本体と、タスクトレイに
アイコンを表示するコントローラを別のプログラムとして
作成することにしました。
ツイート | ![]() |