标签: system-tray

如何使用win32 API在系统托盘图标中显示文本?

尝试创建一个小型监视器应用程序,使用win32 API在C中的系统托盘中显示当前Internet使用率百分比.

还希望根据相对于月份剩余天数使用的颜色来使用彩色背景或彩色文本.

编辑:澄清我希望系统托盘图标是动态的.随着百分比的变化,我更新了系统托盘图标.寻找仅使用普通旧win32(即没有MFC或WTL)的解决方案.

c winapi system-tray

8
推荐指数
1
解决办法
6674
查看次数

当应用程序最小化到托盘时,C#MessageBox到前面

我有一些弹出消息框的代码:

MessageBox.Show(this,
                 "You have not inputted a username or password. Would you like to configure your settings now?",
                 "Settings Needed",
                 MessageBoxButtons.YesNo,
                 MessageBoxIcon.Question);
Run Code Online (Sandbox Code Playgroud)

我的问题是当弹出我的应用程序通常最小化到托盘.因此,消息框不会出现在前面,也不会出现在起始栏中.看到它的唯一方法是通过alt-tabbing.

以下代码可以最小化我的应用程序(父级)到托盘:

if (FormWindowState.Minimized == WindowState)
{                
      Hide();                
}
Run Code Online (Sandbox Code Playgroud)

.net c# system-tray messagebox winforms

8
推荐指数
3
解决办法
1万
查看次数

如何检测Windows系统托盘的更改?

我有一台运行我强制性企业通信系统(Lync和Outlook)的Windows 7 VM.我想做的是在这台Windows机器上运行一个进程监视系统托盘并向我的主机发送通知(Xubuntu 13.04),以便在收到电子邮件或IM时通知我(我已经尝试过无缝) RDP要做到这一点,但这是一个无效的解决方案).

我可以相对轻松地处理Linux或面向网络的任何东西,我不知道该怎么做是如何查询Windows系统托盘的状态(或附加事件监听器以进行状态更改).我对C++和Python很满意,但我会给出任何可行的解决方案.

详细的状态信息将是更可取的,但至少我需要能够检测托盘中图标数量的变化.

c++ python winapi system-tray

8
推荐指数
1
解决办法
1101
查看次数

Java SystemTray图标并不总是有效

我需要你的帮助:我正在研究一个小的Java应用程序(Java版本7),它必须最小化到系统托盘中.

我正在使用Class SystemTray,使用SystemTray.isSupported(),然后

SystemTray systemTray = SystemTray.getSystemTray();
ImageIcon icon = new javax.swing.ImageIcon(getClass().getResource("icon.png"));
Run Code Online (Sandbox Code Playgroud)

[...]

systemTray.add(trayIcon);
Run Code Online (Sandbox Code Playgroud)

(当然有弹出窗口)

在Windows上,它运行良好.在XFCE,Xubuntu,没问题,图标正在使用弹出窗口.但是在KDE和Gnome shell上......它不起作用.

KDE(4.14.1)

(Qt:4.8.6工具等离子:4.11.12)

SystemTray.isSupported()= true,当程序到达该行时:systemTray.add(trayIcon); 捕获异常:

托盘进程中出错:java.awt.AWTException:无法显示TrayIcon.

因此,图标是白色的,当用户点击它时不起作用,没有弹出窗口.

Gnome Shell(3.12.2)

SystemTray.isSupported()= true,图标位于底部的通知区域,但鼠标事件不起作用...

为了解决这些问题,我认为SWT可能是一个好主意.但是当我实现它(上一个版本)时,我收到了这个警告:

警告**:无法连接到辅助功能总线:无法连接到socket/tmp/[...]

它不起作用......编辑:不再了,我可以用外部类修复SWT的问题.警告不是由SWT引起的,而是环境系统引起的(我和终端中的其他应用程序有相同的警告).


那么现在,我该怎么办?我想用&检查环境系统,然后启用或禁用系统托盘,如果它是KDE或Gnome 3 ...但是这个解决方案不是很好,因为它是多平台的本地解决方案(在操作系统的功能中我的意思),而不是全局解决方案(适用于所有操作系统的一种方法)......System.getenv("XDG_CURRENT_DESKTOP")System.getenv("GDMSESSION")

那么,其他想法呢?我不知道......有没有办法将嵌入式JWindow定义到系统托盘中?

java kde system-tray gnome-shell

8
推荐指数
1
解决办法
1711
查看次数

单击按钮时应用程序最小化到系统托盘?

如何让我的应用程序最小化到WindowsXP/Vista中的系统托盘?

当鼠标悬停在图标上时,我也在寻找一种方法来显示消息.弹出气球可以有两条线吗?

c# system-tray tooltip minimize

7
推荐指数
1
解决办法
6113
查看次数

从命令选项卡应用程序切换器隐藏Java应用程序并在OSX中停靠

我有一个java应用程序,在OSX的顶部菜单栏中有一个托盘图标.当我最小化应用程序时,我希望它从扩展坞和命令选项卡应用程序切换器中消失,并且在托盘中.我见过其他OSX应用程序这样做,所以我相信它是可能的,但作为OSX的新手,我不知道如何实现它.

任何帮助,将不胜感激!

java macos system-tray dock

7
推荐指数
1
解决办法
1594
查看次数

确定托盘图标的位置

我的应用程序设计为位于系统托盘中,其行为类似于Windows 7中的网络/卷/电源/操作中心托盘项目(以及Windows Vista中的等效项目).也就是说,当单击托盘图标时它变为可见,并且当焦点丢失时变为隐藏.

该应用程序是用WPF编写的,但我目前正在使用WinForms的NotifyIcon作为托盘图标.

我想知道是否有人对如何确定应用程序托盘图标的位置(即屏幕坐标)有任何建议.默认的Windows Vista/7托盘项目有一些方法可以执行此操作,因为弹出窗口在相关托盘图标上方居中对齐.

在Vista中这不是一个问题:我将应用程序永久设置在右下角,这看起来很好(尽管没有任何逻辑包含任务栏没有放在屏幕底部的情况).但是,在Windows 7中,我的应用程序最终会遮挡新系统托盘弹出框,而不是像音量控件等一样悬停在它上面.

到目前为止,我在搜索中看到的最佳解决方案是处理NotifyIcon上的鼠标添加事件,并使用鼠标坐标来确定图标的位置.我认为如果除非有人有更好的想法,我最终会使用这种方法,尽管它并不理想,因为根据用户点击的图标内的位置,位置会略有不同.

wpf position system-tray notifyicon coordinates

7
推荐指数
2
解决办法
3109
查看次数

最大化系统托盘中的应用程序?

我写了一个小的WPF应用程序,当'关闭'最小化到系统托盘(客户要求).双击弹出它,或右键单击提供上下文菜单退出.

但是如果应用程序被最小化,并且用户导航到Start-> All Programs-> The Application,它将启动一个新实例.

如果用户执行此操作而不是启动新实例,我需要做什么(在C#中)才能让应用程序最大化正在运行的实例?

谢谢!

c# wpf system-tray application-singleton

7
推荐指数
1
解决办法
2436
查看次数

如何在没有窗口类的情况下编写QT系统托盘应用程序,并将其与另一个进程集成?

这是我的设置:

  • 一个持续运行并完成其工作的后台进程。

  • 启动上述进程并监视它的启动器,如果崩溃或终止则重新启动它。

我希望添加对启动程序进程的系统托盘访问权限(理想情况下,启动程序进程将包含系统托盘显示的代码),并启用从系统托盘上下文菜单触发基本选项(启动、停止等)。系统托盘不需要自己的窗口。只是一个无窗口系统托盘,带有包含 2-3 个选项的上下文菜单。

由于到目前为止编写的所有代码都是用 C/C++ 编写的,并且我需要它在 Windows 和 Linux 上运行,因此 QT 是显而易见的选择。我发现通过基本的 QT 启动器托盘显示非常令人沮丧。我见过的几乎每个示例都QSystemTrayIcon包含“主窗口”继承。

下面是我用来创建系统托盘的代码。

#include <QtWidgets/QApplication>
#include <QtCore/QDebug>
#include <QtGui/QIcon>
#include <QtWidgets/QSystemTrayIcon>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>


int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QPixmap oPixmap(32,32);
    //QMenu* menu1 = new QMenu(); // want to get a context menu from system tray
    oPixmap.load ("systemTrayIcon.png");

    QIcon oIcon( oPixmap );

    QSystemTrayIcon *trayIcon = new QSystemTrayIcon(oIcon);
    qDebug() << trayIcon->isSystemTrayAvailable();
    trayIcon->setContextMenu( menu1);
    trayIcon->setVisible(true);
    trayIcon->showMessage("Test Message", "Text", …
Run Code Online (Sandbox Code Playgroud)

c++ qt system-tray qt5

7
推荐指数
1
解决办法
8617
查看次数

左键单击托盘图标 (Python | Pystray)

我正在努力在按下 pystray 图标时创建一个 tkinter 窗口,这样我就可以在托盘中创建自己的菜单。但我不知道如果按下托盘图标如何获取。任何帮助表示赞赏!提前致谢!

python windows tkinter system-tray pystray

7
推荐指数
1
解决办法
1537
查看次数