[StructLayout(LayoutKind.Sequential)] struct NOTIFYICONIDENTIFIER { public uint cbSize; public IntPtr hWnd; public uint uID; public Guid guidItem; // Usually Guid.Empty for simple cases } [DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)] static extern void Shell_NotifyIconGetRect(ref NOTIFYICONIDENTIFIER identifier, out RECT iconRect);
If you have ever built a Windows application that uses a system tray icon (Notify Icon), you are familiar with Shell_NotifyIcon . It is the workhorse for adding, modifying, or deleting icons in the notification area (systray). shell_notifyicongetrect
Beyond the Balloon: Using Shell_NotifyIconGetRect to Find Your Notify Icon’s Exact Screen Location [StructLayout(LayoutKind
However, for years, there was a glaring gap in the API: public IntPtr hWnd