no, no son iguales xD, le saque el "else" de la comprobacion de de formato y que guarde el archivo desde el picture (esto es lo mismo xD) pero bueno yo le brinde una solucion para ese code, porque sino puedo poner otro xD, pero el quiere solucionar el problema de su code
me tome el trabajo de hacerte un ejemplo con hook xD espero que te sirva
En un Form (Form1):Private Sub Form_Load()
MouseHook True
End Sub
Sub MouseHook(ByVal ONOFF As Boolean)
Select Case ONOFF
Case "1"
IdProc = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc, App.hInstance, 0)
Case "0"
If IdProc <> 0 Then
Call UnhookWindowsHookEx(IdProc)
IdProc = 0
End If
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
MouseHook False
End Sub
En un Modulo:Option Explicit
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const WH_MOUSE_LL = 14
Public IdProc As Long
Public Function MouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If GetAsyncKeyState(1) = -32767 Then
Call Capturar_Guardar("c:\imagen.bmp")
End If
End Function
Public Sub Capturar_Guardar(Path As String)
Clipboard.Clear
Call keybd_event(44, 2, 0, 0)
DoEvents
If Clipboard.GetFormat(vbCFBitmap) Then
Form1.Picture1.Picture = Clipboard.GetData(vbCFBitmap)
SavePicture Form1.Picture1.Picture, Path
End If
End Sub
Bueno lo trate de hacer lo mas compacto y sencillo posible, si hay algo mal o tiene una mejor idea me dice xD
Suerte!