С# Невозможно удалить полосы прокрутки во внешнем процессе 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);

0 ответов

Другие вопросы по тегам