如何让我的应用程序最小化到WindowsXP/Vista中的系统托盘?
当鼠标悬停在图标上时,我也在寻找一种方法来显示消息.弹出气球可以有两条线吗?
我的应用程序设计为位于系统托盘中,其行为类似于Windows 7中的网络/卷/电源/操作中心托盘项目(以及Windows Vista中的等效项目).也就是说,当单击托盘图标时它变为可见,并且当焦点丢失时变为隐藏.
该应用程序是用WPF编写的,但我目前正在使用WinForms的NotifyIcon作为托盘图标.
我想知道是否有人对如何确定应用程序托盘图标的位置(即屏幕坐标)有任何建议.默认的Windows Vista/7托盘项目有一些方法可以执行此操作,因为弹出窗口在相关托盘图标上方居中对齐.
在Vista中这不是一个问题:我将应用程序永久设置在右下角,这看起来很好(尽管没有任何逻辑包含任务栏没有放在屏幕底部的情况).但是,在Windows 7中,我的应用程序最终会遮挡新系统托盘弹出框,而不是像音量控件等一样悬停在它上面.
到目前为止,我在搜索中看到的最佳解决方案是处理NotifyIcon上的鼠标添加事件,并使用鼠标坐标来确定图标的位置.我认为如果除非有人有更好的想法,我最终会使用这种方法,尽管它并不理想,因为根据用户点击的图标内的位置,位置会略有不同.
我正在开发一个简单的Java swing应用程序,它在创建时会在系统托盘中添加一个图标.我要做的是检测用户单击此图标的时间(无论是通过左键单击还是右键单击),没有弹出菜单,我只想在单击图标时恢复应用程序.
这是我正在使用的代码:
SystemTray tray = SystemTray.getSystemTray();
Image icon = toolkit.getImage("icon.png");
ActionListener listener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("click detected");
}
};
TrayIcon trayIcon = new TrayIcon(icon, "Test Program", null);
trayIcon.addActionListener(listener);
tray.add(trayIcon);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此程序时会发生什么,单击(左或右)没有任何效果,但是当我双击时,它会在控制台中显示消息"click detected".
我还可以检测到单次点击该怎么办?我需要使用MouseListener吗?(我听说MouseListeners会导致问题,ActionListeners会更好)
我的java应用程序使用看起来或多或少的代码在系统托盘上显示其图标:
Toolkit mainToolkit = Toolkit.getDefaultToolkit();
SystemTray mainTray = SystemTray.getSystemTray();
Image trayIconImage = mainToolkit.createImage(getClass().getResource(resourcePath));
TrayIcon mainTrayIcon = new TrayIcon(trayIconImage);
mainTray.add(mainTrayIcon);
Run Code Online (Sandbox Code Playgroud)
有时我会改变这样的图标:
Image newImage = mainToolkit.createImage(getClass().getResource(otherPath));
mainTrayIcon.setImage(newImage);
Run Code Online (Sandbox Code Playgroud)
我的应用程序有时需要显示一些通知(使用来自托盘图标的气球消息):
mainTrayIcon.displayMessage(someCaption, msg, TrayIcon.MessageType.NONE);
Run Code Online (Sandbox Code Playgroud)
所有这些代码实际上都是以某种方式简化,但很好地掌握了这个功能.
所以Windows 7上的一切都很好.但事实证明,在Windows 10上,它的显示方式不同.在通知上,左侧显示一个图标.它通常是我的应用程序的当前托盘图标,但有时它只是空白:
在上面的红色圆圈(在通知上)是有时出现的空白图标,而不是我的应用程序的图标(在系统的托盘上的红色小圈中).我不知道它为什么会发生.我所知道的只有当应用程序的托盘图标和通知消息在第一次通知(总是正确显示其图标)之前发生变化时才会发生这种情况.如果显示通知,则手动关闭淡出/然后应用程序的托盘图标和通知更改,下一个通知(使用刚设置的新消息)将正确显示应用程序的图标.
这是一个非常愚蠢的问题,但是这里有:
有没有办法(在.net中)强制Windows显示您的系统托盘图标而不是隐藏它?我不想一直这样做,但至少我的应用程序第一次运行时,我希望它在系统托盘中可见.
我有一个C++程序(使用Qt),我想用进度条创建一个托盘通知.我认为Qt可以显示文本通知,但不会显示进度条 - 这是特定于KDE的.我找不到在C++中管理KDE托盘通知的任何示例.有什么建议?
PS这就是我的意思:

在Windows 7中,我有一个AutoHotKey脚本,可以自动右键单击托盘图标.
#Include %A_Scriptdir%\TrayIcon.ahk
TrayIcon_Button("CCC.exe", "R")
Run Code Online (Sandbox Code Playgroud)
其中使用了FanaticGuru的帖子中的TrayIcon.ahk库.
这在Windows 7上运行得很好,但不再适用于Windows 10.
有没有办法在Windows 10上的AutoHotKey脚本中右键单击TrayIcon?
这是库中的TrayIcon_Button函数.我没有张贴整个图书馆,因为它相当长.
; ----------------------------------------------------------------------------------------------------------------------
; Function .....: TrayIcon_Button
; Description ..: Simulate mouse button click on a tray icon.
; Parameters ...: sExeName - Executable Process Name of tray icon.
; ..............: sButton - Mouse button to simulate (L, M, R).
; ..............: bDouble - True to double click, false to single click.
; ..............: index - Index of tray icon to click if more than one …Run Code Online (Sandbox Code Playgroud) 所有这些都来自我目前正在开发的一个应用程序,我们称这个应用程序为SampleApp
如何从我的手机托盘中获取这些通知的列表
是的,我知道我可以通过此代码获取通知
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().getPendingNotificationRequests { (requests) in
print("here are the iOS 10 notifs \(requests)")
}
} else {
let requests = (UIApplication.shared.scheduledLocalNotifications ?? [])
print("here are the NON iOS 10 notifs \(requests)")
}
Run Code Online (Sandbox Code Playgroud)
但此代码的问题在于我只能获取我离线创建的通知,而不能获取来自Apple 推送通知服务器 (APNS) 的通知
通过离线创建我的意思是,scheduled UILocalNotifications,并且由于Push Notifications不是UILocalNotifications 我不知道该怎么做
你可能会问的一些问题
这些通知是来自我的应用程序吗?
我使用的didReceiveRemoteNotification上AppDelegate?
我的远程通知是否有效/来自 APNS
我注册远程通知的代码是什么样的?
if #available(iOS 10.0, *) {
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] …Run Code Online (Sandbox Code Playgroud)我是颤振新手,我正在努力创建系统托盘实现。
我需要的是:
有人可以指导我吗?:D
PS:我的应用程序将在 Windows、Linux 和 MacOS 上运行。
谢谢大家!
system-tray ×10
java ×2
trayicon ×2
windows-10 ×2
.net ×1
.net-2.0 ×1
autohotkey ×1
c# ×1
c++ ×1
coordinates ×1
flutter ×1
kde ×1
minimize ×1
notifyicon ×1
position ×1
qt ×1
swift ×1
swing ×1
tooltip ×1
windows ×1
wpf ×1