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 grasso

    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. Márcio Vieira

    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