Here is how to perform a screenshot and save it to Paint automatically
with a timestamp file name. I dont know if anyone find this useful,
but it shows the mechanics of automating a program on the same
calling thread.

VB Code:
  1. Option Explicit
  2.  
  3. Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
  4. ByVal dwExtraInfo As Long)
  5.  
  6. Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, _
  7. ByVal lpWindowName As String) As Long
  8.  
  9. Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
  10. ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  11.  
  12. Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
  13. ByVal wParam As Long, ByVal lParam As Long) As Long
  14.  
  15. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
  16. ByVal wParam As Long, lParam As Any) As Long
  17.  
  18. Private Const WM_CLOSE As Long = &H10
  19. Private Const WM_QUIT As Long = &H12
  20.  
  21. Private Const VK_SNAPSHOT As Byte = 44
  22. Private Const VK_LCONTROL As Long = &HA2
  23. Private Const VK_V = &H56
  24. Private Const VK_F = &H46
  25. Private Const VK_S = &H53
  26. Private Const VK_MENU = &H12
  27. Private Const KEYEVENTF_KEYUP = &H2
  28. Private Const BM_CLICK As Long = &HF5
  29. Private Const WM_SETTEXT As Long = &HC
  30.  
  31. Private Sub Command1_Click()
  32.  
  33.     Dim strFilePathName As String
  34.     Dim lHwnd As Long
  35.     Dim lHwndC As Long
  36.     Dim lHwndC1 As Long
  37.     Dim lHwndC2 As Long
  38.     Dim dDelay As Date
  39.     Dim sFileName As String
  40.    
  41.     Clipboard.Clear
  42.     DoEvents
  43.     Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
  44.     DoEvents
  45.     'PATH DEPENDS UPON OS (WIN2K AND BELOW - XP = C:\Windows\System32\mspaint.exe)
  46.     strFilePathName = "C:\Winnt\System32\mspaint.exe"
  47.     Shell strFilePathName, vbNormalFocus
  48.     lHwnd = 0
  49.     lHwndC = 0
  50.     'WAIT FOR PAINT TO STARTUP
  51.     Do Until lHwnd <> 0
  52.         DoEvents
  53.         lHwnd = FindWindow("MSPaintApp", "untitled - Paint")
  54.     Loop
  55.     keybd_event VK_LCONTROL, 0, 0, 0  'PRESS CTL
  56.     keybd_event VK_V, 0, 0, 0  'PRESS V
  57.     keybd_event VK_V, 0, KEYEVENTF_KEYUP, 0  'RELEASE V
  58.     keybd_event VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0  'RELEASE CTL
  59.    
  60.     'WAIT FOR PROMPT TO ASK TO ENLARGE CANVAS (WIN2K AND BELOW ONLY)
  61.     lHwnd = 0
  62.     lHwndC = 0
  63.     Do Until lHwnd <> 0
  64.         DoEvents
  65.         lHwnd = FindWindow("#32770", "Paint")
  66.     Loop
  67.     lHwndC = FindWindowEx(lHwnd, 0&, "BUTTON", "&Yes")
  68.     SendMessage lHwndC, BM_CLICK, 0&, 0&
  69.     'WAIT FOR MESSAGEBOX TO CLOSE
  70.     Do Until lHwnd = 0
  71.         DoEvents
  72.         lHwnd = FindWindow("#32770", "Paint")
  73.     Loop
  74.     '/WAIT FOR PROMPT TO ASK TO ENLARGE CANVAS (WIN2K AND BELOW ONLY)
  75.    
  76.     'SAVE FILE
  77.     keybd_event VK_MENU, 0, 0, 0  'PRESS ATL
  78.     keybd_event VK_F, 0, 0, 0  'PRESS F
  79.     keybd_event VK_F, 0, KEYEVENTF_KEYUP, 0  'RELEASE V
  80.     keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0  'RELEASE ATL
  81.     keybd_event VK_S, 0, 0, 0  'PRESS S
  82.     keybd_event VK_S, 0, KEYEVENTF_KEYUP, 0  'RELEASE S
  83.     'ENTER FILENAME TO SAVE AS
  84.     lHwnd = 0
  85.     lHwndC = 0
  86.     Do Until lHwnd <> 0
  87.         DoEvents
  88.         lHwnd = FindWindow("#32770", "Save As")
  89.     Loop
  90.     lHwndC = FindWindowEx(lHwnd, 0&, "COMBOBOXEX32", vbNullString)
  91.     Do Until lHwndC <> 0
  92.         lHwndC = FindWindowEx(lHwnd, 0&, "COMBOBOXEX32", vbNullString)
  93.     Loop
  94.     lHwndC1 = FindWindowEx(lHwndC, 0&, "COMBOBOX", vbNullString)
  95.     Do Until lHwndC1 <> 0
  96.         lHwndC1 = FindWindowEx(lHwndC, 0&, "COMBOBOX", vbNullString)
  97.     Loop
  98.     lHwndC2 = FindWindowEx(lHwndC1, 0&, "EDIT", vbNullString)
  99.     Do Until lHwndC2 <> 0
  100.         lHwndC2 = FindWindowEx(lHwndC1, 0&, "EDIT", vbNullString)
  101.     Loop
  102.     'FORMAT A UNIQUE FILENAME TO AVOID THE OVERWRITE PROMPT MESSAGE
  103.     sFileName = "Screenshot_" & Format(Now, "MM-DD-YYYY_HH-MM-SS_AMPM") & ".bmp"
  104.     'ONE SECOND DELAY TO ALLOW PROCESSING
  105.     dDelay = Now
  106.     Do While DateDiff("s", dDelay, Now) < 1
  107.         DoEvents
  108.     Loop
  109.     'ENTER THE FILENAME TEXT INTO THE COMBO BOX
  110.     SendMessage lHwndC, WM_SETTEXT, 0&, ByVal sFileName
  111.     'ONE SECOND DELAY TO ALLOW SENDMESSAGE PROCESSING
  112.     dDelay = Now
  113.     Do While DateDiff("s", dDelay, Now) < 1
  114.         DoEvents
  115.     Loop
  116.     lHwndC = FindWindowEx(lHwnd, 0&, "BUTTON", "&Save")
  117.     'CLICK THE SAVE BUTTON
  118.     SendMessage lHwndC, BM_CLICK, 0&, 0&
  119.     'ONE SECOND DELAY TO ALLOW SENDMESSAGE PROCESSING
  120.     dDelay = Now
  121.     Do While DateDiff("s", dDelay, Now) < 1
  122.         DoEvents
  123.     Loop
  124.     'WAIT FOR PAINT TO SAVE AND GET NEW HANDEL
  125.     lHwnd = 0
  126.     Do Until lHwnd <> 0
  127.         DoEvents
  128.         lHwnd = FindWindow("MSPaintApp", sFileName & " - Paint")
  129.     Loop
  130.     'QUIT PAINT
  131.     PostMessage lHwnd, WM_QUIT, 0&, 0&
  132.    
  133. End Sub
VB/Outlook Guru