我有一个小应用程序.我希望我的目标用户(Windows,Linux)能够从系统托盘启动和退出应用程序.我打算使用Tkinter,因为它占地面积小,但我不知道如何实现它.
tkinter可以做到这一点,还是有更好的选择.我需要一个不会将我的1MB程序更改为5MB程序的GUI库.
请样品代码将不胜感激
谢谢
我最近在Delphi 2007中发现了TTrayIcon组件.使用的代码非常简单.
procedure TForm1.FormCreate(Sender: TObject);
begin
AppTrayIcon := TTrayIcon.Create(nil);
AppTrayIcon.OnDblClick := OnAppTrayIconDblClick;
Application.OnMinimize := OnApplicationMinimize;
Application.OnRestore := OnApplicationRestore;
end;
procedure TForm1.OnApplicationRestore(Sender: TObject);
begin
AppTrayIcon.Visible := False;
ShowWindow(Application.Handle, SW_SHOW);
Application.BringToFront;
end;
procedure TForm1.OnApplicationMinimize(Sender: TObject);
begin
AppTrayIcon.Visible := True;
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.OnAppTrayIconDblClick(Sender: TObject);
begin
Application.Restore;
end;
Run Code Online (Sandbox Code Playgroud)
由于没有分配图标,Delphi使用Application.Icon,即图标:http://artbyloveland.com/icon.ico此图标包括以下尺寸:64x64,48x48,32x32,24x24和16x16.
现在,在我的Windows Vista上,一切都很好.
在像Windows Server 2003这样的非主题Windows上,结果全部搞砸了:

编辑: 起初,我认为这是因为alpha通道.所以我尝试在不使用alpha通道的情况下制作ico文件的版本.我也按照Ken的建议尝试了GreenFish Icon Editor; 我选择了每种颜色深度和每种尺寸.在这两种情况下,最终结果都更好.但是,ico文件中根本不存在黑色笔划.

我正在尝试使用C#在.net中创建一个在用户登录之前运行的Windows服务...然后当用户登录时,符号应出现在系统托盘中(时钟旁边)以显示用户服务正在运行..通过双击该符号,应该向用户显示配置实用程序(用wpf编写),这样他就可以配置服务,从中读取数据等等.
是否有可能在一个应用程序中执行此操作?
在此先感谢任何帮助!
我正在python中编写一个webmail检查器,我希望它只是坐在托盘图标上,并在有新电子邮件时发出警告.至于gtk代码,有人能指出我正确的方向吗?
我已经编码了检查新电子邮件所需的位,但它现在是CLI.
我有#.net应用程序.所以我创建了一个位于托盘中的notifyIcon.我想要做的是当用户点击表单上的"x"按钮时,我希望它靠近托盘.他们应该只能使用托盘图标中的上下文菜单退出程序.
所以我所做的是,在表单关闭事件中,我检查表单是否可见.如果它的可见的,我把它设置为不可见,并设置showInTaskbar为假(模拟最小化到托盘),如果表单是不可见已经,那么他们可能从托盘关闭,所以我将退出在这种情况下的程序.
不过,我的问题是,如果窗口是可见的,但他们右键单击托盘图标,并创下出口的上下文菜单上,我需要退出程序,而不是减少.
我该如何解决这个问题?
我编写了一个小应用程序,它在后台执行一些操作。
因为它不需要用户的注意,我想将应用程序发送到系统托盘中,当有人单击它时,窗口应该再次弹出。
问题是,我编写了一个 MFC 程序(对话框),它可以完成我想要它做的所有事情。现在我需要找到一种方法将其发送到托盘中。
类型:MFC(对话框窗口) 语言:C++ IDE:Visual Studio 2012
你对我如何做到这一点有什么想法吗?或者你知道一个不错的教程或我需要的函数/类吗?
我已经在 codeprojects.com 和 google 上搜索过,但似乎没有太多相关内容。谢谢。
编辑1:
我尝试过这样的事情:
HWND hMainWindow = this->GetSafeHwnd();
HICON hProgramIcon = this->GetIcon(false);
char szTip[16] = "Tracker";
nidTrayIcon.cbSize = sizeof(nidTrayIcon);
nidTrayIcon.hIcon = hProgramIcon;
nidTrayIcon.hWnd = hMainWindow;
nidTrayIcon.uCallbackMessage = (WM_USER + 1);
nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nidTrayIcon.uID = 0x0200;
strcpy_s((char*)nidTrayIcon.szTip,16, szTip2);
nidTrayIcon.szTip[strlen(szTip)] = '\0';
Shell_NotifyIcon(NIM_ADD, &nidTrayIcon);
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,我的应用程序将关闭并显示代码“0x03”(找不到路径...)
编辑2:
this->ShowWindow(SW_HIDE);
Run Code Online (Sandbox Code Playgroud)
也不起作用。同样的问题。
我正在尝试将托盘添加到我的 xmonad 和 xmobar 桌面设置中。
这是我.xinitrc之前添加的exec xmonad
trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 18 --height 22 --transparent true --tint 0x000000 &
Run Code Online (Sandbox Code Playgroud)
有了它,我只能在第一个工作区看到它,并且默认情况下它是选中的。
我曾经试图忽略它
,[ className =? "Trayer" --> doIgnore]
,[ resource =? "trayer" --> doIgnore]
Run Code Online (Sandbox Code Playgroud)
但这毫无意义,在第一个工作区仍然选择了托盘(我看到了选择边框)......
这是我目前的xmonad.hs:https : //github.com/Heather/xmonad/blob/master/xmonad.hs
xmonad 版本是 0.11
使用 Gnome 安装了全新的 Ubuntu 18.04,然后安装了 Skype 和 Slack。现在在我的系统托盘(通知区域,应用程序列表,...)我有这个正在运行的应用程序的图标。当我单击应用程序图标时,我看到的是上下文菜单而不是应用程序窗口。如何在不将 Gnome 更改为 metacity/classic 等的情况下返回旧行为(打开应用程序而不是上下文菜单)?是否可以使用 gnome 调整工具?
我想创建一个完整的后台运行应用程序,它只显示在系统托盘中,并且没有任何"窗口".我尝试将"window"属性设置为false,但这不起作用.有没有办法使用node-webkit创建一个完全后台守护进程风格的应用程序?