Advertisement
Thunder-Menu

LoadSaveColorPositionSize.ps1

Apr 10th, 2023 (edited)
984
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PowerShell 2.85 KB | Source Code | 0 0
  1. Add-Type -AssemblyName System.Windows.Forms
  2. Add-Type -AssemblyName System.Drawing
  3.  
  4. $ConfigFile = "config.json"
  5.  
  6. $form = New-Object System.Windows.Forms.Form
  7. $colorDialog = New-Object System.Windows.Forms.ColorDialog
  8.  
  9. $form.Text = "Ma fenêtre"
  10. $form.Width = 600
  11. $form.Height = 400
  12. $form.StartPosition = "CenterScreen"
  13. $form.FormBorderStyle = "Sizable"
  14. $form.MaximizeBox = $false
  15.  
  16. # Charge la position et la taille du formulaire à partir du fichier de configuration
  17. function Load-FormDimensions {
  18.     if (Test-Path $ConfigFile) {
  19.         $config = Get-Content $ConfigFile | ConvertFrom-Json
  20.         $form.Width = $config.width
  21.         $form.Height = $config.height
  22.         $form.BackColor = [System.Drawing.Color]::FromArgb($config.color.A, $config.color.R, $config.color.G, $config.color.B)
  23.         $form.Location = New-Object System.Drawing.Point($config.position.x, $config.position.y)
  24.     }
  25. }
  26. # Sauvegarde la position et la taille du formulaire dans le fichier de configuration
  27. function Save-FormDimensions {
  28.     $config = @{
  29.         width = $form.Width
  30.         height = $form.Height
  31.         color = @{
  32.             A = $form.BackColor.A
  33.             R = $form.BackColor.R
  34.             G = $form.BackColor.G
  35.             B = $form.BackColor.B
  36.         }
  37.         position = @{
  38.             x = $form.Location.X
  39.             y = $form.Location.Y
  40.         }
  41.     } | ConvertTo-Json
  42.     $config | Out-File $ConfigFile
  43. }
  44.  
  45.  
  46. # Charge la position et la taille du formulaire au démarrage
  47. $timer = New-Object System.Windows.Forms.Timer
  48. $timer.Interval = 500
  49. $timer.Add_Tick({
  50.     Load-FormDimensions
  51.     $timer.Stop()
  52. })
  53. $timer.Start()
  54.  
  55. $timer2 = New-Object System.Windows.Forms.Timer
  56. $timer2.Interval = 1000
  57. $timer2.Add_Tick({
  58.  
  59. # Sauvegarde la position et la couleur lorsque la couleur de fond est modifiée
  60. $handler_BackColorChanged = {
  61.     Save-FormDimensions
  62. }
  63.  
  64. $form.Add_BackColorChanged($handler_BackColorChanged)
  65.  
  66. # Sauvegarde la position et la taille lorsque le formulaire est redimensionné
  67. $handler_ResizeEnd = {
  68.     Save-FormDimensions
  69. }
  70.  
  71. $form.Add_ResizeEnd($handler_ResizeEnd)
  72.  
  73. # Sauvegarde la position et la taille lorsque le formulaire est déplacé
  74. $handler_Move = {
  75.     Save-FormDimensions
  76. }
  77.  
  78. $form.Add_Move($handler_Move)
  79.     $timer2.Stop()
  80. })
  81. $timer2.Start()
  82.  
  83. # Bouton pour ouvrir la palette de couleurs
  84. $paletteButton = New-Object System.Windows.Forms.Button
  85. $paletteButton.Text = "Palette"
  86. $paletteButton.Location = New-Object System.Drawing.Point(($form.Width - $paletteButton.Width - 10), 10)
  87. $paletteButton.Anchor = [System.Windows.Forms.AnchorStyles]::Right
  88. $paletteButton.Add_Click({
  89.     $result = $colorDialog.ShowDialog()
  90.     if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
  91.         $form.BackColor = $colorDialog.Color
  92.     }
  93. })
  94.  
  95. $form.Controls.Add($paletteButton)
  96.  
  97. $form.ShowDialog() | Out-Null
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement