unity3d:win32api,托盘运行,开机自启动,浏览文件对话框,无标题栏,自定义标题栏拖动
源码
工程设置
所需dll
托盘运行
隐藏窗口,显示托盘图标,点击托盘图标恢复窗口
public static void Hide()//最小化到托盘 { try { if (File.Exists(Application.streamingAssetsPath + "/icon.png")) { window = GetForegroundWindow(); ShowWindow(window, SW_HIDE); //_notifyIcon.BalloonTipText = "Heroage";//托盘气泡显示内容 _notifyIcon.Text = "托盘悬浮提示";//鼠标悬浮时显示的内容 _notifyIcon.Visible = true;//托盘按钮是否可见 _notifyIcon.Icon = CustomTrayIcon(Application.streamingAssetsPath + "/icon.png", _width, _height);//托盘图标 //_notifyIcon.ShowBalloonTip(2000);//托盘气泡显示时间 System.Windows.Forms.MenuItem closeMenu = new System.Windows.Forms.MenuItem("关闭"); System.Windows.Forms.MenuItem[] childen = new System.Windows.Forms.MenuItem[] { closeMenu }; _notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(childen); closeMenu.Click += OnMenuClose; _notifyIcon.MouseClick += notifyIcon_MouseClick;//双击托盘图标响应事件 } } catch (Exception e) { //Debug.Log(e.ToString()); MsgBoxBase.Show(e.ToString(), "异常", WinForms.MessageBoxButtons.OKCancel); } }
隐藏标题栏
exe安装打包,打包的时候给exe加上运行参数xx.exe -popupwindow
-popupwindow 只针对unity构建出来的exe有用
隐藏系统自带标题栏后,有自定义标题栏,拖动自定义标题栏,移动窗口
UGUI
using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using static PInvoke; [RequireComponent(typeof(Graphic))] public class WindowMoveHandler : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler { static bool isDrag = false; void IPointerDownHandler.OnPointerDown(PointerEventData eventData) => isDrag = eventData.pointerId == -1; void IPointerExitHandler.OnPointerExit(PointerEventData eventData) => isDrag = false; void IPointerUpHandler.OnPointerUp(PointerEventData eventData) => isDrag = !(eventData.pointerId == -1); private void Update() { if (!Application.isEditor && isDrag) { DragWindow(); } } }
NGUI
using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using static PInvoke; public class WindowMoveHandler : MonoBehaviour { static bool isDrag = false; public GameObject m_obj; private void Update() { if (Input.GetMouseButton(0) && UICamera.LastRayHitObject == m_obj) { Debug.Log("MoveWindows"); DragWindow(); } } }
开机自启动
通过写注册表实现
public static void SetStartWithWindows() { RegistryKey reg = Registry.CurrentUser.OpenSubKey(RegistRun, true); if (reg == null) { reg = Registry.CurrentUser.CreateSubKey(RegistRun); } reg.SetValue(RegistWin32ApiExe, GetExePath); }
posted on 2023-01-05 00:30 luoyikun 阅读(174) 评论(1) 编辑 收藏 举报 来源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2022-01-05 Unity3d:c#,Mono,IL2CPP,托管代码,AOT,JIT
2022-01-05 unity3d:协程实现原理(转),IEnumerator,yield,编辑器下协程