2012-03-15 3 views
2

Форма запуска в моем приложении VB6 ведет себя странно при запуске в сеансе служб терминалов (Remote Desktop), причем хост и клиент являются компьютерами XP Pro. Форма предназначена для центрирования, но на самом деле она максимизируется, и ее содержимое выходит в верхнем левом углу, и это выглядит очень странно. Обратите внимание: это происходит только тогда, когда путь приложения используется для поля «Запустить следующую программу в соединении» на вкладке «Программа» в клиенте RDP.Как остановить максимизацию первоначальной формы при запуске программы запуска 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 проекта здесь: Link to zip file on Google Docs

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

ответ

3

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

Как вы смогли решить, что SW_MAXIMIZE это передается - Process Explorer? Это то, что MS установит в обновлении, если об этом расскажут? – CJ7

+0

Я догадался. У него не было времени воспроизвести его с помощью загрузочного приложения, которое запускает «TestForRDP.exe» с помощью «ShellExecute» с «SW_MAXIMIZE», но установка стиля рамки «Form1» в «Fixed Dialog» не сработала - вот ключ. – wqw

Смежные вопросы