Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

changement de resolution (WMI/Win32 systeme.management)

7 réponses
Avatar
fabrice .
bonjour,

j'aimerais pouvoir changer la resolution d'un poste de travail par la
programmation .net (vb par example, passer de 1024*768 en 800*600 pour mon
prog puis restaurer par la suite le 1024*768)

apres quelques recherche le remplacement de l'API changedisplaysetting par
managementclass semble le mieux adapter

liens
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/win32map.asp

API = ChangeDisplaySettings

.NET Framework API
=System.Management.ManagementClass("Win32_VideoController")

oui car j'ai pas reussit a importer l'api a cause du any --> remplacer par
sting dans .net ... enfin bref

je recherche comment faire de l'aide please.....


pour info suplementaire (ce que j'ai fait jusque ici)

'pour conaitre la definition d'origine
dim x,y as integer
x=Screen.PrimaryScreen.Bounds.Width
y=Screen.PrimaryScreen.Bounds.height

'et pour normelement modifier les parametre ou les lire (bien sur en
important le dll management
dim reso As New
ManagementObject("Win32_VideoController.DeviceID=""VideoController1""")
reso.Get()

console.writeline(reso("CurrentHorizontalResolution"))

console.writeline(reso("CurrentVerticalResolution"))

ca marche super jusque ici
mais la je n'arrive pas a mettre un truc du style

reso("CurrentHorizontalResolution") = 800

reso("CurrentVerticalResolution") = 600

reso.Put

comment faire pour modifer les parametres de Win32_VideoController ou autre
!!!

Ou alors une autre methode pour changer cette foutus resolution en VB.NET

7 réponses

Avatar
fabrice .
merci pour ton aide mais ce que tu me donne est pour vba et non pour du
point net il utilise les api's qui
dans ce cas ne peuvent etre utiliser avec .net pour le 1er liens

le deuxieme est deja plus interessant j'ai deja ce liens depuis quelques
jour mes le liens pour telecharger le source ne marches pas (enfin chez moi)
si ca marche chez vous dite moi le.

et j'ai pas reussit a faire marcher avec vb.net les peu d'infos qu'il donne.

donc tous les idees sont bonne et merci pour ce debut d'aide



"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
Regarde ces liens :

http://forum.laboratoire-microsoft.org/ftopic27705.html

et




http://www.google.fr/search?qÊche:X3R_bxnP0o4J:www.codeproject.net/csharp/CSDynamicScrRes.asp+ChangeDisplaySettings+%2Bdotnet&hl=fr


A+

Thomas LEBRUN

"fabrice ." wrote:

> bonjour,
>
> j'aimerais pouvoir changer la resolution d'un poste de travail par la
> programmation .net (vb par example, passer de 1024*768 en 800*600 pour


mon
> prog puis restaurer par la suite le 1024*768)
>
> apres quelques recherche le remplacement de l'API changedisplaysetting


par
> managementclass semble le mieux adapter
>
> liens
>


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/win32map.asp
>
> API = ChangeDisplaySettings
>
> ..NET Framework API
> =System.Management.ManagementClass("Win32_VideoController")
>
> oui car j'ai pas reussit a importer l'api a cause du any --> remplacer


par
> sting dans .net ... enfin bref
>
> je recherche comment faire de l'aide please.....
>
>
> pour info suplementaire (ce que j'ai fait jusque ici)
>
> 'pour conaitre la definition d'origine
> dim x,y as integer
> x=Screen.PrimaryScreen.Bounds.Width
> y=Screen.PrimaryScreen.Bounds.height
>
> 'et pour normelement modifier les parametre ou les lire (bien sur en
> important le dll management
> dim reso As New
> ManagementObject("Win32_VideoController.DeviceID=""VideoController1""")
> reso.Get()
>
> console.writeline(reso("CurrentHorizontalResolution"))
>
> console.writeline(reso("CurrentVerticalResolution"))
>
> ca marche super jusque ici
> mais la je n'arrive pas a mettre un truc du style
>
> reso("CurrentHorizontalResolution") = 800
>
> reso("CurrentVerticalResolution") = 600
>
> reso.Put
>
> comment faire pour modifer les parametres de Win32_VideoController ou


autre
> !!!
>
> Ou alors une autre methode pour changer cette foutus resolution en


VB.NET
>
>
>
>
>
>
>
>
>


Avatar
Bismark Prods
Ah c'est dommage parce que l'exemple de CodeProject marche superbement bien
! C'est super genial !

lol ...

"fabrice ." a écrit dans le message de
news:cfu4cl$3i2$
merci pour ton aide mais ce que tu me donne est pour vba et non pour du
point net il utilise les api's qui
dans ce cas ne peuvent etre utiliser avec .net pour le 1er liens

le deuxieme est deja plus interessant j'ai deja ce liens depuis quelques
jour mes le liens pour telecharger le source ne marches pas (enfin chez


moi)
si ca marche chez vous dite moi le.

et j'ai pas reussit a faire marcher avec vb.net les peu d'infos qu'il


donne.

donc tous les idees sont bonne et merci pour ce debut d'aide



"Lebrun Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
> Regarde ces liens :
>
> http://forum.laboratoire-microsoft.org/ftopic27705.html
>
> et
>
>



http://www.google.fr/search?qÊche:X3R_bxnP0o4J:www.codeproject.net/csharp/CSDynamicScrRes.asp+ChangeDisplaySettings+%2Bdotnet&hl=fr
>
>
> A+
>
> Thomas LEBRUN
>
> "fabrice ." wrote:
>
> > bonjour,
> >
> > j'aimerais pouvoir changer la resolution d'un poste de travail par la
> > programmation .net (vb par example, passer de 1024*768 en 800*600 pour
mon
> > prog puis restaurer par la suite le 1024*768)
> >
> > apres quelques recherche le remplacement de l'API changedisplaysetting
par
> > managementclass semble le mieux adapter
> >
> > liens
> >



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/win32map.asp
> >
> > API = ChangeDisplaySettings
> >
> > ..NET Framework API
> > =System.Management.ManagementClass("Win32_VideoController")
> >
> > oui car j'ai pas reussit a importer l'api a cause du any --> remplacer
par
> > sting dans .net ... enfin bref
> >
> > je recherche comment faire de l'aide please.....
> >
> >
> > pour info suplementaire (ce que j'ai fait jusque ici)
> >
> > 'pour conaitre la definition d'origine
> > dim x,y as integer
> > x=Screen.PrimaryScreen.Bounds.Width
> > y=Screen.PrimaryScreen.Bounds.height
> >
> > 'et pour normelement modifier les parametre ou les lire (bien sur en
> > important le dll management
> > dim reso As New
> >


ManagementObject("Win32_VideoController.DeviceID=""VideoController1""")
> > reso.Get()
> >
> > console.writeline(reso("CurrentHorizontalResolution"))
> >
> > console.writeline(reso("CurrentVerticalResolution"))
> >
> > ca marche super jusque ici
> > mais la je n'arrive pas a mettre un truc du style
> >
> > reso("CurrentHorizontalResolution") = 800
> >
> > reso("CurrentVerticalResolution") = 600
> >
> > reso.Put
> >
> > comment faire pour modifer les parametres de Win32_VideoController ou
autre
> > !!!
> >
> > Ou alors une autre methode pour changer cette foutus resolution en
VB.NET
> >
> >
> >
> >
> >
> >
> >
> >
> >





-- début de la classe --

Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential)> _
Public Structure DEVMODE1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:2)> Public dmDeviceName As
String
Public dmSpecVersion As Short
Public dmDriverVersion As Short
Public dmSize As Short
Public dmDriverExtra As Short
Public dmFields As Integer
Public dmOrientation As Short
Public dmPaperSize As Short
Public dmPaperLength As Short
Public dmPaperWidth As Short
Public dmScale As Short
Public dmCopies As Short
Public dmDefaultSource As Short
Public dmPrintQuality As Short
Public dmColor As Short
Public dmDuplex As Short
Public dmYResolution As Short
Public dmTTOption As Short
Public dmCollate As Short
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:2)> Public dmFormName As
String
Public dmLogPixels As Short
Public dmBitsPerPel As Short
Public dmPelsWidth As Integer
Public dmPelsHeight As Integer
Public dmDisplayFlags As Integer
Public dmDisplayFrequency As Integer
Public dmICMMethod As Integer
Public dmICMIntent As Integer
Public dmMediaType As Integer
Public dmDitherType As Integer
Public dmReserved1 As Integer
Public dmReserved2 As Integer
Public dmPanningWidth As Integer
Public dmPanningHeight As Integer
End Structure
Public Class User_32
<DllImport("user32.dll")> _
Public Shared Function EnumDisplaySettings(ByVal deviceName As String, ByVal
modeNum As Integer, ByRef devMode As DEVMODE1) As Integer
End Function
<DllImport("user32.dll")> _
Public Shared Function ChangeDisplaySettings(ByRef devMode As DEVMODE1,
ByVal flags As Integer) As Integer
End Function

Public Const ENUM_CURRENT_SETTINGS As Integer = -1
Public Const CDS_UPDATEREGISTRY As Integer = &H1
Public Const CDS_TEST As Integer = &H2
Public Const DISP_CHANGE_SUCCESSFUL As Integer = 0
Public Const DISP_CHANGE_RESTART As Integer = 1
Public Const DISP_CHANGE_FAILED As Integer = -1
End Class

Public Class CResolution
Public Sub New(ByVal a As Integer, ByVal b As Integer)
Dim myScreen As Screen = Screen.PrimaryScreen
Dim iWidth As Integer = a
Dim iHeight As Integer = b
Dim dm As DEVMODE1 = New DEVMODE1
dm.dmDeviceName = New String(New Char(32) {})
dm.dmFormName = New String(New Char(32) {})
dm.dmSize = CType(Marshal.SizeOf(dm), Short)
If (User_32.EnumDisplaySettings(Nothing, User_32.ENUM_CURRENT_SETTINGS, dm)
<> 0) Then
dm.dmPelsWidth = iWidth
dm.dmPelsHeight = iHeight
Dim iRet As Integer = User_32.ChangeDisplaySettings(dm, User_32.CDS_TEST)
If (iRet = User_32.DISP_CHANGE_FAILED) Then
MessageBox.Show("Unable to process your request")
MessageBox.Show("Description: Unable To Process Your Request. Sorry For This
Inconvenience.", "Information", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Else
iRet = User_32.ChangeDisplaySettings(dm, User_32.CDS_UPDATEREGISTRY)
Select Case iRet
Case User_32.DISP_CHANGE_SUCCESSFUL
Exit Select
'successfull change
Case User_32.DISP_CHANGE_RESTART
MessageBox.Show("Description: You Need To Reboot For The Change To Happen.n
If You Feel Any Problem After Rebooting Your MachinenThen Try To Change
Resolution In Safe Mode.", "Information", MessageBoxButtons.OK,
MessageBoxIcon.Information)
Exit Select
'windows 9x series you have to restart
Case Else
MessageBox.Show("Description: Failed To Change The Resolution.",
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Exit Select
'failed to change
End Select
End If
Else
MessageBox.Show("Problemo")
End If
End Sub
End Class

-- fin de la classe --
Avatar
Sebastien
"Bismark Prods" <xanaia#nospam#@urbanet.ch> a écrit dans le message de
news:
Ah c'est dommage parce que l'exemple de CodeProject marche superbement


bien
! C'est super genial !



Pfff...
Super genial pour changer la resolution d'écran (!)
T'as pas du trop lire la Msdn, toi.
Ah, ces gamins....
Avatar
fabrice .
merci pour le bout de code c'est super ca marche au poil....



sinon pour sebastient j'ai bien lue le Msdn est manque de pot c'est pas
debans(au lieu de faire des remarques ...
tu devrait plutot aporter ton aide car dessus il conseil de changer la form
en fonction de la definition mais pas l'inverse.
maintenant si toi tu as trouver autre chose fais en partager tous le monde
ca seras mieux que des gaminerie comme tu dis (pour info je suis loin d'etre
un gamain comme tu dis et ca fais plus de 25 ans que je fais de la
programmation informatique....)

"Sebastien" a écrit dans le message de
news:

Pfff...
Super genial pour changer la resolution d'écran (!)
T'as pas du trop lire la Msdn, toi.
Ah, ces gamins....




Avatar
Bismark Prods
juste un bémol, le changement de résolution par cette méthode, ne rend pas
les réglages fins. Par exemple, mon écran après être revenu à sa résolution
d'origine était légérement décalé. Ca peut être un vrai problème pour un
utilisateur lambda.

Bismark

"fabrice ." a écrit dans le message de
news:cfv84a$f1p$
merci pour le bout de code c'est super ca marche au poil....



sinon pour sebastient j'ai bien lue le Msdn est manque de pot c'est pas
debans(au lieu de faire des remarques ...
tu devrait plutot aporter ton aide car dessus il conseil de changer la


form
en fonction de la definition mais pas l'inverse.
maintenant si toi tu as trouver autre chose fais en partager tous le monde
ca seras mieux que des gaminerie comme tu dis (pour info je suis loin


d'etre
un gamain comme tu dis et ca fais plus de 25 ans que je fais de la
programmation informatique....)

"Sebastien" a écrit dans le message de
news:
>
> Pfff...
> Super genial pour changer la resolution d'écran (!)
> T'as pas du trop lire la Msdn, toi.
> Ah, ces gamins....
>
>




Avatar
fabrice .
ok merci je vais tenir compte de cette remarque et faire des test un peu
plus pousser


"Bismark Prods" <xanaia#nospam#@urbanet.ch> a écrit dans le message de
news:
juste un bémol, le changement de résolution par cette méthode, ne rend pas
les réglages fins. Par exemple, mon écran après être revenu à sa


résolution
d'origine était légérement décalé. Ca peut être un vrai problème pour un
utilisateur lambda.

Bismark

"fabrice ." a écrit dans le message de
news:cfv84a$f1p$
> merci pour le bout de code c'est super ca marche au poil....
>
>
>
> sinon pour sebastient j'ai bien lue le Msdn est manque de pot c'est pas
> debans(au lieu de faire des remarques ...
> tu devrait plutot aporter ton aide car dessus il conseil de changer la
form
> en fonction de la definition mais pas l'inverse.
> maintenant si toi tu as trouver autre chose fais en partager tous le


monde
> ca seras mieux que des gaminerie comme tu dis (pour info je suis loin
d'etre
> un gamain comme tu dis et ca fais plus de 25 ans que je fais de la
> programmation informatique....)
>
> "Sebastien" a écrit dans le message de
> news:
> >
> > Pfff...
> > Super genial pour changer la resolution d'écran (!)
> > T'as pas du trop lire la Msdn, toi.
> > Ah, ces gamins....
> >
> >
>
>




Avatar
Sebastien
"fabrice ." a écrit dans le message de
news:cfv84a$f1p$
merci pour le bout de code c'est super ca marche au poil....



sinon pour sebastient j'ai bien lue le Msdn est manque de pot c'est pas
debans



Apprends à chercher...

(pour info je suis loin d'etre
un gamain comme tu dis et ca fais plus de 25 ans que je fais de la
programmation informatique....)



Mouarrrrrrrrfffffffff !!!
Et moi je suis le fils de l'abbé Pierre...