【已解决】求wcs代码(调整屏幕分辨率)。谢谢

查看 126|回复 11
作者:x78b   
   
[color=]已解决:DISP W1440 H900 B32
========================
原来的问题
求wcs代码(调整屏幕分辨率)。谢谢
=======================
调整为:1440 900 32
======================
bat代码我已经有了,
现在希望得到的是:.wcs  代码

代码, 的是, 屏幕分辨率

lodon   
[ol]echo off
cls
echo 调整屏幕分辨率
echo =======================
echo 1: 1024x768 (32位)
echo 2: 1440x900 (32位)
echo =======================
set /p choice=请选择分辨率(1 或 2):
if %choice%==1 (
    nircmd setdisplay 1024 768 32
    echo 正在设置为 1024x768 (32位)
)
if %choice%==2 (
    nircmd setdisplay 1440 900 32
    echo 正在设置为 1440x900 (32位)
)
pause[/ol]复制代码
lodon   

a66 发表于 2026-3-17 21:12

bat代码我已经有了,
现在希望得到的是:.wcs  代码
lodon   
[ol]using System;
using System.Runtime.InteropServices;
class Program
{
    [DllImport("user32.dll")]
    static extern bool ChangeDisplaySettingsEx(string lpszDeviceName, ref DEVMODE lpDevMode, IntPtr hwnd, uint dwflags, IntPtr lParam);
    [StructLayout(LayoutKind.Sequential)]
    struct DEVMODE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string dmDeviceName;
        public short dmSpecVersion;
        public short dmDriverVersion;
        public short dmSize;
        public short dmDriverExtra;
        public int dmFields;
        public int dmPositionX;
        public int dmPositionY;
        public int dmDisplayOrientation;
        public int dmDisplayFixedOutput;
        public short dmColorBits;
        public short dmCopies;
        public short dmDefaultSource;
        public short dmPrintQuality;
        public int dmDisplayFlags;
        public int dmDisplayFrequency;
        public int dmICMMethod;
        public int dmICMIntent;
        public int dmMediaType;
        public int dmDitherType;
        public int dmReserved1;
        public int dmReserved2;
        public int dmPanningWidth;
        public int dmPanningHeight;
    }
    const int CDS_UPDATEREGISTRY = 0x01;
    const int CDS_TEST = 0x04;
    const int DISP_CHANGE_SUCCESSFUL = 0;
    static void Main(string[] args)
    {
        DEVMODE devMode = new DEVMODE();
        devMode.dmDeviceName = new String(' ', 32);
        devMode.dmSpecVersion = 0x0300;
        devMode.dmSize = (short)Marshal.SizeOf(devMode);
        devMode.dmPanningWidth = devMode.dmPositionX = devMode.dmDisplayFrequency = 0;
        devMode.dmPanningHeight = devMode.dmPositionY = 0;
        devMode.dmFields = 0x00080000 | 0x00100000; // DM_PELSWIDTH | DM_PELSHEIGHT
        devMode.dmPanningWidth = devMode.dmPositionX = 1440; // 分辨率宽度
        devMode.dmPanningHeight = devMode.dmPositionY = 900;  // 分辨率高度
        int result = ChangeDisplaySettingsEx(null, ref devMode, IntPtr.Zero, CDS_TEST, IntPtr.Zero);
        if (result == DISP_CHANGE_SUCCESSFUL)
        {
            result = ChangeDisplaySettingsEx(null, ref devMode, IntPtr.Zero, CDS_UPDATEREGISTRY, IntPtr.Zero);
        }
        Console.WriteLine("分辨率已尝试设置为 1440x900");
    }
}[/ol]复制代码
lodon   

a66 发表于 2026-3-17 21:33

这是什么代码?
我保存为:分辨率.wcs   运行无反应
lodon   
   

a66 发表于 2026-3-17 21:33

一个分辨率用这么多代码?结合WinXshell,一行代码就可以了。(INI,用Pecmd运行)
EXEC %ProgramFiles%\WinXShell\WinXShell.exe -luacode app:call('Screen::Set','resolution',1440,900)
懂WCS的转换一下,应该更简单。现在几乎没有PE不用WinXshell的。
我试了一下,WCS 和 INI 好像没差别,直接用上面代码即可。INI还要通过PECMD右键运行,WCS双击直接运行。
lodon   

yyz2191958 发表于 2026-3-17 21:41
这是什么代码?
我保存为:分辨率.wcs   运行无反应

C++
lodon   
DISP W1440 H900 B32
lodon   
一个分辨率用这么多代码
lodon   

ppll2030 发表于 2026-3-17 22:00
DISP W1440 H900 B32

成功了 再次感谢
您需要登录后才可以回帖 登录 | 立即注册

返回顶部