rdp - 与会话断开连接后,RDP 正在调整大小?
问题描述
我在 BluePrism 中设置了一个程序,当在所述网页中检测到错误时,它会截取网页的屏幕截图。到目前为止,我一切正常,但唯一让我感到困惑的是正在调整窗口大小。连接到 RDP 时,我将窗口设置为 1920x1080,但是当我断开会话时,窗口会自行调整为 1024x968。值得注意的是,我正在使用批处理文件断开会话断开连接后,有什么方法可以将窗口保持在 1920x1080?
解决方案
在您的过程中,您可以制作初始页面,该页面可以调用您的自定义对象操作,该操作可以设置您想要的分辨率。我正在使用这样的代码:
[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE1
{
[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 short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
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;
};
class User_32
{
[DllImport("user32.dll")]
public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode);
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags);
public const int ENUM_CURRENT_SETTINGS = -1;
public const int CDS_UPDATEREGISTRY = 0x01;
public const int CDS_TEST = 0x02;
public const int DISP_CHANGE_SUCCESSFUL = 0;
public const int DISP_CHANGE_RESTART = 1;
public const int DISP_CHANGE_FAILED = -1;
}
class CResolution
{
public void ChangeResolution(int a, int b, out bool success, out string message)
{
Screen screen = Screen.PrimaryScreen;
int iWidth = a;
int iHeight = b;
DEVMODE1 dm = new DEVMODE1();
dm.dmDeviceName = new String(new char[32]);
dm.dmFormName = new String(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);
if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm))
{
dm.dmPelsWidth = iWidth;
dm.dmPelsHeight = iHeight;
int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST);
if (iRet == User_32.DISP_CHANGE_FAILED)
{
success = false;
message = "Unable to process your request. Description: Unable To Process Your Request. Sorry For This Inconvenience.";
}
else
{
iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY);
switch (iRet)
{
case User_32.DISP_CHANGE_SUCCESSFUL:
break;
case User_32.DISP_CHANGE_RESTART:
{
success = false;
message = "Description: You Need To Reboot For The Change To Happen. If You Feel Any Problem After Rebooting Your Machine Then Try To Change Resolution In Safe Mode.";
break;
}
default:
{
success = false;
message = "Description: Failed To Change The Resolution.";
break;
}
}
}
}
success = true;
message = string.Empty;
}
}
使用标准分辨率,例如 1024x768、1280x800、1280x1024、1360x768、1366x768、1400x1050、1440x900、1600x900、1680x1050、1920x1080。
我这样称呼它:
推荐阅读
- vue.js - 尝试在 vue 中传递 url 并在之后添加 API 字符串
- python - 如何正确循环遍历 matplotlib 图形的子图以显示每条线的最终 y 轴值?
- python - 在 Python 文档字符串中记录复杂的嵌套字典参数的最佳实践?
- python - 了解如何使用 tf.nn.conv2d 函数
- acumatica - Acumatica 未在 DAC 生成器中显示表格列
- node.js - 链接获取、获取、映射、过滤、获取、获取
- javascript - 使用 css 或 js 强制适合字体高度
- typescript - 有没有办法在 TypeScript 中实例化受约束的泛型类型的实例?
- javascript - 重构 JSON 数据
- sql-server - 从 SQL Server 2008 中删除 XML 节点