プロが教えるわが家の防犯対策術!

Windowsのバルーンチップ(※)について質問です。
※.Netライブラリ:System.Windows.Forms.Notifyicon

バルーン内のアイコンをGoogleアップデータのようにオリジナルのものにしたいのですがその方法がわかりません。
MSDNにはWindows標準のアイコンを指定する方法しか載っておらず困っています。
どうすればGoogleアップデータのようにオリジナルのものにできるのでしょうか?

■開発環境
Microsoft Visual Basic 2005 Express Edition

■MSDN>System.Windows.Forms.Notifyicon
http://msdn2.microsoft.com/ja-jp/library/system. …

■バルーン事例
http://www.dworkers.com/dss/p/faqdoc/001/

A 回答 (1件)

ちょっと調べてみましたがNotifyIconオブジェクトを使う方法では出来そうもないので


Shell_NotifyIcon()を使ってみました。動作確認した環境はVista & VB2005です。
================================================================
Imports System.Runtime.InteropServices

Public Class Form1

  Private Const NIM_ADD As Integer = &H0
  Private Const NIF_ICON As Integer = &H2
  Private Const NIF_INFO As Integer = &H10
  Private Const NIIF_USER As Integer = &H4

  Private Structure NOTIFYICONDATA
    Public cbSize As Integer
    Public hWnd As IntPtr
    Public uId As Integer
    Public uFlags As Integer
    Public uCallBackMessage As Integer
    Public hIcon As IntPtr
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> Public szTip As String
    Public dwState As Integer
    Public dwStateMask As Integer
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public szInfo As String
    Public uTimeout As Integer
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=64)> Public szInfoTitle As String
    Public dwInfoFlags As Integer
    Public guidItem As Guid
    Public hBalloonIcon As IntPtr
  End Structure

  Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
    (ByVal dwMessage As Integer, ByRef pnid As NOTIFYICONDATA) As Boolean

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim IconData As New NOTIFYICONDATA

    With IconData
      .hWnd = Me.Handle
      .uId = 1
      .uFlags = NIF_ICON Or NIF_INFO
      .hIcon = Me.Icon.Handle
      .uTimeout = 3000
      .szInfoTitle = "Balloon Title" & vbNullChar
      .szInfo = "Balloon Message" & vbNullChar
      .dwInfoFlags = NIIF_USER
      .hIcon = Me.Icon.Handle
      .cbSize = Marshal.SizeOf(IconData)
    End With

    Shell_NotifyIcon(NIM_ADD, IconData)

  End Sub

End Class

※ソースのインデントに全角スペースを使用しています。
================================================================
XPのSP2以降だとdwInfoFlagsにNIIF_USERが指定できるようになるようで、指定すると
hIconに指定しているアイコンがバルーンに表示されるようです。
またVistaではNIIF_LARGE_ICONも指定できるようになっており、これを指定すると
hBalloonIconで指定したアイコンがバルーンに表示されるようです。

参考URL:http://msdn.microsoft.com/en-us/library/bb773352 …
    • good
    • 0
この回答へのお礼

おぉ、ありがとうございます!
NotifyIconじゃやっぱりできそうにないんですね。
うすうすそんな感じはしてました(苦笑

Shell_NotifyIconで試してみます。
サンプルソース等を見る限りやりたいことはできそうです!

お礼日時:2008/06/02 17:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!