none
VB.NET Adobe Reader отправка SendKeys для автоматизации сохранения. RRS feed

  • Вопрос

  • Добрый день, не получается отправить "горячие клавиши" для сохранения(ctrl+S) документа и для печати(ctrl+P) в Adobe Reader. Для увеличения масштаба все работает - не пойму в чем отличии.

        <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="SetForegroundWindow")> _
        Public Shared Function SetForegroundWindow(<System.Runtime.InteropServices.InAttribute()> ByVal hWnd As System.IntPtr) As <System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)> Boolean
        End Function       
    
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
           'значение окна получаю из Spy++ 
            Dim hWnd As IntPtr = &H1A0338
            SetForegroundWindow(hWnd)
            'увеличить масштаб - работает
            SendKeys.SendWait("^{+}")
            'сохранить - не работает
            SendKeys.SendWait("^S")
    End Sub

    Заранее благодарю за ответ.


    • Изменено monteloro 29 мая 2014 г. 19:54

Ответы

  • SendKeys не получилось, получилось:

        <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="keybd_event")> _
        Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As UInteger)
        End Sub
        <System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint:="SetForegroundWindow")> _
        Public Shared Function SetForegroundWindow(<System.Runtime.InteropServices.InAttribute()> ByVal hWnd As System.IntPtr) As <System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)> Boolean
        End Function
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Const KEYEVENTF_EXTENDEDKEY = &H1
            Const KEYEVENTF_KEYUP = &H2
            Const VK_CONTROL = &H11
            Const VK_SHIFT = &H10
            Const VK_S = &H53
            'поиск окна открытого PDF файла 
            Dim hWndPDF As IntPtr = FindWindow(vbNullString, "Side.pdf")
            SetForegroundWindow(hWndPDF)
            ' Simulating a Ctrl+S keystroke
            keybd_event(VK_CONTROL, 0, 0, 0)                       ' Ctrl Press
            keybd_event(VK_S, 0, 0, 0)                             ' 'S' Press
            keybd_event(VK_S, 0, KEYEVENTF_KEYUP, 0)               ' 'S' Release
            keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)         ' Ctrl Release
        End Sub