要使.NET应用程序在Window的系统托盘中显示为图标,需要做些什么?
你如何处理所述图标上的鼠标按钮点击?
我正在尝试使用Java添加一个图标并显示到系统托盘中.但是,图标总是太小,或者在区域中被切断.它是左起第二个你无法分辨的情况.
我在这做错了什么?如何让这个图标完全显示?系统托盘使用的标准图标大小是多少?
编辑:我正在使用AWT SystemTray和TrayIcon
我知道如何在Windows通知区域(系统托盘)中放置一个图标.
有图标动画的最佳方法是什么?你可以使用动画gif,还是你必须依赖计时器?
我正在使用C#和WPF,但WinForms也接受了.
我正在使用Java开发桌面应用程序.我想在系统托盘上放置一个图标(带有上下文菜单)(在Mac OS中称为菜单附加功能).Java 6支持在Windows和Linux中执行此操作,但它在Mac Os中不起作用.
我已经看到一些应用程序在所有三个操作系统(例如DropBox)中执行我想要的操作,但我不知道它们是否是用Java编写的.
我怎样才能做到这一点?
如果在Java中不可能,是否还有其他跨平台语言可以做到这一点?
谢谢.
我希望将我的一个C#应用程序移到Mono上,以便在Mac上使用.目前,我正在试图弄清楚如何使它成为一种"背景"过程,但仍然具有GUI元素的能力(我相信这个规则mono-service).
最终目标是:
简而言之,只需考虑Dropbox应用程序的工作原理.我想要那种类型的GUI,但使用Mono/Mac应用程序.
我相信这通常是通过LSUIElement = 1在应用程序包的Info.plist中设置来完成的.但是,我没有运气.我认为它可能与mono从应用程序包中启动我的应用程序的命令有关.一旦应用程序启动,mono我假设它不会级联到进一步的应用程序启动.不过,这是一个纯粹的猜测.
有没有人对此有任何想法?谢谢.
这是我在node.js应用程序中需要的:
这是我发现的:
你有什么建议?我需要一些可靠,易于安装和尽可能跨系统的东西.
//编辑
自11月6日起,Appjs拥有基本的托盘图标支持.
我希望我的GTK应用程序在系统托盘中有一个状态图标,我使用StatusIcon可以很好地工作,但是这已被弃用:
gtk_status_icon_new自版本3.14起已被弃用,不应在新编写的代码中使用.
使用通知
文档说"使用通知",但我不知道这实际意味着什么.我将此解释为"使用桌面通知",但据我所知,这是一个完全不同的目的.我想要一个始终可见的系统托盘图标,而不是临时弹出通知.尽管如此,我找不到任何其他似乎是"通知"的含义.
是否存在GtkStatusIcon的新替代品,它在系统托盘中提供了一个图标,支持接收鼠标点击/滚动信号并显示弹出菜单?
我的程序在系统托盘中放置一个图标,因为用户可以将其最小化.但是,如果应用程序崩溃,或者我阻止应用程序在VS中运行,它会在其中留下图标,直到我用鼠标悬停它.有时我会向下看,那里会有10个左右的图标.
我可以确保图标消失吗?
嗨在我的c#应用程序中,当表单关闭时,我正在尝试最小化应用程序到系统托盘.这是我试过的代码.
public void MinimizeToTray()
{
try
{
notifyIcon1.BalloonTipTitle = "Sample text";
notifyIcon1.BalloonTipText = "Form is minimized";
if (FormWindowState.Minimized == this.WindowState)
{
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(500);
this.Hide();
}
else if (FormWindowState.Normal == this.WindowState)
{
notifyIcon1.Visible = false;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在调用形成结束事件的方法.但问题是它不能最小化托盘.它只是关闭表格.
我试图在系统托盘中显示2-3个可更新的字符,而不是显示.ico文件 - 类似于CoreTemp在系统中显示温度时的操作尝试:
我在WinForms应用程序中使用NotifyIcon以及以下代码:
Font fontToUse = new Font("Microsoft Sans Serif", 8, FontStyle.Regular, GraphicsUnit.Pixel);
Brush brushToUse = new SolidBrush(Color.White);
Bitmap bitmapText = new Bitmap(16, 16);
Graphics g = Drawing.Graphics.FromImage(bitmapText);
IntPtr hIcon;
public void CreateTextIcon(string str)
{
g.Clear(Color.Transparent);
g.DrawString(str, fontToUse, brushToUse, -2, 5);
hIcon = (bitmapText.GetHicon);
NotifyIcon1.Icon = Drawing.Icon.FromHandle(hIcon);
DestroyIcon(hIcon.ToInt32);
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这产生的结果不如CoreTemp得到的结果:
您认为解决方案是增加字体大小,但超过8的任何内容都不适合图像.将位图从16x16增加到32x32也没有任何作用 - 它会调整大小.
然后就是我想要显示"8.55"而不是"55"的问题 - 图标周围有足够的空间但看起来无法使用.
有一个更好的方法吗?为什么Windows可以执行以下操作,但我不能?
更新:
感谢@NineBerry提供了一个很好的解决方案.要添加,我发现Tahoma是最好使用的字体.
system-tray ×10
c# ×5
.net ×3
trayicon ×3
icons ×2
java ×2
macos ×2
notifyicon ×2
background ×1
gtk ×1
gtk3 ×1
javascript ×1
mono ×1
node.js ×1
swing ×1
systray ×1
vb.net ×1
winforms ×1
wpf ×1