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