2010-04-23 2 views
2

Je veux changer la largeur maximale imposée de Windows qu'une fenêtre peut être redimensionnée, pour la fenêtre d'une application externe (pas la fenêtre de mon programme C#/WinForms).Existe-t-il un moyen de modifier la largeur maximale d'une fenêtre sans utiliser le message WM_GETMINMAXINFO?

La documentation de GetSystemMetrics pour SM_CXMAXTRACK dit:. « La largeur maximale par défaut d'une fenêtre qui a une légende et les bordures de dimensionnement, en pixels Cette mesure fait référence à l'ensemble du bureau, l'utilisateur ne peut pas faire glisser le cadre de la fenêtre à une taille. plus grande que ces dimensions Une fenêtre peut remplacer cette valeur en traitant le message WM_GETMINMAXINFO. "

Existe-t-il un moyen de modifier cette valeur SM_CXMAXTRACK (soit pour l'ensemble du système ou pour une fenêtre particulière), sans traiter le message WM_GETMINMAXINFO? Peut-être une fonction non documentée, un paramètre de registre, etc.?

(Ou: La documentation de MINMAXINFO.ptMaxTrackSize indique: "Cette valeur est basée sur la taille de l'écran virtuel et peut être obtenue par programmation à partir des métriques SM_CXMAXTRACK et SM_CYMAXTRACK." Peut-être existe-t-il un moyen de changer la taille de l'écran virtuel?)

Merci

Répondre

3

les deux seuls moyens que je connais de limiter la taille d'une fenêtre est en manipulant WM_GETMINMAXINFO, ou en modifiant les valeurs transmises dans la structure WINDOWPOS en WM_WINDOWPOSCHANGING. Ces deux méthodes impliquent d'être en mesure d'intercepter et de gérer les messages pour la fenêtre. Il n'y a pas de paramètre externe pour limiter la taille d'une fenêtre autant que je sache. Si vous n'avez pas le code source de l'autre application, la seule chose que je pourrais suggérer est d'écrire un programme qui injecte du code dans l'autre application (via SetWindowsHookEx ou CreateRemoteThread), puis sous-classe la fenêtre et gérer ces messages.

Questions connexes