我已经成功创建了一个应用程序,使用NotifyIcon最小化托盘.手动关闭表单后,它将成功从桌面,任务栏和alt-tab中隐藏.尝试最小化应用程序时,会出现此问题.起初问题是应用程序将被最小化但仍会出现在alt-tab对话框中.将FormBorderStyle更改为ToolWindow选项之一(来自"None"选项)修复此问题,但引入了另一个问题.当应用程序首次启动时,在开始菜单上方可以看到最小化窗口的标题栏:
打开表单并关闭它会使其正确隐藏.我尝试了很多变化,但这里基本上它是如何正常工作的......
WindowState在Designer中设置为Minimized.在构造函数中进行一些初始化后,我有以下几行:
this.Visible = false;
this.ShowInTaskbar = false;
Run Code Online (Sandbox Code Playgroud)
双击NotifyIcon时,我有以下内容:
this.WindowState = FormWindowState.Normal;
this.Visible = true;
this.ShowInTaskbar = true;
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我已经尝试过很多小的变化(this.Hide()等).有没有办法让NotifyIcon成为主要组件,这样我可以完全启动并处理表单,同时让NotifyIcon运行?必须有一种方法来启动应用程序与最小化的形式没有任何奇怪.请帮帮我找到它!
我只需要一个简单的例子来说明如何在我的系统托盘上轻松放置带有python的图标.这意味着:我运行程序,没有窗口显示,只有一个托盘图标(我有一个png文件)显示在系统托盘中,当我右键单击它时,会出现一个带有一些选项的菜单(当我点击时在一个选项上,运行一个函数).那可能吗?我根本不需要任何窗口......
示例/代码片段非常感谢!:d
使用新的FireMonkey跨平台工具,如何创建托盘图标?使用Delphi,它曾经是TTrayIcon.
文档什么都没有,似乎没有其他问题可以回答这个问题.会欣赏任何想法(我总是可以求助于每个平台的系统编程,但那就是真的没有这样的东西).
我在Linux上创建了一个使用Java 6和Swing的 sytray的Java应用程序.该应用程序看起来很棒(使用系统的外观和感觉)但系统看起来很糟糕.我的意思是系统托盘菜单看起来像老widgedts(Motif?).我想知道是否有办法设置一个外观和感觉或什么使系统托盘更漂亮.
下面是托盘的截图:
要使.NET应用程序在Window的系统托盘中显示为图标,需要做些什么?
你如何处理所述图标上的鼠标按钮点击?
我正在使用python为windows编写简单的托盘.
我成功创建了一个托盘图标,菜单,子菜单.我坚持为特定的托盘项目添加图像.
这是我用过的代码.(链接)即使这段代码也行不通.Windows文档不清楚.
def addMenuItem(self, wID, title, menu):
path = os.path.dirname(os.path.abspath(__file__))
path += "\print_pref.ico"
option_icon = self.prep_menu_icon(path)
item, extras = win32gui_struct.PackMENUITEMINFO(text=title,
hbmpItem=option_icon,
wID=wID)
win32gui.InsertMenuItem(menu, 0, 1, item)
def prep_menu_icon(self, icon):
# First load the icon.
ico_x = win32api.GetSystemMetrics(win32con.SM_CXSMICON)
ico_y = win32api.GetSystemMetrics(win32con.SM_CYSMICON)
hicon = win32gui.LoadImage(0, icon, win32con.IMAGE_ICON, ico_x, ico_y, win32con.LR_LOADFROMFILE)
hdcBitmap = win32gui.CreateCompatibleDC(0)
hdcScreen = win32gui.GetDC(0)
hbm = win32gui.CreateCompatibleBitmap(hdcScreen, ico_x, ico_y)
hbmOld = win32gui.SelectObject(hdcBitmap, hbm)
# Fill the background.
brush = win32gui.GetSysColorBrush(win32con.COLOR_MENU)
win32gui.FillRect(hdcBitmap, (0, 0, 16, 16), brush)
# …Run Code Online (Sandbox Code Playgroud) 如何显示超过63个字符的系统托盘工具提示?NotifyIcon.Text有63个字符限制,但我已经看到VNC服务器有更长的工具提示.
我该怎么做VNC服务器呢?
我正在使用JavaFX UI制作一个简单的应用程序,该应用程序只是这样做:
我已经制作了UI并将应用程序放在Sys托盘中,但是我无法使用Normal Actionlistener方法显示/隐藏它,但是我收到了这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
Run Code Online (Sandbox Code Playgroud)
这是代码:
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionListener;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个没有UI的守护进程,除了Windows系统中的简单图标.
我想对任何其他软件包没有依赖关系,所以我试图使用syscall软件包并自己实现必要的调用.
Shell_NotifyIcon功能shell32.dll.Shell_NotifyIconW(Unicode declination),但实现是部分的.使用xilp/systray文档构建.
type HANDLE uintptr
type HICON HANDLE
type HWND HANDLE
type GUID struct {
Data1 uint32
Data2 uint16
Data3 uint16
Data4 [8]byte
}
type NOTIFYICONDATA struct {
CbSize uint32
HWnd HWND
UID uint32
UFlags uint32
UCallbackMessage uint32
HIcon HICON
SzTip [128]uint16
DwState uint32
DwStateMask uint32
SzInfo [256]uint16 …Run Code Online (Sandbox Code Playgroud) 我已经在我的应用程序中添加了Notify图标,并且我经常在系统托盘中看到最多3份通知图标.是否有一个原因?
有没有办法阻止它发生.
在我的应用程序关闭后,这种情况经常持续存在,直到我迷失到系统托架并且系统托架扩展并折叠然后它们全部消失.