我的VB6应用程序中的启动表单在终端服务(远程桌面)会话中启动时表现奇怪,主机和客户端都是XP专业版机器。表单意味着居中,但它实际上最大化,其内容位于左上角,看起来很奇怪。请注意,这仅在应用程序路径用于RDP客户端中“程序”选项卡下的“在连接时启动以下程序”字段时才会发生。
如果您正在运行具有TS配置工具的服务器,显然有一个解决方案:http://www.windows-server-answers.com/microsoft/Windows-Terminal-Services/29117908/start-program-on-connection--it-isnt-centered.aspx
但这两台机器都是XP专业版,所以我无法获得TS配置。
在此处查看示例VB6项目:Link to zip file on Google Docs
如果您只是创建上述项目的EXE(在正常运行时以居中的非最大化形式运行),并在设置“程序”选项卡下的“在连接时启动以下程序”字段时使用此EXE路径在RDP客户端中,您会发现应用程序以最大化的形式开始,其内容位于左上角。
答案 0 :(得分:3)
显然,终端服务器正在使用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