Jump to content

WinPE 10 64bit and GDI+


mdwerne
 Share

Recommended Posts

I'm attempting to cobble together a replacement for the 64bit version of BGInfo that will run within WinPE 10/64. I've located a couple useful threads:

 Between the two, they get me close (see code below), but for some reason GDI+ is not working the same within WinPE as it does in Windows 10. Bottomline is that the "Text" never get's written to WallPaper.

Here is what I have thus far. Any thoughts if any of the GDI commands might not work within WinPE? Any other way to achieve the same result (system information on the wallpaper in WinPE 10)?

#include <GDIPlus.au3>
#include <Date.au3>

_GDIPlus_Startup()

$image = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\WallPaper.bmp")
$imagegraphics = _GDIPlus_ImageGetGraphicsContext($image)
$w = _GDIPlus_ImageGetWidth($image)
$h = _GDIPlus_ImageGetHeight($image)

$whitebrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$fontfamily = _GDIPlus_FontFamilyCreate("Arial")
$font = _GDIPlus_FontCreate($fontfamily, 16)
$stringformat = _GDIPlus_StringFormatCreate()
_GDIPlus_StringFormatSetAlign($stringformat, 2)
$rect = _GDIPlus_RectFCreate(0, $h - $h + 100, $w - 25, $h)
;$rect = _GDIPlus_RectFCreate(100, 100, 200, 200)

_GDIPlus_GraphicsDrawStringEx($imagegraphics, _Now() & @CRLF & @UserName & @CRLF & @ComputerName & @CRLF & @IPAddress1, $font, $rect, $stringformat, $whitebrush)

_GDIPlus_ImageSaveToFile($image, @ScriptDir & "\NewWallPaper.bmp")
_GDIPlus_ImageDispose($image)
_GDIPlus_GraphicsDispose($imagegraphics)
_GDIPlus_BrushDispose($whitebrush)
_GDIPlus_FontFamilyDispose($fontfamily)
_GDIPlus_FontDispose($font)
_GDIPlus_StringFormatDispose($stringformat)
_GDIPlus_Shutdown()

_ChangeDesktopWallpaper(@ScriptDir & "\NewWallPaper.bmp", 2)


Func _ChangeDesktopWallpaper($bmp, $style = 0)
    ;===============================================================================
    ;
    ; Function Name:    _ChangeDesktopWallPaper
    ; Description:      Update WallPaper Settings
    ; Usage:            _ChangeDesktopWallPaper(@WindowsDir & '\' & 'zapotec.bmp',1)
    ; Parameter(s):     $bmp - Full Path to BitMap File (*.bmp)
    ;                   [$style] - 0 = Centered, 1 = Tiled, 2 = Stretched
    ; Requirement(s):   None.
    ; Return Value(s):  On Success - Returns 0
    ;                   On Failure -   -1
    ; Author(s):        FlyingBoz
    ; Thanks:           Larry - DllCall Example - Tested and Working under XPHome and W2K Pro
    ;                   Excalibur - Reawakening my interest in Getting This done.
    ;
    ;===============================================================================

    If Not FileExists($bmp) Then Return -1
    ;The $SPI*  values could be defined elsewhere via #include - if you conflict,
    ; remove these, or add if Not IsDeclared "SPI_SETDESKWALLPAPER" Logic
    Local $SPI_SETDESKWALLPAPER = 20
    Local $SPIF_UPDATEINIFILE = 1
    Local $SPIF_SENDCHANGE = 2
    Local $REG_DESKTOP = "HKEY_CURRENT_USER\Control Panel\Desktop"
    If $style = 1 Then
        RegWrite($REG_DESKTOP, "TileWallPaper", "REG_SZ", 1)
        RegWrite($REG_DESKTOP, "WallpaperStyle", "REG_SZ", 0)
    Else
        RegWrite($REG_DESKTOP, "TileWallPaper", "REG_SZ", 0)
        RegWrite($REG_DESKTOP, "WallpaperStyle", "REG_SZ", $style)
    EndIf

    DllCall("user32.dll", "int", "SystemParametersInfo", _
            "int", $SPI_SETDESKWALLPAPER, _
            "int", 0, _
            "str", $bmp, _
            "int", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE))
    Return 0
EndFunc   ;==>_ChangeDesktopWallpaper

Thanks for your time,

-Mike

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...