Skip to Content

Hello community,

in context of the posting from mic jones here I check different ways of SendKey from an Excel VBA application to a session window.

At first I identfiy the handle of the session window and set it in foreground with the following code

Private Declare Function SetForegroundWindow Lib "user32.dll" _
  (ByVal hWnd As Long) As Long

hWnd = Session.ActiveWindow.Handle
SetForegroundWindow hWnd

 

After that I use different methods of SendKeys:

  1. Standard VBA SendKeys, but it doesn’t work.

    SendKeys “+{DOWN}”, True

  2. SendKeys via SendMessage, but it doesn’t work.

    Private Declare Function SendMessageA Lib “user32.dll” _
      (ByVal hWnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long

    SendMessageA hWnd, &H100, vbKeyShift, 0
    SendMessageA hWnd, &H100, vbKeyDown, 0
    SendMessageA hWnd, &H101, vbKeyDown, 0
    SendMessageA hWnd, &H101, vbKeyShift, 0
    DoEvents

  3. SendKeys via keybd_event, but it doesn’t work.

    Private Declare Sub keybd_event Lib “user32.dll” _
      (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

    keybd_event &H10, 0, 0, 0
    keybd_event &H28, 0, 0, 0
    keybd_event &H28, 0, 2, 0
    keybd_event &H10, 0, 2, 0

  4. SendKeys via Windows Scripting Host and this works very fine.

    Dim wsh As WshShell
    Set wsh = CreateObject(“WScript.Shell”)
    wsh.SendKeys “+{DOWN}”

Maybe someone can use this information or show different ways.

Cheers
Stefan

To report this post you need to login first.

5 Comments

You must be Logged on to comment or reply to a post.

  1. mic jones

    Hi Stefan

    This is what I used – for option 1 – plain old send keys. I needed a sleep. In the code – not myself!

                Dim hwnd As Long

                hwnd = ses.ActiveWindow.Handle

                SetForegroundWindows hwnd

                SendKeys “+{DOWN}”, True  ‘ move down

                sleep 250 ‘ library call

    (0) 
  2. Sayuti Azmi

    Dear Stefan,

    For the purpose of scrolling down a GuiTableControl object, I found using Page Down key works as well.

    We can use the GuiMainWindow.SendVKey 82 from SAP Scripting API to do this.

    Thanks,

    Sayuti

    (0) 
  3. marcio _vr

    Dear Stefan,

    I’m having difficulty resolving an issue that seemed simple, but not being

    While trying to save a table in RTF” format opens the window “Save As”, but I’m not able to access it through the AutoIt functions, after searching here in the forum, I found a solution that uses the user32 .dll but this in VBScript. It would be possible you help me convert the code to AutoIt?


    The link this script here: Support on VB script for report


    posted by


    Thank you.

    Márcio.

    (0) 

Leave a Reply