请制作一个一键启动的脚本效果是在win10系统下每次开机的时候会检测当前的显示状态如果检测到是复制显示则更改为扩展显示如果已经是扩展显示则不受影响
在Windows 10系统下,你可以使用PowerShell脚本来实现一键启动的自动检测和更改显示状态的功能。请按照以下步骤操作:
- 打开文本编辑器(如记事本)。
- 将以下代码复制并粘贴到文本编辑器中:
# 获取当前显示状态
$currentDisplayState = (Get-WmiObject -Namespace root\wmi -Class WmiMonitorBasicDisplayParams).DisplayState
# 如果当前是复制显示,则更改为扩展显示
if ($currentDisplayState -eq 2) {
$newDisplayState = 1 # 1 表示扩展显示
$DisplayModeAPI = @"
using System;
using System.Runtime.InteropServices;
public class DisplayMode {
[DllImport("user32.dll")]
public static extern bool SetDisplayConfig(uint numPathArrayElements, IntPtr pathArray, uint numModeInfoArrayElements, IntPtr modeInfoArray, uint flags);
}
public struct DISPLAYCONFIG_PATH_INFO {
public IntPtr sourceInfo;
public IntPtr targetInfo;
public uint flags;
}
public struct DISPLAYCONFIG_MODE_INFO {
public uint infoType;
public uint id;
public uint adapterId;
public uint targetId;
public uint modeId;
public IntPtr info;
}
public struct DISPLAYCONFIG_SOURCE_DEVICE_NAME {
public uint headerSize;
public uint adapterId;
public uint id;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string viewGdiDeviceName;
}
public struct DISPLAYCONFIG_TARGET_DEVICE_NAME {
public uint headerSize;
public uint adapterId;
public uint id;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string monitorDevicePath;
}
public class Program {
static void Main() {
DISPLAYCONFIG_PATH_INFO[] pathInfoArray = new DISPLAYCONFIG_PATH_INFO[0];
DISPLAYCONFIG_MODE_INFO[] modeInfoArray = new DISPLAYCONFIG_MODE_INFO[0];
uint pathInfoArraySize = 0;
uint modeInfoArraySize = 0;
uint flags = 0x00000000;
uint pathCount = 0;
uint modeCount = 0;
DisplayMode.SetDisplayConfig(pathInfoArraySize, IntPtr.Zero, modeInfoArraySize, IntPtr.Zero, flags);
uint result = DisplayMode.SetDisplayConfig(pathCount, IntPtr.Zero, modeCount, IntPtr.Zero, flags);
Console.WriteLine(result);
}
}
"@
# 编译并执行C#代码
Add-Type -TypeDefinition $DisplayModeAPI -ReferencedAssemblies 'System.Windows.Forms' -Language CSharp
[Program]::Main()
}
- 将文件保存为脚本文件,例如
display.ps1。
接下来,我们将创建一个任务计划来在每次开机时运行脚本。
- 打开任务计划程序。你可以通过按下Win + R键,然后输入
taskschd.msc并按Enter键来打开任务计划程序。 - 在任务计划程序中,点击"创建基本任务"。
- 输入一个名称和描述,然后点击"下一步"。
- 选择"每次启动时",然后点击"下一步"。
- 选择"启动程序",然后点击"下一步"。
- 在"程序或脚本"字段中,点击"浏览"并选择之前保存的脚本文件
display.ps1。 - 点击"下一步",然后点击"完成"。
现在,每次开机时,任务计划程序将自动运行脚本文件,并检测显示状态并进行更改。如果当前是复制显示,脚本将会将其更改为扩展显示。如果已经是扩展显示,脚本将不会产生影响
原文地址: https://www.cveoy.top/t/topic/iMTk 著作权归作者所有。请勿转载和采集!