画夕颜 2023-08-29 14:57 采纳率: 70%
浏览 11
已结题

Java 怎么去掉通知窗口左上角的:java(TM)platform se binary 字样?

请问,Java 通过:TrayIcon.displayMessage 在 Windows 下发送通知时,怎么去掉通知窗口左上角的:java(TM)platform se binary 字样?

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-29 23:39
    关注

    【以下回答由 GPT 生成】

    我可以帮您解答这个问题。

    在Java中,TrayIcon.displayMessage方法是使用操作系统的默认通知实现来显示通知。因此,要去掉通知窗口左上角显示的"java(TM)platform se binary"字样,需要使用一些操作系统特定的封装库来修改通知窗口的样式。

    首先,在Windows操作系统下,可以使用JNA(Java Native Access)库来调用操作系统的相关函数。JNA是一个Java库,允许您以Java代码的方式调用本地(C/C++)函数。

    下面是一个使用JNA库来修改通知窗口的样式的示例代码:

    import com.sun.jna.Library;
    import com.sun.jna.Native;
    import com.sun.jna.Pointer;
    import com.sun.jna.Structure;
    import com.sun.jna.platform.win32.BaseTSD;
    import com.sun.jna.platform.win32.WinDef;
    import com.sun.jna.platform.win32.WinUser;
    
    public class TrayNotification {
        public interface User32 extends Library {
            User32 INSTANCE = (User32) Native.load("user32", User32.class);
    
            int WM_GETICON = 0x007F;
            int ICON_SMALL2 = 2;
    
            int NIM_MODIFY = 0x00000001;
    
            boolean Shell_NotifyIconW(int dwMessage, NOTIFYICONDATA lpData);
    
            class NOTIFYICONDATA extends Structure {
                public int cbSize;
                public WinDef.HWND hWnd;
                public int uID;
                public int uFlags;
                public int uCallbackMessage;
                public WinDef.HICON hIcon;
                public char[] szTip = new char[128];
                public int dwState;
                public int dwStateMask;
                public char[] szInfo = new char[256];
                public BaseTSD.ULONG_PTR dwInfoFlags;
                public char[] szInfoTitle = new char[64];
                public BaseTSD.ULONG_PTR dwInfoTitleFlags;
                public char[] szInfoTip = new char[128];
                public BaseTSD.ULONG_PTR dwInfoFlags2;
                public WinDef.HICON hBalloonIcon;
    
                public NOTIFYICONDATA() {
                    this.cbSize = size();
                }
    
                protected void useMemory(Pointer arg0) {
                    super.useMemory(arg0);
                    read();
                }
            }
        }
    
        public static void main(String[] args) {
            // 获取当前进程的窗口句柄
            WinDef.HWND hwnd = User32.INSTANCE.GetForegroundWindow();
            int id = 1; // 假设您的TrayIcon的ID是1
    
            // 修改通知窗口的样式
            User32.NOTIFYICONDATA notificationData = new User32.NOTIFYICONDATA();
            notificationData.hWnd = hwnd;
            notificationData.uID = id;
            notificationData.uFlags = User32.NIF_MODIFY;
            notificationData.szInfoTitle = "Title without 'java(TM) platform se binary'".toCharArray();
    
            User32.INSTANCE.Shell_NotifyIconW(User32.NIM_MODIFY, notificationData);
        }
    }
    

    上述代码使用了JNA库,通过调用Shell_NotifyIconW函数来修改通知窗口的样式。在代码中,我们首先获取当前进程的窗口句柄,然后创建一个NOTIFYICONDATA结构,将要修改的属性填入结构中,最后调用Shell_NotifyIconW函数传入NIM_MODIFY标志来修改通知窗口的样式。

    请注意,上述代码仅适用于Windows操作系统。如果您希望在其他操作系统上运行,请使用操作系统提供的相应方法来修改通知窗口的样式。

    希望这可以帮助到您!如果您还有任何问题,请随时提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月13日
  • 已采纳回答 9月5日
  • 创建了问题 8月29日

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?