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

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

Очевидно, что есть решение, если вы используете Сервер с инструментом Конфигурации TS: http://www.windows -server-answers.com / microsoft / Windows-Terminal-Services / 29117908 / start-program-on-connection- -Он-разве-centered.aspx

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

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

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

1 Ответ

3 голосов
/ 15 марта 2012

Очевидно, что 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
...