Assuming you're using XP.

I've used all the following code in the past but haven't got a chance to test it before posting, but it should work.

To use a jpg as the wallpaper you have to use the active desktop. This routine should cope with both:
VB Code:
  1. Public Sub Wallpaper_Set(WallPaper As String)
  2. 'Setting (WallPaper As String) to "" removes it.
  3.    Dim X As Long
  4.  
  5. 'Note how the string passed to the function is preceeded by the ByVal keyword.
  6. 'BMPs.
  7.    X = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, ByVal WallPaper, SPIF_SENDWININICHANGE Or SPIF_UPDATEINIFILE)
  8. 'JPGs.
  9. 'If it's the active desktop the above fails, so...
  10.    If X = 0 Then
  11. 'Use the code in this thread.
  12. [url]http://www.vbforums.com/showthread.php?t=367342[/url] '<--------      
  13.       ActiveDesktopSetWallpaper
  14.    End If
  15. End Sub

As for the screensaver, you have to write to the registry.
VB Code:
  1. Option Explicit
  2.  
  3. 'Form level code.
  4.  
  5. Private Sub Form_Click()
  6. 'Note. You MAY have to use GetShortPathName when retrieving the screensaver file name.
  7.    modWriteRegSZ HKEY_LOCAL_MACHINE, "Control Panel\Desktop", "SCRNSAVE.EXE", "C:\WINDOWS\system32\MySaver.scr"
  8.    ScreenSaver_Toggle True
  9. End Sub
VB Code:
  1. Option Explicit
  2.  
  3. 'Module level code.
  4.  
  5. 'Toggle the Screensaver on-off
  6. Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
  7.    (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Long, _
  8.    ByVal fuWinIni As Long) As Long
  9. Private Const SPI_SETSCREENSAVEACTIVE = 17
  10.  
  11. 'Registry APIs.
  12. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  13.  
  14. Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" _
  15.    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
  16.    ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, _
  17.    lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
  18.  
  19. Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
  20.    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
  21.    ByVal samDesired As Long, phkResult As Long) As Long
  22.  
  23. Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
  24.    (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
  25.    ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
  26.  
  27. 'Registry manipulation
  28. Public Const HKEY_CURRENT_USER = &H80000001
  29. Private Const REG_OPTION_NON_VOLATILE = 0
  30. Private Const KEY_CREATE_SUB_KEY = &H4
  31. Private Const KEY_SET_VALUE = &H2
  32.  
  33. Private Const REG_SZ = 1
  34. Private Const ERROR_SUCCESS = 0&
  35.  
  36. Public Sub modWriteRegSZ(lngHKey As Long, strSubKey As String, strValueName As String, _
  37.    strValue As String)
  38. 'Create the key and respective REG_SZ value.
  39.    Dim lngRetVal     As Long
  40.    Dim lngKeyHandle  As Long
  41.  
  42. 'Create the key.
  43.    If RegCreateKeyEx(lngHKey, strSubKey, 0&, 0&, REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY, _
  44.       ByVal 0&, lngKeyHandle, lngRetVal) <> ERROR_SUCCESS Then GoTo WRITE_SZ_ERROR
  45. 'Open the new key.
  46.    If RegOpenKeyEx(lngHKey, strSubKey, 0&, KEY_SET_VALUE, lngKeyHandle) <> _
  47.       ERROR_SUCCESS Then GoTo WRITE_SZ_ERROR
  48. 'Create a key and set its value.
  49.    If RegSetValueEx(lngKeyHandle, strValueName, 0&, REG_SZ, ByVal strValue, Len(strValue) + 1) _
  50.       <> ERROR_SUCCESS Then GoTo WRITE_SZ_ERROR
  51. 'Close the key.
  52.    Call RegCloseKey(lngKeyHandle)
  53. 'Exit.
  54.    Exit Sub
  55. WRITE_SZ_ERROR:
  56. 'Close the key.
  57.    Call RegCloseKey(lngKeyHandle)
  58. 'Time for any error handling.
  59.    MsgBox "Error in modWriteRegSZ"
  60. End Sub
  61.  
  62. Public Sub ScreenSaver_Toggle(Active As Boolean)
  63. 'To Activate Screen Saver, set active to true.
  64. 'To deactivate, set active to false.
  65.    Dim lActiveFlag As Long
  66.  
  67.    lActiveFlag = IIf(Active, 1, 0)
  68.    Call SystemParametersInfo SPI_SETSCREENSAVEACTIVE, lActiveFlag, 0, 0
  69. End Sub