[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『プラグインが入った別ブックにALTキーなどを送って操作したい』(tracky)
プラグインが入った別ブック"Data.xlsx"に、操作用のブックからALTキーなどを送ってプラグインの操作を、バックグランドで行いたいのでSendKeyやkeybd_evenを使わない方法を検討しています。
<問題点>
下記コードで別ブック(Data.xlsx)の操作をトライしているのですが、ALTキー,Fキー いずれも入力できません。
どこを修正すればよいかご教授頂けますでしょうか?
よろしくお願いします。
Res1 = PostMessage(hApp, WM_SYSKEYDOWN, VK_MENU, 0) 'ALT 反応なし
Res2 = PostMessage(hApp, WM_KEYDOWN, VK_MENU, 0) 'ALT 反応なし
Res3 = PostMessage(hApp, WM_KEYDOWN, VK_F, 0) 'F 反応なし
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
'32bit
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'
Private Declare Function SetForegroundWindow Lib "user32" (ByVal ms As Long) As Long
'
Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lparam As Long) As Long
'
Sub test()
Const WM_SYSKEYDOWN = &H104
Const WM_SYSKEYUP = &H105
Const VK_MENU = &H12
Const VK_F = &H46
Dim hApp, Res, Res1, Res2, Res3, Res4
hApp = FindWindow(vbNullString, "データシート.xlsx - Excel")
Debug.Print "hApp>", hApp
Res = SetForegroundWindow(hApp) '最前面
Debug.Print "res>", Res
Res1 = PostMessage(hApp, WM_SYSKEYDOWN, VK_MENU, 0)
Debug.Print "res1>", Res1
Res2 = PostMessage(hApp, WM_SYSKEYDOWN, VK_F, 0)
Debug.Print "res2>", Res2
Res3 = PostMessage(hApp, WM_SYSKEYUP, VK_F, 0)
Debug.Print "res3>", Res3
Res4 = PostMessage(hApp, WM_SYSKEYUP, VK_MENU, 0)
Debug.Print "res4>", Res4
End Sub
(ふむ〜) 2021/05/05(水) 16:41
もう一例、画面分割をするため
1ALT+Wキー押下
2Sキー押下
を試したのですがSキーを押下できません。3ケ以上のキーを押下するのはどうすればいいのでしょうか?
よろしくお願いします。
Dim hApp, Res, Res1, Res2, Res3, Res4, Res5, Res6
hApp = FindWindow(vbNullString, "データシート.xlsx - Excel")
Debug.Print "hApp>", hApp
Res = SetForegroundWindow(hApp) '最前面
Debug.Print "res>", Res
'1 Alt+Wキー押下
Res1 = PostMessage(hApp, WM_SYSKEYDOWN, VK_MENU, 0)
Debug.Print "res1>", Res1
Res2 = PostMessage(hApp, WM_SYSKEYDOWN, VK_W, 0)
Debug.Print "res2>", Res2
Res3 = PostMessage(hApp, WM_SYSKEYUP, VK_W, 0)
Debug.Print "res3>", Res3
Res4 = PostMessage(hApp, WM_SYSKEYUP, VK_MENU, 0)
Debug.Print "res4>", Res4
'2 Sキー押下
Res5 = PostMessage(hApp, WM_KEYDOWN, VK_S, 0)
Debug.Print "res5>", Res5
Res6 = PostMessage(hApp, WM_KEYUP, VK_S, 0)
Debug.Print "res6>", Res6
End Sub
(tracky) 2021/05/05(水) 22:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.