Как определить, есть ли в сеансе Terminal Services в VB6? - PullRequest
0 голосов
/ 11 марта 2012

Как определить, является ли текущий сеанс сеансом служб терминалов (удаленного рабочего стола) в приложении VB6?

Ответы [ 2 ]

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

Вызов функции GetSystemMetrics с флагом SM_REMOTESESSION сообщит вам, работает ли приложение в сеансе служб терминалов.

Чтобы вызвать его из VB 6, вам нужночтобы объявить его в модуле следующим образом:

Const SM_REMOTESESSION As Long = &H1000
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Если вы работаете в среде служб терминалов, возвращаемое значение будет ненулевым.

... Но вы должнына самом деле просто исправьте свой центрирующий код, а не пытайтесь обходить его по-разному в зависимости от того, работаете ли вы в сеансе служб терминалов.Это просто сделает для вас больше работы и внесет больше ошибок.К сожалению, я не могу сказать вам, что не так с центрирующим кодом, который вы используете, без его просмотра .

0 голосов
/ 03 июня 2012

У меня была такая же проблема. Насколько я понял, ваша форма помещает то, что вы хотите, туда, где вы хотели (например, в центре экрана). Ваше приложение отлично работает на обычном рабочем столе, но оно будет максимально развернуто в терминальной среде. Если так, я нашел маленький трюк. Поместите таймер в эту форму, сделайте его interval=1 и напишите в timer1_timer событие

Me.WindowState = 0
'then put the movement code like this
formname.Top = (Screen.Height / 2) - (formname.Height / 2) -400 '(400 for form title bar)
formname.Left = (Screen.Width / 2) - (formname.Width / 2)
timer1.interval=0
timer1.enabled=false

Вот и все. capanogli@hotmail.com

...