如何作为启动RDP程序运行时停止初始表单最大化?

时间:2012-03-15 02:42:06

标签: vb6 windows-xp remote-desktop terminal-services

我的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客户端中,您会发现应用程序以最大化的形式开始,其内容位于左上角。

1 个答案:

答案 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