Как остановить максимизацию начальной формы при запуске в качестве запуска программы 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, вы обнаружите, что приложение запускается с максимизированной формы с его содержанием в левом верхнем углу.

1 ответ

Судя по всему, Terminal Server запускает ваше приложение запуска с 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
Другие вопросы по тегам