View difference between Paste ID: ASMgucCb and nLj9trn2
SHOW: | | - or go back to the newest paste.
1
Function New-BMPfileWithText {
2
[cmdletbinding(PositionalBinding=$false)]
3
PARAM ([Parameter(Mandatory=$true)] [string] $path="$home\foo.bmp",
4
[Parameter(Mandatory=$true)] [string] $text='text here',
5
[Parameter(Mandatory=$false)] [alias('bgColor')] [system.drawing.color] $bgColour = [system.drawing.color]::Blue,
6
[Parameter(Mandatory=$false)] [alias('fgColor')] [system.drawing.color] $fgColour = [system.drawing.color]::White,
7
[Parameter(Mandatory=$false)] [System.Drawing.Size] $BMPsize=[System.Drawing.Size]::new(270,61),
8
[Parameter(Mandatory=$false)] [int] $fontSize=10
9
)
10
 
11
Add-Type -AssemblyName System.Drawing
12
 
13
$bmp = new-object -TypeName System.Drawing.Bitmap -Argumentlist ($BMPsize.Width, $BMPsize.Height)
14
$font = new-object -TypeName System.Drawing.Font -Argumentlist ('Consolas',$fontSize)
15
 
16
$bg = New-Object -TypeName Drawing.SolidBrush -ArgumentList ($bgColour)
17
$fg = New-Object -TypeName Drawing.SolidBrush -ArgumentList ($fgColour)
18
 
19
$graphics = [System.Drawing.Graphics]::FromImage($bmp)
20
$x=0
21
$y=0
22
$graphics.FillRectangle($bg,$x,$y,$bmp.Width,$bmp.Height)
23
$graphics.DrawString($text,$font,$fg,10,10)
24
$graphics.Dispose()
25
 
26
if (Test-Path -Path $path) { Remove-Item -Path $path }
27
$bmp.Save($path)
28
 
29
Get-Item -Path $path
30
 
31
}
32
 
33
 
34
#Set-WindowsWallpaper
35
Add-Type -AssemblyName System.Drawing
36
 
37
Add-Type @"
38
using System;
39
using System.Runtime.InteropServices;
40
using Microsoft.Win32;
41
namespace Wallpaper
42
{
43
public enum Style : int
44
{
45
Tile, Center, Stretch, NoChange
46
}
47
 
48
public class Setter {
49
public const int SetDesktopWallpaper = 0x14; // SPI_SETDESKWALLPAPER
50
public const int UpdateIniFile = 0x01; // SPIF_UPDATEINIFILE
51
public const int SendWinIniChange = 0x02; // SPIF_SENDWININICHANGE
52
 
53
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
54
private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
55
 
56
public static void SetWallpaper ( string path, Wallpaper.Style style ) {
57
SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
58
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
59
switch( style )
60
{
61
case Style.Stretch :
62
key.SetValue(@"WallpaperStyle", "2") ;
63
key.SetValue(@"TileWallpaper", "0") ;
64
break;
65
case Style.Center :
66
key.SetValue(@"WallpaperStyle", "1") ;
67
key.SetValue(@"TileWallpaper", "0") ;
68
break;
69
case Style.Tile :
70
key.SetValue(@"WallpaperStyle", "1") ;
71
key.SetValue(@"TileWallpaper", "1") ;
72
break;
73
case Style.NoChange :
74
break;
75
}
76
key.Close();
77
}
78
}
79
}
80
"@
81
 
82
 
83
 
84
### args for New-BMPfileWithText
85
$path="$HOME\Test.bmp"
86
$text="$ENV:COMPUTERNAME"
87
$bgcolor = [drawing.color]::DarkOrange
88
$bgcolor = [drawing.color]::DarkSlateBlue
89
 
90
$fontsize=9
91
$bmpsize=New-Object -TypeName System.Drawing.Size -ArgumentList 230,70
92
###
93
 
94
# Generate the BMP file
95
$BMPfile=New-BMPfileWithText -path $path -Text $text -bgColour $bgcolor -fontsize $fontsize -BMPsize $bmpsize
96
 
97
 
98
### now pass the generated BMP file and set the wallpaper.
99
$Tile = 0
100
$Center = 1
101
$Stretch = 2
102
$NoChange = 3
103
 
104
[Wallpaper.Setter]::SetWallpaper( $BMPfile.Fullname, $Tile)