C# Unity 获取窗口状态的代码
时间: 2024-05-02 12:16:46 浏览: 9
你可以使用以下代码来获取 Unity 窗口的状态:
```
using UnityEngine;
using System.Runtime.InteropServices;
public class WindowStatus : MonoBehaviour
{
// 导入 Win32 API
[DllImport("user32.dll")]
private static extern bool IsIconic(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool IsZoomed(IntPtr hWnd);
// 获取 Unity 窗口的句柄
private IntPtr unityHwnd = IntPtr.Zero;
void Start()
{
unityHwnd = GetUnityWindowHandle();
}
void Update()
{
// 获取窗口最小化状态
bool isMinimized = IsIconic(unityHwnd);
// 获取窗口最大化状态
bool isMaximized = IsZoomed(unityHwnd);
// 输出窗口状态
Debug.Log("窗口最小化状态:" + isMinimized);
Debug.Log("窗口最大化状态:" + isMaximized);
}
// 获取 Unity 窗口的句柄
private IntPtr GetUnityWindowHandle()
{
IntPtr hwnd = IntPtr.Zero;
// 获取 Unity 主窗口的句柄
if (Application.platform == RuntimePlatform.WindowsPlayer)
{
hwnd = GetForegroundWindow();
}
else if (Application.platform == RuntimePlatform.WindowsEditor)
{
hwnd = GetUnityEditorMainWindowHandle();
}
return hwnd;
}
// 获取当前处于焦点的窗口的句柄
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
// 获取 Unity 编辑器主窗口的句柄
[DllImport("user32.dll")]
private static extern IntPtr GetUnityEditorMainWindowHandle();
}
```
这段代码通过 Win32 API 获取 Unity 窗口的句柄,并调用 IsIconic 和 IsZoomed 函数获取窗口的最小化和最大化状态。请注意,这段代码只能在 Windows 平台上使用。