2012-03-15 1 views
2

Le formulaire de démarrage de mon application VB6 se comporte étrangement lorsqu'il est démarré dans une session Terminal Services (Remote Desktop), l'hôte et le client étant des machines XP Pro. La forme est destinée à être centrée mais elle maximise réellement et son contenu va en haut à gauche et il semble très étrange. Notez que cela se produit uniquement lorsque le chemin de l'application est utilisé pour le champ "Démarrer le programme suivant sur la connexion" sous l'onglet Programme du client RDP.Comment arrêter la maximisation de la forme initiale lors de l'exécution en tant que programme RDP de démarrage?

Apparemment, il y a une solution si vous utilisez le serveur qui a TS outil de configuration: http://www.windows-server-answers.com/microsoft/Windows-Terminal-Services/29117908/start-program-on-connection--it-isnt-centered.aspx

Mais les deux machines sont XP Pro, donc je ne peux pas obtenir TS Configuration.

Voir exemple de projet VB6 ici: Link to zip file on Google Docs

Si vous simplement créer un fichier EXE du projet ci-dessus (qui fonctionne avec une forme non maximisé centrée lorsqu'il est exécuté normalement), et utilisez ce chemin EXE lors du réglage du « Démarrer le programme suivant sur la connexion "sous l'onglet Programme dans le client RDP, vous trouverez que l'application commence par le formulaire maximisé avec son contenu dans le coin supérieur gauche.

Répondre

3

Apparemment Terminal Server démarre votre application de démarrage avec la fonction ShellExecute, en passant SW_MAXIMIZE pour nShowCmd au lieu de SW_SHOWDEFAULT.

Vous pouvez le fixer avec une simple entaille dans l'événement comme celui-ci 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

Comment avez-vous pu travailler que SW_MAXIMIZE est passé - Process Explorer? Est-ce quelque chose que MS corrigerait dans une mise à jour si on leur en parlait? – CJ7

+0

Je l'ai deviné. N'a pas eu le temps de le reproduire avec une application bootstrap qui lance 'TestForRDP.exe' en utilisant' ShellExecute' avec 'SW_MAXIMIZE' mais en paramétrant le style de bordure de' Form1' à 'Fixed Dialog' ne fonctionnait pas - c'est un indice. – wqw

Questions connexes