luoyikun

导航

统计

unity3d:win32api,托盘运行,开机自启动,浏览文件对话框,无标题栏,自定义标题栏拖动

在这里插入图片描述

源码

csdn下载
github

工程设置

在这里插入图片描述

所需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   luoyikun  阅读(174)  评论(1编辑  收藏  举报  

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有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,编辑器下协程
点击右上角即可分享
微信分享提示