我需要编写一个程序,当最小化时,它存在于系统托盘中,我将使用Java 6的SystemTray API来实现这一点.
当用户按下某个热键时,如何让该应用程序出现?
例如,应用程序正在运行但已最小化.当用户按下CTRL-SHIFT-Y或其他东西(或者像Google桌面的搜索,CTRL两次)并且应用程序最大化时.
编辑:我知道如何将Java窗口带到前台.我更具体地询问如何使正在运行的Java应用程序监听热键.
是否有简单的代码来显示C++的气球通知?
我正在使用Visual Studio 2010.
我有一个用C++编写的基本窗口.我需要做的是每当我点击最小化按钮时,窗口将被放置在系统托盘中,每当我双击图标它将恢复...
MSDN关于通知和通知区域的文档非常明确,要求在通知区域中显示一个图标以显示通知:
要显示通知,您必须在通知区域中有一个图标.在某些情况下,例如Microsoft Communicator或电池级别,该图标已经存在.但是,在许多其他情况下,只有在显示通知所需的时间内,您才会向通知区域添加图标.
因为我不希望任何图标添加到通知区域,我想也许是"重用"现有的最有可能是那里的典型桌面.一个好的候选者可能是系统时钟.
我的问题是:
我想创建一个JFrame实例,然后点击它minimize button,我想隐藏它System Tray通常taskbar是windows的.
我会知道通过使用SystemTray类中的java.awt包我可以这样做,但我既没有得到它的任何教程也没有任何工作程序示例.
我在这里问过这个问题,要么获得SystemTray类的教程网站的链接,要么是否有人知道如何捕获窗口最小化事件,这是一个工作示例.
我有一个有系统托盘图标的应用程序.在卸载时,如果它正在运行,我将终止该进程.因此,由于没有优雅地停止应用程序,图标仍保留在系统托盘中,只有当我们将鼠标悬停在系统托盘上时才会删除.我编写了一个代码,可以沿着托盘运行光标并将光标放回其初始位置.这就是我所做的:
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string className, string windowName);
[DllImport("user32.dll")]
static extern IntPtr FindWindowEx(IntPtr parent, IntPtr child, string className, string windowName);
[DllImport("user32.dll")]
static extern bool GetWindowRect(HandleRef handle, out RECT rct);
[StructLayout(LayoutKind.Sequential)]
struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
void RefreshTray()
{
IntPtr taskbar_Handle = FindWindow("Shell_Traywnd", "");
IntPtr tray_Handle = FindWindowEx(taskbar_Handle, IntPtr.Zero, "TrayNotifyWnd", "");
RECT rct;
if (!(GetWindowRect(new HandleRef(null, tray_Handle), out rct)))
{
}
System.Drawing.Point init = Control.MousePosition;
for (int i = …Run Code Online (Sandbox Code Playgroud) 我有一个小的C#(.NET 4.0)控制台应用程序,我希望用户能够通过右键单击系统托盘图标时显示菜单来进行交互.我可以在没有任何问题的情况下为托盘添加图标,但我无法显示菜单.我正在使用以下代码:
NotifyIcon trayIcon = new NotifyIcon();
trayIcon.Text = "TestApp";
trayIcon.Icon = new Icon(SystemIcons.Application, 40, 40);
ContextMenu trayMenu = new ContextMenu();
trayMenu.MenuItems.Add("Blah", item1_Click);
trayMenu.MenuItems.Add("Blah2", item1_Click);
trayMenu.MenuItems.Add("Blah3", item1_Click);
trayIcon.ContextMenu = trayMenu;
trayIcon.Visible = true;
Run Code Online (Sandbox Code Playgroud)
...将图标放入托盘中.但是,右键单击该图标不会执行任何操作.我尝试了各种排列MenuItems.Add,但没有任何东西会让菜单出现.我确定我错过了一些简单的东西 - 任何想法是什么?
OS X要求应用程序使用19x19px单色PDF作为托盘图标,以便根据用户的主题调整系统默认颜色.
使用模板图像来表示额外的菜单栏.在常规系统首选项中,用户可以将菜单栏(和Dock)更改为暗色外观.[...]
可以使用QSystemTrayIcon完成吗?
据我所知,底层QIcon类不支持PDF.
目前我正在使用黑色SVG,它以纯黑色显示,造成非常不自然的外观.
默认主题:
黑暗主题:
我在我的 java 应用程序中使用了系统托盘。我想消失 GUI并在后台运行应用程序,但是当用户单击JFrame 的关闭按钮时,系统托盘必须保持可用。
我在系统托盘中有一个带有图标的应用程序。
当您右键单击托盘图标时,它会显示一个菜单,用户可以在其中选择操作。
我发现如果我有一个全屏应用程序正在运行,然后使用 alt + esc 进入托盘图标。然后,当我右键单击该图标时,菜单将显示在 Windows 任务栏的后面(下方)。
在某些情况下,菜单太低以至于无法在上下文菜单中选择最低的菜单项。
当它不是前面的全屏应用程序时,菜单会正确显示在任务栏的顶部。我还在 Windows 7 上测试过,它在全屏应用程序中运行良好。
我尝试过不同的全屏应用程序,如 Internet Explorer、Notepad++,但同样的事情发生了。
我还可以看到还有很多其他应用程序,比如“Skype for business”和“Radeon Settings”,它们都在做同样的事情。
Skype for business 在任务栏后面有菜单:
对于内置的 Windows 10 应用程序,这效果更好。
系统托盘的 Windows 时间和语言部分将使用新的 Windows 10 布局(黑色)在任务栏顶部显示菜单
Windows 声音和网络图标将隐藏任务栏,同时显示常规右键单击菜单,但保留开始菜单打开。(不过这看起来有点奇怪)
我已经尝试过 Windows SDK 中的 NotificationIcon 示例,但这也无法正常工作。
所以问题是什么是为 Windows 10 编程显示托盘上下文菜单的正确方法?
我的代码看起来像这样。
case WM_RBUTTONDOWN:
{
SetForegroundWindow();
CMenu menu;
menu.LoadMenu(ID_TRAY_MENU_SHOW_APP);
CMenu* pPopup = menu.GetSubMenu ( 0 ) ;
GetCursorPos ( &pt ) ;
pPopup->TrackPopupMenu ( TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x, pt.y, this );
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助