Tested with 7,8 & 10
Code: Select all
Procedure LoadPictureFile(image,File.s)
hFile = CreateFile_(File, #GENERIC_READ, 0, #Null, #OPEN_EXISTING, 0, #Null)
If hFile
dwFileSize = GetFileSize_(hFile, #Null)
HGLOBAL = GlobalAlloc_(#GMEM_MOVEABLE, dwFileSize)
If HGLOBAL
pvData = GlobalLock_(HGLOBAL)
bRead = ReadFile_(hFile, pvData, dwFileSize, @dwBytesRead, #Null)
GlobalUnlock_(HGLOBAL)
If bRead
If CreateStreamOnHGlobal_(HGLOBAL, #True, @pstm.IStream) = #S_OK
If OleLoadPicture_(pstm, dwFileSize, #False,?IID_IPicture, @Bild.IPicture) = #S_OK
Bild\get_Height(@Height)
Bild\get_Width(@Width)
ExamineDesktops()
result = CreateImage(image,DesktopWidth(0),DesktopHeight(0))
If result
hDC = StartDrawing(ImageOutput(image))
Bild\Render(hDC,0,DesktopHeight(0),DesktopWidth(0),-DesktopHeight(0),0,0,Width,Height,0)
StopDrawing()
EndIf
Bild\Release()
EndIf
pstm\Release()
EndIf
EndIf
EndIf
CloseHandle_(hFile)
EndIf
ProcedureReturn result
EndProcedure
img$ = Space(#MAX_PATH)
SystemParametersInfo_(#SPI_GETDESKWALLPAPER, #MAX_PATH, @img$, 0)
image = LoadPictureFile(1,img$)
SaveImage(1,GetHomeDirectory()+"test.bmp",#PB_ImagePlugin_BMP)
DataSection
IID_IPicture:
Data.l $7BF80980
Data.w $BF32,$101A
Data.b $8B,$BB,$00,$AA,$00,$30,$0C,$AB
EndDataSection