Modification de la zone de travail

5/5 (14 avis)

Vue 4 718 fois - Téléchargée 334 fois

Description

Quand on maximise une fenetre (de n'importe quelle application), celle-ci s'agrandit de façon a occuper tout l'écran, sans la barre des taches...
Pour forcer les fenetres à n'occuper qu'une partie de l'écran, il faut modifier des données via une api que j'ai eu du mal à trouver !!
Il est important de préciser que les modifications sont valables pour toutes les fenetres, puisqu'elles se basent sur ces données pour connaitre la taille à prendre...

Source / Exemple :


'Il faut, 4 textbox (Text1, Text2, Text3, Text4) et 2 CommandButton (Command1, Command2)

Option Explicit
    'déclaration de l'api et de ses constantes
    Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
    Const SPI_GETWORKAREA = 48
    Const SPI_SETWORKAREA = 47
    
    'déclaration de 2 variables types qui récupereront la taille de la zone de travail
    Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Dim RCold As RECT
    Dim RCnew As RECT

Private Sub Command1_Click()
    'on récupere la taille de la zone de travail et si l'api bug (<>1), on le signal
    If SystemParametersInfo(SPI_GETWORKAREA, vbNull, RCold, 0) = 1 Then
        With RCold
            Text1.Text = .Left
            Text2.Text = .Top
            Text3.Text = .Right
            Text4.Text = .Bottom
        End With
    Else
        MsgBox "Une erreur est survenue lors de la récupération des données !", vbOKOnly + vbMsgBoxSetForeground + vbCritical, "Erreur"
    End If
End Sub

Private Sub Command2_Click()
    'on modifie la taille de la zone de travail apres verifier la requete de l'utilisateur, en cas "d'accident" !!
    If MsgBox("Etes-vous sur de vouloir modifier la zone de travail ??" & vbCrLf & "Une mauvaise manipulation peut entrainer de graves conséquences !!", vbQuestion + vbYesNo + vbMsgBoxSetForeground, "Etes-vous sur ?") = vbYes Then
        With RCnew
            .Left = Text1.Text
            .Top = Text2.Text
            .Right = Text3.Text
            .Bottom = Text4.Text
        End With
        Call SystemParametersInfo(SPI_SETWORKAREA, vbNull, RCnew, 0)
    End If
End Sub

Private Sub Form_Load()
    Command1_Click
End Sub

Conclusion :


Je ne pense pas qu'il y aura de suite à ce projet, sauf bien sûr pour corriger d'éventuels bugs !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
30 juin 2008

Très bon prog mais je cherche un moyen pour qu'il change automatiquement le workspace a chaque démarrage sans avoir a lancer le programme et lui appliquer les parrametres que je souhaite.
Pourriez-vous m'expliquer comment faire cela ??

Merci de votre part.
Elangel
Messages postés
1
Date d'inscription
vendredi 4 février 2005
Statut
Membre
Dernière intervention
4 février 2005

probleme identique sur WinXp Pro Sp2.
J ai une application qui redimensionne la zone de travail pour permettre l'affichage d une barre de travail a gauche de l'ecran en permanence en utilisant SystemParametersInfo . Cette application lance d'autres applications maximisees. Au bout d'un certain temps l'application maximisee reoccupe la totalite de l'ecran, et meme en remaximisant et demaximisant le probleme reste.

voila pour un temoignage.
Messages postés
82
Date d'inscription
dimanche 9 septembre 2001
Statut
Membre
Dernière intervention
21 août 2006

je vais essayer de prendre ce probleme en compte, mais il me faudrait des témoignages précis...
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
oui c'est ça

A propos du problème dont j'ai parlé, ça n'arrive pas sur tous les PC (je me suis trompé c'est pas pour tous les XP) mais c'est quand meme à prendre en compte quand on écrit le programme
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
MadM@tt>> Je me disait bien que j'avais vu ça qq part. Ce ne serait pas dans une source pour mettre une barre d'outils sur le bureau ?
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.