用C#程序修改分辨率 【不重启的前提下】

suihuan111 2009-04-16 12:27:45
问题如题
如何用C#程序修改分辨率
前提是不重启机器
打开程序 分辨率调整为一个值
退出程序后 分辨率恢复打开程序前的分辨率!!!
谢谢!!
...全文
1345 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmxtcc 2012-08-30
  • 打赏
  • 举报
回复
不行..万一程序未响应,强制关闭呢?
L_Osiris 2011-09-05
  • 打赏
  • 举报
回复
这段代码有缺陷,只能用在一些常用的屏幕分辩率上;我的机子屏幕分辨率为1366*768,关闭窗体是复原不了。
aby913 2009-04-17
  • 打赏
  • 举报
回复
学习了 果然还是要用到dll
xubaoduo_77 2009-04-17
  • 打赏
  • 举报
回复
谢谢,救急之人.学习中
suihuan111 2009-04-16
  • 打赏
  • 举报
回复
自己UP
hanyu0528 2009-04-16
  • 打赏
  • 举报
回复
UP
sj6071 2009-04-16
  • 打赏
  • 举报
回复
同问!
suihuan111 2009-04-16
  • 打赏
  • 举报
回复
问题已解决
代码分享下
希望能对大家有所帮助:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace 解决分辨率
{
public partial class Form1 : Form
{
//保存当前屏幕分辨率
int i = Screen.PrimaryScreen.Bounds.Width;
int j = Screen.PrimaryScreen.Bounds.Height;
public Form1()
{
InitializeComponent();
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public 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 short dmOrientation;
public short dmPaperSize;
public short dmPaperLength;
public short dmPaperWidth;
public short dmScale;
public short dmCopies;
public short dmDefaultSource;
public short dmPrintQuality;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public int dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int ChangeDisplaySettings([In] ref DEVMODE lpDevMode, int dwFlags);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern bool EnumDisplaySettings(string lpszDeviceName, Int32 iModeNum, ref DEVMODE lpDevMode);
void ChangeRes()
{

DEVMODE DevM = new DEVMODE();
DevM.dmSize = (short)Marshal.SizeOf(typeof(DEVMODE));
bool mybool;
mybool = EnumDisplaySettings(null, 0, ref DevM);
DevM.dmPelsWidth = 1024;//宽
DevM.dmPelsHeight = 768;//高
DevM.dmDisplayFrequency = 60;//刷新频率
DevM.dmBitsPerPel = 32;//颜色象素
long result = ChangeDisplaySettings(ref DevM, 0);
}
void FuYuan()
{
DEVMODE DevM = new DEVMODE();
DevM.dmSize = (short)Marshal.SizeOf(typeof(DEVMODE));
bool mybool;
mybool = EnumDisplaySettings(null, 0, ref DevM);
DevM.dmPelsWidth = i;//恢复宽
DevM.dmPelsHeight =j;//恢复高
DevM.dmDisplayFrequency = 60;//刷新频率
DevM.dmBitsPerPel = 32;//颜色象素
long result = ChangeDisplaySettings(ref DevM, 0);
}
private void Form1_Load(object sender, EventArgs e)
{
ChangeRes();
}

private void button1_Click(object sender, EventArgs e)
{
FuYuan();
this.Close();

}
aimeast 2009-04-16
  • 打赏
  • 举报
回复
我也想知道。
jryu2k5 2009-04-16
  • 打赏
  • 举报
回复
帮顶一下
wusenbo 2009-04-16
  • 打赏
  • 举报
回复
没有办法帮你,只能帮你顶!!
suihuan111 2009-04-16
  • 打赏
  • 举报
回复
着急啊
高手帮帮忙吧
suihuan111 2009-04-16
  • 打赏
  • 举报
回复
急用 再顶个~

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧