using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
public class WindowsClose : MonoBehaviour
{
// 声明需要使用的Windows API函数
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool CloseWindow(IntPtr hWnd);
//[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
//static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
// 调用CloseWindow函数关闭窗口 不触发 ondestory onapplicationquit
public void CloseAppWindow()
{
// 获取当前窗口句柄
IntPtr windowHandle = FindWindow(null, "WS Display Settings");
// 关闭窗口
if (windowHandle != IntPtr.Zero)
{
CloseWindow(windowHandle);
}
}
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "PostMessage", SetLastError = true)]
public static extern bool PostMessage(IntPtr hwnd, uint Msg, uint wParam, uint lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_CLOSE = 0xF060;
/// <summary>
/// 调用 PostMessage 函数关闭窗口 可触发 ondestory onapplicationquit
/// </summary>
public void CloseAppWindow1()
{
//IntPtr hwnd = FindWindow(null, "WsDisplaySettings");
//PostMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);
IntPtr hwnd1 = FindWindow(null, "WS Display Settings");
PostMessage(hwnd1, WM_SYSCOMMAND, SC_CLOSE, 0);
}
}
Unity实现关闭应用程序和关闭应用窗口
最新推荐文章于 2024-08-21 16:13:12 发布
文章介绍了如何使用C#在Unity中通过两种不同的方法关闭名为WSDisplaySettings的窗口,分别是调用`CloseWindow`API和发送`WM_SYSCOMMAND`消息。后一种方法可以触发`OnDestroy`和`OnApplicationQuit`。
摘要由CSDN通过智能技术生成