Vb6 当作为启动RDP程序运行时,如何停止初始形式最大化?
当在终端服务(远程桌面)会话中启动时,我的VB6应用程序中的启动窗体行为异常,主机和客户端都是XP Pro机器。表单本来应该居中,但实际上它最大化了,内容放在左上角,看起来很奇怪。注意,只有当应用程序路径用于RDP客户端程序选项卡下的“连接时启动以下程序”字段时,才会发生这种情况 显然,如果您正在运行具有TS配置工具的服务器,则有一个解决方案: 但这两台机器都是XP Pro,所以我无法获得TS配置 请参见此处的VB6项目示例:Vb6 当作为启动RDP程序运行时,如何停止初始形式最大化?,vb6,windows-xp,remote-desktop,terminal-services,Vb6,Windows Xp,Remote Desktop,Terminal Services,当在终端服务(远程桌面)会话中启动时,我的VB6应用程序中的启动窗体行为异常,主机和客户端都是XP Pro机器。表单本来应该居中,但实际上它最大化了,内容放在左上角,看起来很奇怪。注意,只有当应用程序路径用于RDP客户端程序选项卡下的“连接时启动以下程序”字段时,才会发生这种情况 显然,如果您正在运行具有TS配置工具的服务器,则有一个解决方案: 但这两台机器都是XP Pro,所以我无法获得TS配置 请参见此处的VB6项目示例: 如果您只是创建上述项目的EXE(正常运行时以非最大化形式运行),并在
如果您只是创建上述项目的EXE(正常运行时以非最大化形式运行),并在RDP客户端的“程序”选项卡下设置“连接时启动以下程序”字段时使用此EXE路径,您会发现应用程序以左上角内容最大化的表单启动。显然,终端服务器正在以函数启动您的启动应用程序,将
SW\u MAXIMIZE
传递给nShowCmd
,而不是SW\u SHOWDEFAULT
您可以在Form\u 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
您是如何计算出SW_MAXIMIZE正在通过的-Process Explorer?如果微软被告知,他们会在更新中修复这件事吗?我猜到了。没有时间用一个引导应用程序来复制它,该应用程序使用
ShellExecute
和SW\u MAXIMIZE
启动TestForRDP.exe
,但是将Form1
的边框样式设置为Fixed Dialog
不起作用——这是一个线索。