Страницы: 1
RSS
Эмуляция нажатия на клавишу Win
 
Добрый день, специалисты по экселю.
Помогите советом.

У меня есть макрос - эмулирующий нажатие клавиши "Win" - через API при нажатии на кнопку на листе.
Подскажите - как запустить этот процесс в "обраточку", чтобы при нажатии клавиши "Win" - запускался Макрос1 ?
Код
Const _
    VK_LWIN = &H5B&, _
    USE_VIRTUAL_CODES = 0&, _
    KEY_FLAGS_NONE = 0&, _
    KEYEVENT_KEYUP = &H2&, _
    EXTRAS_NONE = 0&
    
#If VBA7 And Win64 Then
    Private Declare PtrSafe Sub keybd_event Lib "User32.dll" ( _
        ByVal virtualKeyCode As Byte, _
        ByVal hardwareScanCode As Byte, _
        ByVal flags As Long, _
        ByVal extraInfo As Long)
#Else
    Private Declare Sub keybd_event Lib "User32.dll" ( _
        ByVal virtualKeyCode As Byte, _
        ByVal hardwareScanCode As Byte, _
        ByVal flags As Long, _
        ByVal extraInfo As Long)
#End If
 
Sub SendExcelToRight()
    keybd_event VK_LWIN, USE_VIRTUAL_CODES, KEY_FLAGS_NONE, EXTRAS_NONE
     keybd_event VK_LWIN, USE_VIRTUAL_CODES, KEYEVENT_KEYUP, EXTRAS_NONE
    
End Sub

Sub Макрос1()
    With Range("A1").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

 
Мне кажется, если это возможно решить, то только установкой хука на события клавиатуры.
Заинтересовавшись вашим вопросом нашел тему на vb.net. Как-то глючит оно, вплоть до полного зависания компьютера. Возможно я не до конца разобрался с константами для имен клавиш.
Но вообще, перефразируя одного из модераторов форума:
"Кнопка WIN не для запуска макросов"
 
VSerg, ясно.
Спасибо.
Страницы: 1
Читают тему
Наверх