С# Невозможно удалить полосы прокрутки во внешнем процессе RDP с помощью SetWindowLong
Я пытаюсь удалить полосы прокрутки из окна RDP, которое запускает мой код С#. Мой код запускает mstsc.exe, передавая соответствующий путь к файлу rdp. Но как только он открыт, мой код должен удалить горизонтальные и вертикальные полосы прокрутки. Мой стиль, который я использую ниже, кажется, работает для удаления толстой рамки, удаления кнопок min и max, но WS_HSCROLL и WS_VSCROLL, похоже, игнорируются.
Process m_proc = new Process { StartInfo = { FileName = "mstsc.exe", Arguments = rdpFullPath } };
m_proc.Start();
//Wait until process is started and main rdp window is created.
while (m_proc.MainWindowHandle == IntPtr.Zero)
{
Thread.Sleep(2000);
}
// Remove thick frame to disallow resizing of the RDP window, and remove minimize and maximize buttons.
var currentStyle = UnsafeNativeMethods.GetWindowLong(m_proc.MainWindowHandle, UnsafeNativeMethods.GWL_STYLE);
currentStyle &= ~UnsafeNativeMethods.WS_THICKFRAME;
currentStyle &= ~UnsafeNativeMethods.WS_MINIMIZEBOX;
currentStyle &= ~UnsafeNativeMethods.WS_MAXIMIZEBOX;
currentStyle &= ~UnsafeNativeMethods.WS_HSCROLL;
currentStyle &= ~UnsafeNativeMethods.WS_VSCROLL;
UnsafeNativeMethods.SetWindowLong(m_proc.MainWindowHandle, UnsafeNativeMethods.GWL_STYLE, currentStyle);
UnsafeNativeMethods.SetWindowPos(m_proc.MainWindowHandle,
UnsafeNativeMethods.HWND_TOPMOST, 0, 0, 0, 0,
UnsafeNativeMethods.SWP_NOMOVE | UnsafeNativeMethods.SWP_NOSIZE | UnsafeNativeMethods.SWP_NOZORDER | UnsafeNativeMethods.SWP_NOOWNERZORDER | UnsafeNativeMethods.SWP_FRAMECHANGED);
У меня есть следующие определения:
public const int WS_HSCROLL = 0x00100000;
public const int WS_VSCROLL = 0x00200000;
[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll")]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy,
SetWindowPosFlags uFlags);