Как остановить максимизацию начальной формы при запуске в качестве запускаемой программы RDP?

Форма запуска в моем приложении VB6 ведет себя странно при запуске в сеансе служб терминалов (удаленный рабочий стол), когда и хост, и клиент являются машинами XP Pro. Форма предназначена для центрирования, но на самом деле она максимизируется, а ее содержимое перемещается в верхний левый угол, и это выглядит очень странно. Обратите внимание, что это происходит только в том случае, если путь к приложению используется для поля «Запустить следующую программу при подключении» на вкладке «Программа» в клиенте RDP.

По-видимому, есть решение, если вы используете сервер с инструментом настройки TS: http://www.windows-server-answers.com/microsoft/Windows-Terminal-Services/29117908/start-program-on-connection--it-isnt-centered.aspx

Но обе машины XP Pro, поэтому я не могу получить конфигурацию TS.

См. пример проекта VB6 здесь: Ссылка на zip-файл в Документах Google

Если вы просто создадите EXE-файл вышеуказанного проекта (который запускается с неразвернутой по центру формой при нормальном запуске) и используете этот путь EXE-файла при настройке поля «Запустить следующую программу при подключении» на вкладке «Программа» в RDP-клиенте , вы обнаружите, что приложение начинается с развернутой формы с содержимым в левом верхнем углу.


person CJ7    schedule 15.03.2012    source источник


Ответы (1)


По-видимому, сервер терминалов запускает ваше стартовое приложение с ShellExecute, передавая SW_MAXIMIZE вместо nShowCmd вместо SW_SHOWDEFAULT.

Вы можете исправить это с помощью простого взлома в событии Form_Resize, подобном этому

Option Explicit

Private m_bActivated            As Boolean

Private Sub Command_Click()

Me.Text = "HELLO"

End Sub

Private Sub Form_Resize()
    If Not m_bActivated Then
        m_bActivated = True
        WindowState = vbNormal
    End If
End Sub
person wqw    schedule 15.03.2012
comment
Как вы смогли понять, что передается SW_MAXIMIZE - Process Explorer? Это то, что MS исправила бы в обновлении, если бы им сказали об этом? - person CJ7; 16.03.2012
comment
Я догадался. У меня не было времени воспроизвести его с помощью загрузочного приложения, которое запускает TestForRDP.exe с использованием ShellExecute с SW_MAXIMIZE, но установка стиля границы с Form1 на Fixed Dialog не сработала - это подсказка. - person wqw; 16.03.2012