Results 1 to 11 of 11

Thread: Balloon Tip C# to .NET

Threaded View

  1. #1

    Thread Starter
    PowerPoster
    Join Date
    Nov 2001
    Location
    Trying to reach and stay in the cloud
    Posts
    2,089

    Balloon Tip C# to .NET

    After much searching I have found the code to display balloon tips (XP style) But unforunately its in c# ...would some one convert it into VB.NET...Thanks
    I have attached it as well
    Code:
    public class NotifyIcon
    {
        [StructLayout(LayoutKind.Sequential)]
            public struct NotifyIconData
        {
            public System.UInt32 cbSize; // DWORD
            public System.IntPtr hWnd; // HWND
            public System.UInt32 uID; // UINT
            public NotifyFlags uFlags; // UINT
            public System.UInt32 uCallbackMessage; // UINT
            public System.IntPtr hIcon; // HICON
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst=128)]
            public System.String szTip; // char[128]
            public System.UInt32 dwState; // DWORD
            public System.UInt32 dwStateMask; // DWORD
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
            public System.String szInfo; // char[256]
            public System.UInt32 uTimeoutOrVersion; // UINT
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst=64)]
            public System.String szInfoTitle; // char[64]
            public System.UInt32 dwInfoFlags; // DWORD
            //GUID guidItem; > IE 6
        }
    
        public enum NotifyCommand {Add = 0, Modify = 1, Delete = 2, SetFocus = 3, 
                                   SetVersion = 4}
        public enum NotifyFlags {Message = 1, Icon = 2, Tip = 4, State = 8, Info = 16, 
                                 Guid = 32}
    
        [DllImport("shell32.Dll")]
        public static extern System.Int32 Shell_NotifyIcon(NotifyCommand cmd, 
                                                           ref NotifyIconData data);
    
        [DllImport("Kernel32.Dll")]
        public static extern System.UInt32 GetCurrentThreadId();
    
        public delegate System.Int32 EnumThreadWndProc(System.IntPtr hWnd, 
                                                       System.UInt32 lParam);
    
        [DllImport("user32.Dll")]
        public static extern System.Int32 EnumThreadWindows(System.UInt32 threadId, 
                                            EnumThreadWndProc callback, 
                                            System.UInt32 param);
    
        [DllImport("user32.Dll")]
        public static extern System.Int32 GetClassName(System.IntPtr hWnd, 
                                                      System.Text.StringBuilder className,
                                                      System.Int32 maxCount);
    
        private System.IntPtr m_notifyWindow;
        private bool m_foundNotifyWindow;
    
        // Win32 Callback Function
        private System.Int32 FindNotifyWindowCallback(System.IntPtr hWnd, 
                                                      System.UInt32 lParam)
        {
            System.Text.StringBuilder buffer = new System.Text.StringBuilder(256);
            GetClassName(hWnd, buffer, buffer.Capacity);
    
    		// but what if this changes?  - anybody got a better idea?
            if(buffer.ToString() == "WindowsForms10.Window.0.app1") 
            {
                m_notifyWindow = hWnd;
                m_foundNotifyWindow = true;
                return 0; // stop searching
            }
            return 1;
        }
    
        public void ShowBalloon(uint iconId, string title, string text, uint timeout)
        {
            // find notify window
            uint threadId = GetCurrentThreadId();
            EnumThreadWndProc cb = new EnumThreadWndProc(FindNotifyWindowCallback);
            m_foundNotifyWindow = false;
            EnumThreadWindows(threadId, cb, 0);
            if(m_foundNotifyWindow)
            {
                // show the balloon
                NotifyIconData data = new NotifyIconData();
                data.cbSize = (System.UInt32)
                              System.Runtime.InteropServices.Marshal.SizeOf(
                                                                    typeof(NotifyIconData));
                data.hWnd = m_notifyWindow;
                data.uID = iconId;
                data.uFlags = NotifyFlags.Info;
                data.uTimeoutOrVersion = 15000;
                data.szInfo = text;
                data.szInfoTitle = title;
                Shell_NotifyIcon(NotifyCommand.Modify, ref data);
            }
        }
    }
    Here is the code that shows the usage of the class.
    
    private void OnShowBalloon(object sender, System.EventArgs e)
    {
        NotifyBalloonDemo.NotifyIcon notifyIcon = new NotifyBalloonDemo.NotifyIcon();
        notifyIcon.ShowBalloon(1, "My Title", "My Text", 15000);
    }
    Attached Files Attached Files

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width